SAP 增强学习(2):二代增强 CUSTOMER EXIT

涉及到的:TCODE:SMOD、CMOD

涉及到的表:TADIR,MODSAP

  1. 介绍

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

  1. 学习的步骤

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

SAP 增强学习(2):二代增强 CUSTOMER EXIT_第1张图片

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

            SAP 增强学习(2):二代增强 CUSTOMER EXIT_第2张图片

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

SAP 增强学习(2):二代增强 CUSTOMER EXIT_第3张图片

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

SAP 增强学习(2):二代增强 CUSTOMER EXIT_第4张图片  SAP 增强学习(2):二代增强 CUSTOMER EXIT_第5张图片

 

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

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

SAP 增强学习(2):二代增强 CUSTOMER EXIT_第6张图片SAP 增强学习(2):二代增强 CUSTOMER EXIT_第7张图片

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

 

 

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

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

SAP 增强学习(2):二代增强 CUSTOMER EXIT_第8张图片

 

 

 

CMOD使用方法。

首先是创建一个PROJECK

SAP 增强学习(2):二代增强 CUSTOMER EXIT_第9张图片

然后分配增强

SAP 增强学习(2):二代增强 CUSTOMER EXIT_第10张图片

 

 

然后分配组件

SAP 增强学习(2):二代增强 CUSTOMER EXIT_第11张图片

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

SAP 增强学习(2):二代增强 CUSTOMER EXIT_第12张图片

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

 

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

点击激活后退出。

SAP 增强学习(2):二代增强 CUSTOMER EXIT_第13张图片

 

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

SAP 增强学习(2):二代增强 CUSTOMER EXIT_第14张图片

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

SAP 增强学习(2):二代增强 CUSTOMER EXIT_第15张图片

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

EXIT_程序名_编号。

SAP 增强学习(2):二代增强 CUSTOMER EXIT_第16张图片

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

 

 

 

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

 

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

 

难点:找增强点困难。

你可能感兴趣的:(ABAP开发)