【ABAP】MIGO 全场景过账拦截校验(一劳永逸)-隐式增强

一、前言

日常 MM 物料业务开发中,经常需要在 MIGO 收货 / 发货 / 转储过账前增加自定义校验逻辑:比如库区物料必填字段校验、业务日期控制、移动类型特殊规则校验等。

传统 BADI MB_MIGO_BADI 仅控制 MIGO 前台界面,BAPI_GOODSMVT_CREATE、MB1A/MB1B/MB1C 后台过账不会触发,存在校验遗漏风险。

本文介绍全场景生效的隐式增强点:MB_CREATE_GOODS_ISSUE_ITEM_01,增强名称ZMME_002,覆盖 MIGO 前台、BAPI以及所有后台事务码批量过账全渠道。

二、增强点基础信息

1、增强对象:函数组SAPLMBWL

2、函数:MB_CREATE_GOODS_ISSUE_ITEM

3、增强点 ID:mb_create_goods_issue_item_01

4、Spot 名称:es_saplmbwl

5、增强类型:静态隐式增强(ENHANCEMENT-POINT)

6、增强的有点:

1)每一条 MSEG 明细行触发,行级校验精准;

2)MIGO、MB1A、BAPI、批导入全部统一进入,无漏单;

3)直接读写全局结构体 MSEG、MKPF,无需传参;

4)抛出 E 类消息直接阻断过账,报错弹窗和标准 MIGO 提示一致。

三、源码位置说明

打开函数 MB_CREATE_GOODS_ISSUE_ITEM,点击菜单栏→编辑→增强操作→显示隐式增强,可找到增强插槽代码:

复制代码
ENHANCEMENT-POINT mb_create_goods_issue_item_01 SPOTS es_saplmbwl STATIC.
*$*$-Start: MB_CREATE_GOODS_ISSUE_ITEM_01-------------------------------------------------------$*$*
ENHANCEMENT 3  OI0_SAPLMBWL.    "行业标准增强
ENDENHANCEMENT.
ENHANCEMENT 1  ZMME_002.    "自定义增强(本次案例)

* 自定义校验逻辑写在此处

ENDENHANCEMENT.
*$*$-End:   MB_CREATE_GOODS_ISSUE_ITEM_01-------------------------------------------------------$*$*

ENHANCEMENT 1 ZMME_002 即为我们自建隐式增强,包裹所有自定义校验代码

四、业务场景案例

1、库区 / 物料 / 批次自定义字段必填校验;

2、账期、业务日期、年度月度过账管控;

3、特定移动类型强规则限制(转储、冻结、委外、寄售库存);

4、跨 MIGO/BAPI 统一拦截的合规校验;

5、委外、第三方货主、渠道等自定义业务配置校验。