BAPI_ENTRYSHEET_CREATE

2020-09-15 23:25发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我们正在开发一个代理,其...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我们正在开发一个代理,其中的数据将来自外部服务,并将通过BAPI_ENTRYSHEET_CREATE创建SES。 一个呼叫中将有多个SES数据,并且代理必须验证所有数据以进行创建和接受。

要求是,如果所有数据看起来都不错,则应创建并接受SES(因为所有SES都包含在代理中),然后才应执行提交工作。 如果多个SES数据中的任何一个有问题,则不应提交事务,也不应创建和接受SES。这就像是全部或全部。

为此,我们在循环中调用BAPI_ENTRYSHEET_CREATE并在创建本身中设置接受标志。 我们还将NO_COMMIT标志设置为true,因此BAPI内部不会发生自动提交。 并且我们在检查了循环中出现的任何错误消息后提交。 我们面临的问题如下。

如果有多个SES数据(每个都有不同的PO号),则BAPI可以创建SES并接受第一行项目的SES(返回2条消息)(不提交) 但是当第二个订单项到来时在循环内部,则会引发错误"更新错误"。 对于随后的BAPI调用,它显示已创建,并且I000带有文本消息,没有错误.....

当BAPI上的No commit标志消失(对于相同数据)时,SES将被创建并被接受而不会出现错误。 但是,由于提交已经完成,因此如果后续数据中发生任何错误,我们将失去取消提交的能力。

请建议如何处理这种情况。.

PS:我们没有在SES上使用y发布策略。

6条回答
愤怒的猪头君
2020-09-16 00:06

很抱歉再次打扰大家,这个问题部分与BAPI有关,因此再次发布。 我们在设计上做出了某种折衷,现在要做的是,如果"测试运行"为"开",我们将在No Commit ='X'且没有接受标志的情况下运行BAPI。 这样可以确保完成对"创建条目"工作表的所有验证(而不是我们计划在调用BAPI之前进行的确认)

如果任何数据有错误(我们根据代理中输入的数据多次运行此bapi),则会发出错误消息。 如果运行中没有错误,我们将再次调用BAPI,这一次是No Commit =空,并在BAPI中添加了接受标志= X。

除一个问题外,其他所有方法都工作正常。 当BAPI在测试模式下运行时(即使没有提交='X'),它也在消耗数字范围。 因此,当进入实际运行时,条目表的文档编号将增加1。 代理数据有3个条目表数据,对于第一个测试运行,编号为100XX01,实际运行正在创建100XX02(加号1)。 在代理运行结束时,我们将文件编号为100XX02、100XX04、100XX06。

现在,非办公室业务不希望出现这种差距,因为这会造成和解问题。 我们无法将数字范围设置为外部,因为我们有用户通过ML81N手动创建。 我们尝试做的另一件事是,当测试模式将EXT_NUMBER传递给BAPI时,它可以将no用作测试模式,但这也不起作用。

如果您对此问题有任何见解,请提出建议

PS:我测试了NRIV缓冲液并从中取出了缓冲液,但这并没有帮助。

此致

一周热门 更多>