以生产订单收货为例:
1、BADI的查找方法:
SE38在程序中搜索关键字CL_EXITHANDLER
或SE24(CL_EXITHANDLER)在方法GET_INSTANCE中打断点,然后运行相应事物码扑捉BADI
然后运行MB31事务码
假若找到可以使用的BADI为MB_DOCUMENT_BADI。
2、BADI应用
可以使用SE18查看该BADI,可以看到改BADI对应的接口,接口中定义的方法及参数传递。
然后SE19 Implementation该BADI
点击“创建”
点击“保存”
然后就可以在此添加代码了。
注:接口编码BADI加前缀IF_CL_,客户类编码ZCL_IM_
3、BADI原理
调用BADI时,MB31对应程序中有如下代码
打断点分析函数GET_IINSTANCE返回值mb_document_badi
返回值为 {O:79*\CLASS=CL_EX_MB_DOCUMENT_BADI},在执行函数mb_document_before_update过程,会执行
跟踪会发现,系统一直调用类CL_EX_MB_DOCUMENT_BADI做中间处理,在最后一步才调用ZCL_IM_MBPOST执行自定义程序。