二代增强简介
SAP提供的是CUSTOMER-FUNCTION,它是通过SMOD和CMOD完成实现
源代码增强以函数模块形式发布,在 SAP 的发行版本中,使用 CALL CUSTOMER-FUNCTION <3位数字> 调用这些函数模块,出口函数名称由三部分组成:EXIT_<程序名>_<3位数字>(注:这里的<程序名>即指调用此出口函数的程序名),它们在发布时只有一句代码 INCLUDE xxxxxxx。
用户增强时,无需申请对象键,直接双击这个包含,然后回车,就可以创建相关的包含文件,编写相应的代码了。
这些函数模块中只能使用接口中传递的参数,不能使用调用程序的全局变量。
针对数据表的增强出口是“CI_”打头的结构,这些结构将.INCLUDE结构的形式包含到时相应的数据表中,用户可以通过向这些结构中添加字段从而达到对数据表字段的增加
增强分类
E. Function exits:函数增强
C.GUI codes:GUI增强
S. Screens:屏幕增强 增强屏幕的调用是使用 CALL CUSTOMER-SUBSCREEN
T. Tabes:表结构增强
如何去找
方法一: 在程序中搜索 CUSTOMER-FUNCTION;如果是屏幕的增强,则搜索CALL CUSTOMER-SUBSCREEN
搜索到后,对应的完整function名称是EXIT_<程序名>_<3位数字>;双击可进入SE37查看源代码。其中增强的内容写在INCLDE包含的文件内;
方法二:通过数据库表+SE37打断点的方式。(推荐)
通过SE37中的:MODX_FUNCTION_ACTIVE_CHECK 函数来找,
不同类型增强使用的Function:
[1].MODX_FUNCTION_ACTIVE_CHECK(出口函数增强)
[2].MODX_MENUENTRY_ACTIVE_CHECK、MODX_ALL_ACTIVE_MENUENTRIES(菜单增强)
[3].MODX_SUBSCREEN_ACTIVE_CHECK(屏幕增强)
在函数的最后一行打个断点,再运行TCODE的,如果有增强则会跳入DEBUG界面,在DEBUG界面中,查看L_FUNCNAME字段对应的值,此值就是就是要找的出口,
再去SE11中通过MODSAP来查看出口对就的是那个SMOD,接下来就可以在CMOD中创建增强组了,把找到的增强填入,最后根据实际的业务进行处理。
方法三:通过SE93+TADIR数据表
首先根据事物码找到对应程序名(SE93),然后SE11查询数据表TADIR(限定PGMID=“R3TR”、 OBJECT= “PROG”、OBJ_NAME=程序名)找对应开发类,如果找不到对应开发类,通过SE38查看程序,在菜单 “转到-属性”中找开发类。然后再用SE11查询数据表TADIR(限定PGMID=“R3TR”、 OBJECT= “SMOD”、DEVCLASS=开发类)就可找到此程序可用的增强点(并非万能)。然后根据增强点从表MODSAP中就可以看到此增强具备哪些功能【屏幕增强(S)、菜单增强(C)、功能增强(E)、表增强(T)】
举例:
成本中心屏幕增强实例
先SE93找到KS01(成本中心创建)对应程序SAPLKMA1,然后SE11查询表TADIR找不到对应开发类,通过SE38查看SAPLKMA1开发类为KBAS,然后再用SE11查询表TADIR可以查到可用增强点有COCCA001、COCCA002、COOMEP01、COOMKA01、COOMKS01、COOMKS02、COOMKS03、COOMLA01,然后将这些增强点在MODSAP中查询,就可以发现只有COOMKS01可以对成本中心主数据屏幕做增强,并且此增强点包括了屏幕增强、菜单增强、表增强、功能增强。
ME21N举例:SE93 找到程序名称RM_MEPO_GUI,搜索SE11表TADIR,无;则SE38进入看包名称,搜索TADIR,查询到35个条目,其中OBJ_NAME则对应的是MODSAP的NAME。根据MODSAP的MEMBER字段,结合TFDIR的FUNCNAME字段,可搜索出函数的用途
增强示例
查询检索
表MODSAP记录了增强出口对象,出口函数及对象类型;表TFDIR还增加了出口函数的作用等详细信息