点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
专家您好,
我在使用BAPI_PO_CHANGE进行IDOC处理时遇到问题。
让我提供一些背景信息。 我们有一个ECC6入站接口,正在接收ORDERS05类型的Idocs。 这些包含采购订单的数据。 业务需求是检查那些PO中现有项目的"最终发票"标志。
但是,如果阻止了PO中的供应商(LFA1-SPERM或LFM1-SPERM),则标准SAP行为将不允许任何更改。 为了避免此问题,我们采用了以下解决方案(如OSS注释2512364中所建议):
1。 删除所有供应商阻止标志==>通过呼叫交易" XK05"
2。 等待3秒
3。 致电BAPI_PO_CHANGE
4。 通过调用事务" XK05"还原供应商阻止标志==>
出现2个问题:
-BAPI_PO_CHANGE(第3步)将抛出一个错误,指出供应商已被阻止,尽管事实上该供应商的更改文档(第1步)表明该供应商已成功解除封锁
-上述错误不是系统性的,它似乎是在同时接收多个Idocs时随机触发的(在我们上次运行的600个中,有150个idocs失败)。 Idocs与多个供应商有关。 此外,稍后通过BD87手动运行时,失败的Idocs将被成功处理。
关于BAPI_PO_CHANGE为什么仍然认为供应商被阻止的任何想法?
我们甚至尝试了一种解决方案,以逻辑上锁定当前由活动Idoc处理的供应商,以避免多个Idocs同时在同一供应商上工作。
现在,我们正在跟踪XK05程序缓冲区干扰BAPI_PO_CHANGE的可能性...
预先感谢您的帮助。
此致
丹尼尔
我很惊讶SAP在笔记中提出了这个解决方案。
对我来说,您无法在Idoc流程中删除供应商块,因为您无法在入站idoc处理中执行提交工作。
第二点,如果按作业运行idoc,则系统可能会在很多个过程中分配idoc的数量。 因此,与此同时,您可以尝试解锁试图锁定另一个进程的供应商。
或
您有一项艰巨的工作,可以分析所有要处理的idoc,删除锁,以标准方式开始处理idoc。 并最终设置锁定
但是,如果第二步中发生任何事情,您必须确保最后一步始终得到处理
HelloFrédéric, >
感谢您的帮助。 不过,我认为该过程应该可行。 单独运行时,将正确集成Idocs,并且SAP建议的过程运行正常。
我们现在正在测试一种解决方案,其中处理Idoc的FM等待直到解除与当前供应商相关的锁条目为止。 只有这样,我们才能假定供应商的更新已完成。
此致
Daniel
我曾经在一家使用这种方法的公司工作过,请相信我,当idocs数量增长时,我们必须删除所有这些。
WAIT是最糟糕的语句,您可以在编码中使用
只是为了概述一下,如果您每500万运行一次工作,并且有人修改供应商,您的 作业将等待..所以1个进程很忙。 之后的500万,第二个作业,第二个批处理忙碌中……现在计算您系统中可用的批处理数目,并想象如果用户离开屏幕一小时,将会得到什么结果。 您的所有批次均已锁定。 这不是一个有趣的故事,我看过几次;)
一周热门 更多>