分类:
2009-03-27 13:12:49
有多种方法可用于查找BadIs,我最喜欢的一种是使用性能跟踪(通常称为SQL跟踪)——ST05。
该分析技术基于一个事实:所有的ABdIs都在SAP数据库表中被注册。因此对于每个BAdI调用,都会访问一下这些数据库表。BAdI数据库表为SXS_INTER、SXC_EXIT、SXC_CLASS、SXC_ATTR。这些表总是通过视图V_EXT_IMP和V_EXT_ACT来访问。因此这两个ABAP视图(T:SE11)将是跟踪的基础。
本文没有描述如何实现BAdIs。
通过性能跟踪查找BAdIs的过程将在下面用例子加以解释。
我想要知道在事务“维护商业伙伴”(BP)中调用那个BAdIs。
· 检查是否没有其他用户(T:SM04)或批处理作业(T:SM50)与你使用同一用户。
启动性能跟踪
· 启动事务ST05(性能分析)
· 设置flag字段“缓冲区跟踪”
注意:需要跟踪缓冲调用,因为BAdI数据库表被缓冲(特别是视图V_EXT_IMP和V_EXT_ACT)
· 按下“开始跟踪”
· 在新的GUI会话中启动事务BP
· 按下按钮“组织”
· 填入你的测试数据
Name |
NL4B |
Street |
Olympia |
House number |
1a/1b |
Postal code |
1213 NS |
City |
Hilversum |
Country |
NL |
· 按下按钮保存
· 回到性能跟踪会话
· 按下“结束跟踪”
· 按下按钮“跟踪列表”
显示弹出屏幕“为显示跟踪设置限制条件”
现在我们过滤跟踪到对象:V_EXT_IMP和V_EXT_ACT。
· 在字段“表”之后按下“多选”按钮
· 填入V_EXT_IMP和V_EXT_ACT
· 按下按钮“Copy(F8)”
· 填入操作:OPEN
· 按下按钮“回车”
察看结果
视图V_EXT_IMP中所有的接口类名用IF_EX_开头。这是BAdI类接口的标准SAP前缀。BAdI的名字在IF_EX_之后。
因此IF_EX_ADDR_LANGU_TO_VERS的BAdI名为ADDR_LANGU_TO_VERS。
在事务SE18中,你可以看到BAdI定义。
如果你找不到BAdI定义的名称,在表SXS_INTER中查找
输出跟踪列表
如果想保存分析,你可以把它导出到Excel文件中
实际上文件是用Tab区分的数据格式,只是给出的文件后缀是.xls,并自动用Excel打开。
· Start menu: List > Save > Local File
· Select Spreadsheet
· Push Enter
· Fill your preferred file location and file name
· Push button "Generate"
· Open the file (in Excel)
· Delete the columns and rows you don’t need and the result looks like:
过滤条件既包含V_EXT_IMP也包含V_EXT_ACT,是因为并非所有的BAdIs都以相同方式被实现。
例如:
V_EXT_IMP catches BAdI BPTIME_BP001.
V_EXT_ACT catches BAdI ADDRESS_SEARCH