BADI查找方法

方法一:

             1. Go to the TCode SE24 and enter CL_EXITHANDLER as object type.

2. In 'Display' mode, go to 'Methods' tab.

3. Double click the method 'Get Instance' to display it source code.

4. Set a breakpoint on 'CALL METHOD cl_exithandler=>get_class_name_by_interface'.

5. Then run your transaction.

6. The screen will stop at this method.

7. Check the value of parameter 'EXIT_NAME'. It will show you the BADI for that transaction.
if found helpfull do reward.

方法二:BADI作为SAP的第三代用户出口,他的应用也越来越广泛,但如何找到合适的badi是许多abap程序员的困惑。我这里就介绍一下我个人的应用的经验,供大家参考。

1、badi对象的信息存储在SXS_INTER, SXC_EXIT, SXC_CLASS 和SXC_ATTR 这四个表中(参见SECE包);

2、sap程序都会调用cl_exithandler=>get_instance来判断对象是否存在,并返回实例;其实get_instance就是对上述几个表和他们的视图(V_EXT_IMP 和 V_EXT_ACT)进行查询和搜索。 ------个人感觉SAP操作BADI_SPOT的时候会有BADI出现

3、基于这个机理,我查用ST05来监控一个TCODE来跟踪,然后选择查找有关上述几个表和视图的操作,就可获得相关BADI。

方法三:在TCODE的原代码里面查找cl_exithandler=>get_instance中的EXPORTING exit_name 后的值就是。

 

对于根据事务代码查找对应的BADI,网上介绍的方法很多,但总结下来无非就两种方法,在此把它记录下来,方便以后自己查阅了。
(1)通过SE24,输入CL_EXITHANDLER,然后在方法GET_INSTANCE中设置断点,然后运行事务代码判断 exit_name的值,操作过程如下:
输入se24,然后输入cl_exithandler


进去双击get_instance设置断点查看exit_name的值:



(2)通过st05跟踪,badi对应的数据表为
SXS_INTER, SXC_EXIT, SXC_CLASS 和 SXC_ATTR,而这些表都是通过视图V_EXT_IMP 和 V_EXT_ACT来查询的。

     1、打开运行事务码: ST05 选择“table buffer trace”而不是常用的"SQL trace"

     2、activate trace(开始跟踪)

     3、运行事务码:me21n

     4、创建一个采购订单,保存

     5、deactivate trace(结束跟踪)

     6、点击display trace,在出来的选择条件中: objects中输入:V_EXT_IMP和V_EXT_ACT;在 operations中输入“OPEN”

     7、查询

通过查询的结果可以看出,视图V_EXT_IMP的BADI的接口类名字都是以IF_EX_开头的,其中IF_EX_之后的就是对应BADI接口的定义。


posted @ 2010-10-08 15:30  知秋一叶  阅读(3819)  评论(0编辑  收藏  举报
Tags



<%--先添加两个div用作标签的容器和临时容器--%>