增强(enhancement) (2)

2、SAP BADI程序都会调用cl_exithandler=>get_instance来判断对象是否存在,并返回实例,这个方法实际就是对上面4个表和视图V_EXT_IMP和V_EXT_ACT进行查询和搜索的。我们可以在这个方法处设置断点,获取实例。      

3、它的调用方式是call method(instance), 可以通过exit_handler关键词来查找。    

4、ST05选择“table buffer trace”而不是常用的"SQL trace",然后查找上面的几个表和视图找到对应的BADI.    

5、se18 查找接口,se19 实现接口就可以实现用户增强    

四、第四代其实是第三代的加强switch Framework当sap进入newweaver 7.0以后推出的新增强体系,将BADI进行了改进,叫新BADI了。还新增 Enhancement Spot 和 Enhancement Section 以及隐式增强点的概念,基本可以在面向对象的程序里实现处处皆可增强的最高境界。      

1 增强 用户出口    

Customer Exits, 顾名思义,就是用户自定义出口。    

有3类这样的出口:Function Module Exits; Menu Exits; Screen Exits    

有两个常用的T-code:     

CMOD: 用于增强项目的管理    

SMOD: 增强项目的具体实现    

Function Module Exits: 就是在标准程序中预置有形如call customer-function \'NNN\'的call function语句,来动态调用相关的出口程序。\'NNN\'是3位数字,而实际的出口函数命名方式为:EXIT_<program name>_<exit number>。寻找这样的可以用SMOD的查询功能,同时也有一个程序可以用T-CODE来帮助查找。这个出口形式比较简单,所以就不举例子了。    

Menu Exits: 个人觉得是用得比较少的一种出口,项目上很少使用,SAP预留的出口也很少。抓住几点关键就可以了,Menu Exits会有一个预留的function code 比如+PGE什么的    

增强:SMOD    

方法一、利用TCODE寻找增强(第二代的增强)    

执行一个程序(源代码后附),在选择屏幕处输入你所需要增强的程序TCODE,执行後,就会出现一个列表,那里就有关于如何增强这个的绝大部分SMOD增强。    

点击进去,自己手动寻找需要的增强。    

这是第二代增强    

方法二、利用系统函数寻找    

MODX_FUNCTION_ACTIVE_CHECK    

在这个FUNCTION的代码最后添加一个断点。执行需要增强的TCODE,如果有增强,就会自动跳入DEBUG界面。在DEBUG界面,查看f_tab字段,这里面所显示的Smod就是关于这个TCODE所有的增强项目的列表。这些增强都是属于EXIT_XXXXXX_XXX这种形式。    

至于如何查看这个增强是属于哪个SMOD,可以自己查阅 MODSAP这个表(SAP Enhancements).    

这是第二代增强。    

还有一些FUNCTION供参考:    

[1].DYNP_VALUES_READ    

[2]. MODX_ALL_ACTIVE_MENUENTRIES(菜单增强)    

[3].MODX_FUNCTION_ACTIVE_CHECK(出口函数增强)    

[4].MODX_MENUENTRY_ACTIVE_CHECK(菜单增强)    

[5].MODX_SUBSCREEN_ACTIVE_CHECK(屏幕增强)    

这些的使用方法和上述的一样,可以针对各种情况寻找增强。    

方法三、从程序代码中找    

在需要增强的事务里面,打开SYSTEM——》status,双击进入PROGRAM,查看所有的subroutines, 重点观察所有形似 userexit_******* 这种,由描述来确定合适的需要增强的FORM。这里是第一代的增强。    

方法四、针对BADI的增强    

1、badi对象的信息存储在SXS_INTER, SXC_EXIT, SXC_CLASS 和SXC_ATTR 这四个表中。    

2、sap程序都会调用cl_exithandler=>get_instance来判断对象是否存在,并返回实例;其实get_instance就是对上述几个表和他们的视图(V_EXT_IMP 和 V_EXT_ACT)进行查询和搜索。    

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

4、se18 查找接口,se19 实现接口就可以实现用户增强。    

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgygzd.html