惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
爱范儿
爱范儿
罗磊的独立博客
美团技术团队
Jina AI
Jina AI
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
酷 壳 – CoolShell
酷 壳 – CoolShell
有赞技术团队
有赞技术团队
V
V2EX
阮一峰的网络日志
阮一峰的网络日志
小众软件
小众软件
IT之家
IT之家
雷峰网
雷峰网
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 司徒正美
大猫的无限游戏
大猫的无限游戏
博客园 - 聂微东
月光博客
月光博客
人人都是产品经理
人人都是产品经理
博客园 - 三生石上(FineUI控件)

博客园 - 知秋一叶

透视ERP增强 SAP ABAP 点滴记录 计算BOM函数 PP几个表关系 SAP/SD - 做SD你要知道的透明表 内表转WORD一法, 可以调用WORD做报表了 SD--va01的屏幕增强 关于SmartForm和ScriptForm的输出格式设置说明 ABAP常用系统变量 ABAP日期函数 sap库存相关表 IDOC实例, Outbound IDOC Aix命令:列出使用内存和Cpu前几位的进程 Provider 错误 '80004005' 未指定的错误 的最终解决方法 SAP取消的凭证信息表 sap转换成基本订单单位 - 知秋一叶 - 博客园 sqlserver实现网络备份 js常用资料 经典正则表达式 (收藏整理)
BADI查找方法
知秋一叶 · 2010-10-08 · via 博客园 - 知秋一叶

方法一:

             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接口的定义。