SAP MIGO 传输过账时接收物料字段控制

        通过移动类型如309可以在MIGO中将一个物料库存转为另一个物料的库存,这种相当于盘盈亏的行为在实际操作中是需要严格管控的。可以通过权限控制设置哪些移动类型是被允许操作的,但是如411、413这些用来变更特殊库存类型的移动类型也能用来实现此操作,仓库需要用这些移动类型进行如寄售库存领用、绑定或解绑销售订单等操作,无法通过权限管控的方式限制使用。

        移动类型311和411的MIGO屏幕如下图所示,可以看到411移动类型下接受物料是可以输入的,而移动类型311不可以,故考虑通过屏幕字段控制来实现411移动类型无法变更物料。

         开始想到的是,在SPRO->物料管理->库存管理和实际库存->发货/转储记帐->定义屏幕格式中进行设置,但测试后发现屏幕没有变化。

        后来尝试配置SPRO->物料管理->库存管理和实际库存->货物移动设置 (MIGO)->每个移动类型的字段选择,将411移动类型对应的UMMAT字段删掉后,达到了想要的效果。

        考虑想知道哪些移动类型的接收物料是可以更改的,在此路径下查看不方便,通过透明表MIGO_CUST_FIELDS可以看到相关的配置情况。进一步发现:输入项为必填(+)时,接收物料不会自动从发出物料栏位带入,需要手工输入。

 

 

 

 

 

 

<think>好的,我现在要处理用户关于SAP MIGO增强检查的询问。首先,我需要确认自己对MIGO的理解是否正确。MIGOSAP中用于物料移动的事务代码,比如收货、发货、转移过账等。用户提到的“增强检查”可能指的是在MIGO事务中实施的自定义增强或验证,以确保数据输入的准确性和符合业务流程需求。 接下来,我应该考虑SAP中的增强方式。常见的包括User Exits、BAdIs、Enhancement Spots,以及较新的ABAP增强框架。需要明确在MIGO中具体有哪些可用的增强点。比如,可能有一些BAdIs(Business Add-Ins)专门针对移动类型或特定字段的检查。 然后,用户可能需要了解如何实施这些增强检查。例如,使用MB_MIGO_BADI这个BAdI,它允许在保存前执行自定义验证。开发者可以在这个BAdI的方法中编写逻辑,检查特定条件,如工厂、库存地点、数量等是否符合要求,如果不满足则阻止过账并提示错误。 另外,数据输入检查也是关键部分,比如在交货单或采购订单字段输入进行校验。可能需要通过屏幕增强或字段校验来实现。这里需要注意的是,SAP的标准功能可能已经包含了一些检查,但企业特定的需求可能需要自定义开发。 还需要考虑权限控制和日志记录。增强检查可能需要验证用户是否有权执行某些操作,或者记录修改历史以便审计。这涉及到权限对象和日志表的创建与维护。 用户可能还想知道实际应用的例子,例如检查移动类型和工厂的组合是否有效,或者库存地点是否允许特定类型的货物移动。这,具体的代码示例会很有帮助,比如在BAdI的方法中获取MIGO的抬头和行项目数据,然后应用条件判断,并通过MESSAGE语句返回错误信息。 最后,要注意测试和部署的步骤,确保增强不会影响现有功能,并且符合SAP的最佳实践。可能还需要讨论如何调试和排查增强中的问题,比如使用断点或日志工具。 总结下来,我需要组织这些信息,分步骤解释MIGO增强检查的概念、常用方法、实施步骤和示例,确保用户能够清晰地理解如何应用这些增强来满足业务需求。</think>以下是对SAP MIGO增强检查的详细介绍,按逻辑步骤分层说明: --- ### **1. 概念理解** **SAP MIGO**(物料凭证过账)是执行货物移动(如采购收货、生产入库、库存转移等)的核心事务代码。 **增强检查**指通过自定义开发对MIGO操作添加校验规则,确保数据符合企业特定需求,例如: - 限制某些工厂或库存地点的操作权限 - 校验移动类型(Movement Type)与业务场景匹配性 - 强制填写特定字段(如项目文本、批次号) --- ### **2. 常用增强技术** 在MIGO中实现增强检查的主要方法: #### **(1) BAdI增强** - **BAdI名称**: `MB_MIGO_BADI` - **功能**: 在保存凭证前触发自定义逻辑,支持对抬头(Header)和行项目(Item)数据的校验。 - **关键方法**: - `CHECK_BEFORE_SAVE`: 保存前执行校验,可阻止非法数据过账。 - `MODIFY_HEADER` 或 `MODIFY_ITEM`: 修改凭证数据。 #### **(2) 隐式增强(Enhancement Spot)** - 在标准程序`RM07MMBS`或函数模块`MIGO_DIALOG_UPDATE`中插入隐式增强点,添加自定义校验逻辑。 #### **(3) 屏幕增强** - 通过屏幕增强(Screen Exit)在MIGO界面添加自定义字段,并校验输入值。 --- ### **3. 实施步骤示例(基于BAdI)** 以校验“移动类型+工厂”组合合法性为例: #### **步骤1: 实现BAdI** ```abap DATA: lv_message TYPE string. METHOD if_ex_mb_migo_badi~check_before_save. LOOP AT ct_item INTO DATA(ls_item). " 示例:检查移动类型为101,工厂必须为1000 IF ls_item-mblnr IS NOT INITIAL AND ls_item-bwart = '101' AND ls_item-werks <> '1000'. lv_message = '工厂必须为1000'. " 触发错误消息并阻止保存 MESSAGE e001(00) WITH lv_message INTO sy-msgli. mo_message->add_message( ). ENDIF. ENDLOOP. ENDMETHOD. ``` #### **步骤2: 激活增强** 通过事务代码`SE18`或`SE19`激活BAdI实现。 #### **步骤3: 测试验证** - 执行MIGO,输入移动类型`101`和工厂`2000`,系统应弹出错误消息并阻止过账。 --- ### **4. 注意事项** - **性能优化**: 增强逻辑需高效,避免影响MIGO操作速度。 - **兼容性检查**: 确保增强不与标准功能或其他增强冲突。 - **权限控制**: 使用`AUTHORITY-CHECK`验证用户权限,例如: ```abap AUTHORITY-CHECK OBJECT 'M_MSEG_WMB' ID 'WERKS' FIELD ls_item-werks. IF sy-subrc <> 0. " 提示无权限 ENDIF. ``` --- ### **5. 典型应用场景** | 场景 | 校验逻辑 | 技术方案 | |---------------------|----------------------------------|-------------------| | 批次号必填 | 检查行项目批次字段是否为空 | BAdI `CHECK_BEFORE_SAVE` | | 库存地点有效性 | 校验库存地点是否允许特定移动类型 | 隐式增强 + 表校验 | | 项目文本格式 | 强制输入符合规则的文本(如包含订单号)| 屏幕增强 + 正则表达式 | --- ### **6. 调试与排查** - 使用`/H`启动调试模式,在增强代码中设置断点。 - 通过事务代码`ST22`查看ABAP Dump,定位错误原因。 --- 通过上述步骤,可针对企业需求灵活定制MIGO增强检查,确保数据合规性和流程稳定性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值