点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)尊敬的专家, 美好的一天! ...
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)尊敬的专家, 美好的一天! ...
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
尊敬的专家,
美好的一天!
我们有一个用于豁免批准流程的自定义程序,其中有一组带有所需详细信息的SO,授权用户将选择任何SO或选择所有SO进行批准。
选择特定的SO并单击"批准"按钮后,系统将调用以下BAPI:
1。 首先,如果有帐单冻结,系统将触发 BAPI_SALESORDER_CHANGE 释放并返回相应的消息。 并提交(如果成功释放了块),否则将在发生任何错误时回滚
2。 稍后,系统将触发 BAPI_BILLINGDOC_CREATEMULTIPLE 创建帐单。
如果所选SO中的WBS存在诸如"超出预算"之类的问题,则BAPI将不会创建账单,但最终会返回适当的消息。 如果成功,那么帐单文档将创建其他回滚。
现在,问题是:
-如果一个SaleOrder在触发BAPI_BILLINGDOC_CREATEMULTIPLE时以任何错误结束,则在回滚后,当系统准备下一个SaleOrder并尝试从BAPI_SALESORDER_CHANGE释放任何块时,它将以相同的错误消息结尾,该错误消息从 BAPI_BILLINGDOC_CREATEMULTIPLE。,即使两个SalesOrder都有不同的WBS。
请提出任何解决方案或其他方法来解决所说明的问题。
下面,我简要地解释了逻辑:
将lt_final_table循环到lw_final_table
调用功能'BAPI_SALESORDER_CHANGE' 阅读lt_baprret。 如果msg_type ='E'*错误 调用功能'BAPI_TRANSACTION_ROLLBACK'。 否则。 调用功能'BAPI_TRANSACTION_COMMIT' *//第二,调用Bapi来创建帐单 呼叫功能'BAPI_BILLINGDOC_CREATEMULTIPLE' 读取lt_return。 如果msg_type ='E' 调用功能'BAPI_TRANSACTION_ROLLBACK'。 否则。 通话功能'BAPI_TRANSACTION_COMMIT' 导出 endif。 Endloop。
导出
salesdocument =
order_header_in = lw_bapisdh1
order_header_inx = lw_bapisdh1x
表格
返回= lt。
导出
等待='X'。
表格
billingdatain = lt_billingdatain
return = lt_return
成功= lt_成功。
wait ='X'。
您是否尝试过调试并查看BAPI调用前后的变量内容?
伪代码而不是真正的伪代码,但要从头开始:在LOOP的开头,清除所有内部表和其他在循环内重复使用的变量。
一周热门 更多>