首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

EWM收货ECC交货单校验逻辑问题

生产机遇到个问题,EWM跟ECC集成的。

在EWM进行收货,触发ECC过账。

EWM收货完,ECC查看的时候,发现并没有成功。

然后SMQ2查看Qrfc,就是上次写的那个debug系列里提到的方法。

查看报错:

负数,哪儿来的负数,

想VL33N查看下单据,结果dump,应该是那个字段不允许负数,显示的时候dump了。

然后查看下LIPS 和LIKP表,发现毛重字段出现了负数。

因为交货单都是通过接口传输创建的,那边接口没控制住,导致出现了负数,也不知道怎么写进去的。

然后查看对应的ECC BAPI:

SPE/INB_DELIVERY_CONFIRM_DEC

然后去debug看了下,定位报错位置的方法用的最简单粗暴的

然后F8 F8的看就行了,很快就能定位到位置

之后我们在Q系统进行模拟:

也是接口过来一个交货单,毛重负数,EWM进行收货,发现……

Q系统没出问题,而且lips表的负数还自动改为了EWM传过来的正数。

这就奇怪了,为啥P系统有问题,Q就没问题?

有代码没传吗?

后来我对比了下P系统和Q系统的这两条数据。

发现P系统是多个行项目,而且是部分收货,只对其中一行做了收货,而且毛重是正数的那条正常行项目进行的收货,然后才报的错。

而Q数据是单个行项目,就这一个行项目,而且毛重是负数。

那重新做数据,Q上三个行项目,其中两条毛重是负数,一条毛重是正数。然后分别对三个行项目进行收货。

问题重现了……

之后又试了一下,多个行项目,存在负数,然后一起收货的情况,没出现问题,EWM传过来的数据会覆盖掉ECC 负数的毛重。

那这么看就是说,ECC多个行项目,如果EWM收货的时候,传过来数据,就以传过来的数据为准,如果没传过来,会取ECC内数据,然后全部参与校验。

位置在这里:

WS_DELIVERY_UPDATE_2

VBPOK_INTERFACE_CHECK

最后处理方式其实也简单,EWM前台收货的时候,把有负数的行项目先进行收货,或者全部一起收货的话,就会直接覆盖掉。

如果前台处理不了,就在这里把vbpok_tab内表的数据,debug的时候把负数改一下,然后继续执行就行了。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201124A02AHK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券