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条回答
愤怒的猪头君
2020-09-09 20:21

使用内置提交创建自定义RFC并不是正确的方法 问题:您正在进行服务器端ABAP更改,而C#客户端需要在与提交调用相同的上下文中调用有状态BAPI RFC,以便SAP能够理解正确的LUW来完成。 通常,客户端程序员没有开发人员访问SAP服务器的权限即可更改或添加RFC。 问题在于,默认情况下,连接是无状态的,BAPI RFC永远不会与提交匹配,反之亦然。 提交将返回虚拟成功,该成功仅表明SAP提交了默认的空事务。 相反,这两个调用需要绑定在一起。 为此使用RfcTransaction对象的方法是正确的。 另一种方法可能是使用BeginContext将上下文固定在RfcDestination上,然后调用BAPI RFC,然后显式调用BAPI COMMIT,然后可选地调用EndContext(将在不影响JCo/Nco的情况下工作,但对JCo/Nco更好,以允许清理其保留的上下文 的轨迹。

Markus Tolksdorf 我说对了吗?

一周热门 更多>