BAPI_TRANSACTION_COMMIT问题

2020-09-09 19:36发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)在.net程序中,根据SAP返回...

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

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


在.net程序中,根据SAP返回的消息,我收到使用BAPI_PO_CREATE1创建的采购订单。 实际上,每次执行时,都会得到一个新的下一个更高的数字PO。 这似乎很好。

另外,在BAPI返回我的.net程序之后,我立即执行BAPI_TRANSACTION_COMMIT。

但是,当我查看SAP时,PO不存在。

BAPI_TRANSACTION_COMMIT中的RETURN结构是初始的。 因此那里没有错误。

对于WAIT = X和BAPI_TRANSACTION_COMMIT中的默认WAIT,我已经尝试了相同的结果。

在该过程中是否有特殊的地方应调用此BAPI_TRANSACTION_COMMIT? 在调用CREATE PO BAPI之后,我立即"假设"是正确的时间和地点。

7条回答
hengyuye
2020-09-09 20:02

使用RfcTransaction意味着它将作为异步请求执行,并且应用程序将不会获得响应参数。 因此,如果需要同步处理,则唯一有效的方法是使用RfcSessionManager.BeginContext/JCoContext.begin启动有状态序列,在该状态序列中调用BAPI和BAPI_TRANSACTION_COMMIT。 因此,您没错,但我没有考虑使用RfcSessionManager.EndContext/JCoContext.end,因为如果不使用它们,则会将后端资源的释放延迟到会话在连接器端完成的时间点, 释放与此会话关联的所有打开的连接。 好的编码风格将尽早释放资源。

最好的问候,
Markus

一周热门 更多>