BADIs 查找

  • BADIs对象的信息存储在SXS_INTER, SXC_EXIT, SXC_CLASS 和SXC_ATTR 这四个表中。
  • SAP程序都会调用cl_exithandler=>get_instance来判断对象是否存在,并返回实例;其实get_instance就是对上述几个表和他们的视图(V_EXT_IMP 和 V_EXT_ACT)进行查询和搜索。
  • 基于这个机理,我查用ST05来监控一个TCODE来跟踪,然后选择查找有关上述几个表和视图的操作,就可获得相关BADI。
  • SE18 查找接口,SE19 实现接口就可以实现用户增强。

方法一:

  • 通过SE24,输入CL_EXITHANDLER
  • 然后双击方法GET_INSTANCE中设置断点
  • 然后运行事务代码判断 exit_name的值

方法二:

  • 通过ST05跟踪,BADI对应的数据表为 SXS_INTER, SXC_EXIT, SXC_CLASS 和 SXC_ATTR,而这些表都是通过视图V_EXT_IMP 和 V_EXT_ACT来查询的。
  • 打开运行事务码: ST05 选择“table buffer trace”而不是常用的"SQL trace"
  • activate trace(开始跟踪)
  • 运行事务码,例如:me21n
  • 创建一个采购订单,保存
  • deactivate trace(结束跟踪)
  • 点击display trace,在出来的选择条件中: objects中输入:V_EXT_IMP和V_EXT_ACT;在 operations中输入“OPEN”
  • 查询
  • 通过查询的结果可以看出,视图V_EXT_IMP的BADI的接口类名字都是以IF_EX_开头的,其中IF_EX_之后的就是对应BADI接口的定义。
原文地址:https://www.cnblogs.com/SolisOculus/p/2965461.html