ABAP随笔-SAP增强点查找小记

2022-06-27 16:44:30 浏览数 (2)

01

SAP增强点查找

SAP查找增强的方法

1. SE30 运行时间分析评估,找到EXIT_*开头的函数-可以查到CMOD增强点

然后去MODSAP表中查找:

我们可以在SE30中运行MM02,随便输入一个物料,稍微改点东西,然后保存退出,

得到运行时间分析报表:

得到function :EXIT_SAPLMGMU_001

然后SE16N中MODSAP查询:

然后这个增强就是MM01 MM02在创建物料时额外增强的校验增强点。

可以去事务码CMOD增强。

2. 在function:MODX_FUNCTION_ACTIVE_CHECK 打断点

在函数的最后一行打个断点,再运行TCODE的,如果有增强则会跳入DEBUG界面,在DEBUG界面中,查看L_FUNCNAME字段对应的值,此值就是就是要找的出口

还是用MM02做演示:

首先在SE37中进入MODX_FUNCTION_ACTIVE_CHECK 在最后一行打个断点

然后执行MM02,修改保存时,若是有增强点就会触发debug

再去SE11中通过MODSAP来查看出口对就是那个SMOD,

接下来就可以在CMOD中创建增强组了,把找到的增强填入,

最后根据实际的业务进行处理。

3. 找BADI的方法:类对象CL_EXITHANDLER

先运行SE24,查看类对象CL_EXITHANDLER,在其方法:在GET_INSTANCE的14行( CALL METHOD CL_EXITHANDLER=>GET_CLASS_NAME_BY_INTERFACE)打上一个断点。

接下来运行事务代码,当有BADI是将会被执行,这时在DEBUG模式下,会进入类CL_EXITHANDLER的GET_INSTANCE方法,按F6执行这个方法之后,

点参数EXIT_NAME查看其对应的值,所有的方法实现都在此类对象中,此时就是我们所要找的BADI。

我们以事务码ME22N为例:

执行ME22N:进入debug模式

双击EXIT_NAME参数可以看到BADI的名称,然后我们可以去SE18里面查看,这个BADI大致是做什么的(增强点和BADI名称都可以查询一下)

由此可以得知这个ME_PO_PRICING增强点是增强PO价格确定的。

若是这个不是你所需要的增强可以在DEBUG界面按F8让程序继续进行,遇到BADI又会进入DEBUG界面。

4. 通过开发类找出口

以ME21N事务代码为例,进入TCODE后,选择点系统-》状态 -》程序名称,双击后进入到程序中,再点菜单栏中的转到 -》属性,找到开发类的名称,比如ME21N的开发类是‘ME’。

如果是找出口,则到SMOD事务代码中,点加强边的按纽,在开发类中输入‘ME’,回车后就会显示出所有的出口。

打开SMOD:

找BADI也是同样的过程,只是到SE18中去确定BADI

不过此方法找出来的出口,不是针对某个程序的出口,而是把开发类所对应的出口全找出口,所以

还要通过自己的判断找到所需求的出口

5. 根据SPRO配置说明或者modification等查找:

其实使用中发现任何一个增强方法的查找都是不全面的,SAP系统十分复杂繁琐,增强方式也有很多。一般性的增强我们都可以先百度一下,说不定一起出来的还有例子,这应该是最快一种方法。

第五点是根据SPRO配置点附近增强说明去查找:这个个人觉得是最有头绪的,有理有据的。

举个例子:

我们进入SPRO->销售与分销->系统调整->用户出口->销售中的UserExit->销售凭证处理的UserExit

点击

就可以查看出口说明(此处需要英文阅读)

然后我们点击执行按钮或者运行SE38

输入MV45AFZZ点击查看

以上两个较为常用,对于SD的增强来说

你会看到好多增强点,挑选一个适用的OK了。可能有不能确定的,业务顾问需要和开发顾问相互配合测试一下。

0 人点赞