查找SAP标准程序用户出口以及BADI的方法

  • 格式:doc
  • 大小:401.50 KB
  • 文档页数:12

查找SAP标准事务代码中使用的BADI:
在SE24中,查看类对象CL_EXITHANDLER ,在其方法(Methods)GET_INSTANCE 的第14 行打断点,之后运行事务代码;
当有BADI将会被执行的时候,这时候会进入类CL_EXITHANDLER 的GET_INSTANCE 方法,按F6执行这个方法之后,参数EXIT_NAME 中的值便是BADI定义(SE18中看到的东西),参数CLASS_NAME 则是类对象名称(SE24里面看到的东西),所有的方法实现都是存在于类对象中;
通过查找类方法中的参数(Parameter)和对对象的属性(Attribute),如果能满足自己需要实现的功能,则可以通过实现这个BADI来做增强。

实现BADI的方法(ECC6.0版本下):
进入SE19,选择Create Implementation中的Classic BADi,输入刚才查找到的EXIT_NAME;
点击Create Impl,输入实现名;
点绿勾;
点击保存,激活(如果是ECC6.0版本,则还需要指定对应的Enhancement Spot,才可以完全创建成功。

双击进入方法CHANGE_SEGMENT_PSEGMENT,即可在里面实现功能;
下面再运行F-02,执行程序,即可进入此段代码。

查找SAP标准事务代码中使用的USER_EXIT:
在SE37中,查看函数MODX_FUNCTION_ACTIVE_CHECK ,在最后一行打断点;
当有USER_EXIT将会被执行的时候,这时候函数MODX_FUNCTION_ACTIVE_CHECK 中的参数L_FUNCNAME 会显示出口的名称。

如果要使用这个出口,必须先激活(已经激活的则不需要);
先去表MODSAP 中查找这个程序名的出口名;
进入CMOD,创建出口对象(以下图例使用的是一个已经存在的增强对象);
选择Enhacement assignments;
在这里输入增强对象名,也就是刚才在MODSAP表里面查到的F180A001,点击组件;
选择修改,激活这些增强,双击进入EXIT_SAPLF048_001 程序;
创建INCLUDE ZXF48U01;
运行F-02,便会进入此出口程序。

1.搜索BADI
使用BADI,首先如果一个需求给我们,我们必须要了解或者调研究竟这个业务场景是否使用了BADI(或者是Exit,如果是Exit则可以去实现exit)。

作为一个记录,需求仅是“尝试”对Tcode:MIGO进行BADI增强。

对于MIGO,看它使用了哪些BADI。

找到MIGO的program: System->status
它的program为:SAPLMIGO
SE38中global搜索:以CL_EXITHANDLER为关键字。

这里,我们来实现这个BADI: MB_MIGO_BADI(注:另一个BADI的实现并应用于具体业务,将在后续MM业务记录的文档中给出)。