第一次处理一个增强

好久没来写东西了,原因无非是最近比较忙。

今天第一次处理增强,心里小激动。所以特此把过程记录了一下。

事情的起因是我想在调用BAPI_GOODSMVT_CREATE生成物料凭证的时候,为凭证行去写一个备注。

第一步我去看了表参数里的GOODSMVT_SERIALNUMBER,它对应的数据类型里有列叫ITEM_TEXT,字符型,长度50,短描述叫项目文本,就想拿它试一下。

在我写的Function里,把对应的字段给赋了个值,测试了一下,然而没有达到预期的效果。

那就去MIGO里做个凭证,给行项目写一下文本,测试看它写到MSEG里是哪个字段,从而分析看是不是我把列给搞错了。

结果出乎意料,明明我在MIGO里给行项目写了文本,但保存之后,行项目的文本就丢了。

这可咋整,百度、QQ群、微信群呗。

一顿操作之后得到的结果是要处理一个增强,MBCF0002。

然后去问度娘,啥是增强。最终决定参考这位老哥的文章。

ABAP增强总结_ABAP开发笔记-CSDN博客_abap 增强

理论略过了, 拣有用的看,看老哥都提到了哪些事务代码。

老哥说了“第二代增强(基于函数模块的增强)用事务SAP增强管理(事务代码:SMOD)和增强编译器(事务代码:CMOD)维护。”,那就先进SMOD里看看。

 这好像叫瞎猫碰上死耗子。看到的第一个事务代码我就能用得上。也就是说,MBCF0002是一个二代增强。

这里主要看组件。

EXIT_SAPMM07M_001,函数?设置物料单据项中的段文字?瞅着像那么点儿意思,看能不能双击进去瞅瞅。

代码就这么简单。看样就是处理ZXMBCU02了。

选上的这一句是网友们说的修改方法,亲测可用。e_sgtxt = i_mseg-sgtxt.

就是这个“亲测”的过程有点儿曲折。我是这么干的。

在修改代码之前,在ZXMBCU02里打了个断点。去SE37里测试我写的Function,发现在调用方法BAPI_GOODSMVT_CREATE时,也会走这个增强,说明这个增强即会影响事务MIGO,也会影响方法BAPI_GOODSMVT_CREATE,那就按网友说的方法去修改它呗。

修改、激活之后,切换到函数测试的窗口。从“测试功能模块:结果屏幕”,回退到“测试功能模块:初始屏幕”,重新测试。发现并没有得到我想要的结果。好吧,再回到ZXMBCU02里,打断点跟踪程序,甚至调整语句顺序,做了好多种尝试。e_sgtxt仍然是空。最终尝试到重新进行测试,才解决这个问题。也不知道SAP关于这块儿是个什么样的逻辑。不管它了,总之我的问题是解决了。

以上呢。就是我第一次处理增强的过程。总结一下就是SAP里,物料凭证的行文本可以输入,但保存不了。这是SAP的一个先天的毛病。SAP自己也知道有这毛病,出了个解决办法,设置了一个叫MBCF0002的二代增强,它里面的组件是Function,叫EXIT_SAPMM07M_001,这个Function用户改不了,细琢磨就是控制了用户可以改的数据的范围,只允许用户修改e_sgtxt这一个参数。这个Function里只有一句话,说它包含了一个叫ZXMBCU02的文件。用户可以在这里写逻辑。网友们给出了好多利用它去针对导入参数做数据检查的案例。解决物料凭证里保存不了行项目文本的方法就是在这里加一句“e_sgtxt = i_mseg-sgtxt.”就实现了。测试它的时候,调用它的函数要重新执行一下。否则还是会按原来的代码去执行,即使你已经激活了它。

 到这儿呢,也就结束了。文章是原创的,技术和知识点都是从网友那里吸收过来的。我这次无非是借着第一次处理增强的激动心情,整理了过程中的细节。希望有网友们看完之后会有收益吧。忙去了。BYE!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

rarenmen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值