SAP第二代:基于函数出口增强(Function)

SMOD(激活增强,只需一次激活)和CMOD(实现增强)维护;

在SAP发布的版本中,使用CALL CUSTOMER-FUNCTION <3位数字>调用函数模块的,所以你可以通过在程序中查找cusomer-function来查找增强,出口函数名称由三部分组成:EXIT_<程序名>_<3位数字>(注:这里的<程序名>即指调用此出口函数的程序名),这样你就可以找到对应的增强函数了。

针对数据表的增强出口是 “CI_ ”打头的结构,这些结构将.INCLUDE 结构的形式包含到时相应的数据表中,用户可以通过向这些结构中添加字段从而达到对数据表字段的增加。

第二代增强中主要有4类:

1)E:Function exits:函数增强(最常用,在SAP上线很多年后都会使用,如:销售单VA02中,对PO长度限制在10-15位之间,且不能为中文与其他特殊字符,还有如对PO采购日期不能晚于交货日期的检验等,这些都会用来函数增强)。
2)C:GUI codes:GUI增强。
3)S:Screens:屏幕增强增强屏幕的调用是使用CALL CUSTOMER-SUBSCREEN(不常用,一般在上线之初才会做,上线后不常用)。
4)T:Tabes:表结构增强。

查找Enhancement的方法:

1、  在程序中搜索CUSTOMER-FUNCTION找到后面的3位数字编号,出口函数名的规则为EXIT_<程序名>_<3位数字>,然后通过找到的出口函数名到MODSAP表里查找所对应的出口对象(即增强点)
2、  通过调试系统相关函数:MODX_FUNCTION_ACTIVE_CHECK
3、  代码找增强

 相关增强检查函数:

MODX_ FUNCTION_ACTIVE_CHECK:   (E类)      检查功能出口类用户出口是否被激活。
MODX_ MENUENTRY ACTIVE CHECK: (C类)      检查菜单关键字类增强激活状况
MODX SUBSCREEN ACTIVE CHECK:   (S类 )     检查屏幕累增强激活状况

SAP的各模块的在何一一个事务码(Tcode)对应的标准程序都留下了大量的用户出口,正是SAP灵活的配置功能和强大的用户出口才使其产品轻松应对各种复杂需求成为可能,系统还为能快速找到和激活这些增强进行了有效组织,各类增强被记录在table中并且提供了相关检查函数,从而更方便企业用户。

以VA01对应的主程序SAPMV45A为例,在源码中可以查找包含CALL CUSTOMER-FUNCTION的字符串,可以找到这样的代码:

SAP第二代:基于函数出口增强(Function)_第1张图片

SAP第二代:基于函数出口增强(Function)_第2张图片

根据出口所对应的函数名规则,这个函数名为EXIT_SAPMV45A_003。
MODSAP表:增强点(出口对象)与函数关系对应表,再根据出口函数,到MODSAP表中查找对应的增强点(出口对象):

SAP第二代:基于函数出口增强(Function)_第3张图片

注:一个出口函数只对应一个出口对象,而一个出口对象可以对应到多个出口函数。
Enhancement比较重要的表MODSAP,这个表里重要的字段有增强名(Name,即出口对象名),组件类型(TYP: E C S T),组件功能模块名(Member):里面记录了所有enhancement的增强。TFDIR所有的函数表,重要字段有FUNCName(函数名),MAND(功能模块激活状态如果是C代表此函数模块激活)

MODSAP: sap enhancement table
TFDIR: function module table,包括出口函数在内的所有函数表,字段:MAND(值为C表示此出口函数被激活).(E类)
CUATEXTS:修改GUI界面,界面:菜单文本被客户(C类)
TSDIR:动态程序区CALL CUSTOMER SUBSCREEN(S类)

SAP第二代:基于函数出口增强(Function)_第4张图片

你可能感兴趣的:(SAP&Ehancement,cmod,smod,cmod,smod)