技术文章
关于VL014“由于合作伙伴不同,错误传递分裂”的调试提示
在使用TCODE VL10B根据一个特定的STO订单创建发货订单时,用户得到了VL014的错误消息“Item &: delivery split because the partner are different”。所有的项目共享同一个客户,相关的拆分配置检查没有问题,这些项目应该被分组到一个发货订单中,而不是按项目拆分,这会增加大量不必要的进一步操作。
在本文中,我试图从技术的角度来解决这些问题,并列出调试过程中的关键点。
首先,在调试屏幕上将消息编号为014的消息类型VL设置断点无疑是最好的起点。但不幸的是,它不会被触发,因为这条消息没有像弹出窗口一样被处理,而是被收集来仅用于错误列表显示。而且VL10B不会在SM37上以你的名字创建后台作业,所以也忘了JDBG吧。
通过跟踪错误日志表FVBFS在函数模块:RV_DELIVERY_CC_ERRORLOG_ADD中的变化,将在名为'的例程中找到此错误消息的触发点。message_handling_variabel(sapmv50a)的包含程序LV50SF08。(插入点是常规’message_vbfs_aufbauen ' at FV50XF0M.)
顺便说一句,使用RV_DELIVERY_CC_ERRORLOG_ADD作为流程终止点,以防止物理创建交付,因为这种情况可能很少,并且很难找到一个新的交付,否则需要相应地恢复发票并删除生成的交付。
在同一例程中,检查合作伙伴是否需要分送的关键字段是字段lf_partners_identical”。
这个旗帜将由FM更新:“SHP_COMPARE_DELIVERY_PARTNERS”FM内部:' SHP_CHECK_PARTNER_COMBINATION '。
这里有两个表:一个是LT_VBPA_CHECK,它已经包含了报头的合作伙伴信息现有的,LT_VBPA的合作伙伴的新交付报头ZLIKP。标志ef_partners_same在乞求处被标记为X,这意味着默认情况下所有交付都不应该被分割,除非该标志被清除。
OMG,怎么会是这么简单的原因~~~我要晕了。查看PO项表,不同PO项的ADRNR不同,编号是顺序的!不要忘记adda = ' e '意味着什么。
检查ADRC表和那些ADRNR,所有这些行都是完全相同的,除了数字。
检查PO更改日志,用户对物品做了什么?什么都没有改变,只是留下了更改日志!!
这些无意义的操作会让系统认为送货地址的细节已经更新,这就是为什么ADRDA是“E”而不是默认的“D”!
- “GN_DELIVERY_CREATE”“SHP_VL10_DELIVERY_CREATE”
- ' SHP_VL10_DELIVERY_CREATE '在LV50R_CREAF07
- ' DELIVERY_CREATE '在LV50R_VIEWF43
- ' PACKAGES_DELIVER '在LV50R_VIEWF44
- FCODE_SAMD / FCODE_EXECUTE在VL10B的PAI
对我来说,调试就像追逐游戏,完整的的当然有陷阱和刺激~最大的缺点就是我会掉头发~
-2021年9月16日更新
仅仅不到三个月,我几乎忘记了整个过程~感谢这篇博客和我自己把我带回到以前的战场:D这就是为什么我需要继续写博客…
例:如果BAPIMERQADDRDELIVERY-TEL1_NUMBR已经维护,那么ADR2将显示在变更日志中,有3个“ADRU”条目。这就是为什么这3个更改记录在项目级别的旧/新值为空的原因。
所以这是PR创造的正确变更日志。
将尝试的方法从这联系。
注释546668(常见问题:创建交付时拆分交付)
问题:为什么会因为伴侣出轨而导致离婚?
答:位于交付的伙伴模式中的所有伙伴、从前面的文档复制的所有伙伴或从货物接收者的客户主记录中确定的所有伙伴都是分割标准。出站发货的唯一强制合作伙伴是货物接收方。例如,如果没有统计数据受到影响,您可以从合作伙伴模式中删除带有订单引用的交付的销售方,然后它就不再是拆分标准了。以下情况可能会导致交货分裂:
- 相同的伙伴功能有不同的伙伴编号。
- 即使合伙人编号相同,合伙人地址也有偏差。在这里,只有地址号码对分割至关重要;不检查地址列表部分。
- 在涉及的一个销售订单中,货运代理作为额外的合作伙伴。相反,拥有其他角色的额外合作伙伴不会导致标准的分裂。为此,您可以在SAP Note 448919中找到更多信息。
————-updated at 2021/10/20—————-
我的最终解决方案是:
- 在LV50SF08的例程gn_lieferkopf_finden开始时的隐式增强。使用get from过滤器设置标志来触发此逻辑LIKP
- FM结尾的隐式增强:SHP_CHECK_PARTNER_COMBINATION。使标志为活动比较新的逻辑:
-
- 为合作伙伴WE取2个ADRNRlt_vbpa_check和lt_vbpa相应;
- 删除addrnumber的值,adrc_UUID;
- 如果这两个ADRC条目相等,则设置ef_partners_same back as ' X '