Head

SAP增强总结-第二代增强 CUSTOMER EXIT

涉及到的:TCODE:SMOD、CMOD

涉及到的表:TADIR,MODSAP

介绍
由于一代增强具有很多的局限性,所以出现了二代增强(SMOD、CMOD)。其中SMOD是查看出口对象的相关信息,CMOD是出口对象的管理。二代增强然后根据增强点来区分可以分为屏幕增强(S)、菜单增强(C)、功能增强(E)、表增强(T)。

学习的步骤
(1).通过T-CODE先查找到对应的程序名。

 

 

 

(2). 然后SE11查询数据表TADIR(限定PGMID=“R3TR”、 OBJECT= “PROG”、OBJ_NAME=程序名)找对应开发类,如果找不到对应开发类,通过SE38查看程序,在菜单 “转到-属性”中找开发类。然后再用SE11查询数据表TADIR(限定PGMID=“R3TR”、 OBJECT= “SMOD”、DEVCLASS=开发类)就可找到此程序可用的增强点。如下图

 

 

 

其中OBJ_NAME是这个类中可用的增强点。如下图

 

 

 

然后将这些增强点分别在表MODSAP中查询可以找到需要的增强点。

 

 

 

 

 

 

接下来就是创建PROJECT,T-CODE:CMOD。

当然也可以直接通过主程序的包去查找增强T-CODE:SMOD

 

 

 

 

 

根据增强的描述来找到我们需要的增强。

 

 

这里说下二代增强直接的层级关系。

如图所示,一个PROJECK可以对应多个出口对象,一个出口对象可以对应多个函数。而函数就是我们实行具体功能的东东。

 

 

 

 

 

 

CMOD使用方法。

首先是创建一个PROJECK

 

 

 

然后分配增强

 

 

 

 

 

然后分配组件

 

 

 

分配完后可以进相应的增强函数去实现我们的功能。

 

 

 

双击INCLUDE后创建INCLUDE程序,激活后即可。

 

然后扩展表结构(CI_CSKS)、维护增强屏幕、菜单、功能

点击激活后退出。

 

 

 

 

提供一个不太常用但是用起来非常有用的函数MODX_FUNCTION_ACTIVE_CHECK

 

 

 

执行后显示如下,其中的ACTIVE为X表示这个程序中有增强被激活

 

 

 

ACTIVE_FUNCNUMBERS点进去后可以看到激活的程序,其中函数的命名规则是:

EXIT_程序名_编号。

 

 

 

这个函数虽然在写增强的时候帮助不大,但是在找增强相关的bug的时候非常好用,比如有个标准的事务码比如上面的KS01运行的时候突然出现不可描述的BUG,可以在这个函数里看看KS01里面有哪些增强会被调用,然后可以去增强里看看是不是增强的问题。

 

 

 

学习心得:二代增强中的函数增强现在还是使用的蛮多的而屏幕增强则相对用的少一点。相比于一代增强,二代的使用范围更广了些。但是还是有局限性。然后一代和二代增强都有个不友好的地方就是要先找到在什么地方写增强,即找到增强点。这对开发人员来说是个非常痛苦的事情。因为你要结合业务需求去找一个增强点无异于大海捞针,特别是对业务不太熟悉的新开发人员来说更难受。

 

容易的地方: 使用起来并不复杂,而且写代码也容易。

 

难点:找增强点困难。
————————————————
版权声明:本文为CSDN博主「Joker-Full-stack」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/huanglin6/article/details/81353708

posted @ 2022-08-25 16:38  riittou  阅读(417)  评论(0编辑  收藏  举报
Footer