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了。可能有不能确定的,业务顾问需要和开发顾问相互配合测试一下。