我正在使用C#调用BAPI与SAP通信。我是这个话题的新手,所以我想澄清一些概念。
Q1:如果我调用BAPI_GOODSMVT_CREATE,我应该检查RETURN表还是MAT_DOC项目表的字段以查看它是成功还是失败?
Q2:如果失败,我需要调用BAPI_TRANSACTION_ROLLBACK,还是忽略它(因为没有BAPI_TRANSACTION_COMMIT,数据将无法保存(?
Q3:我发现有时,即使有错误消息,如果我继续拨打BAPI_TRANSACTION_COMMIT,数据也会被保存。但有时不会。
提前谢谢。
检查返回表。如果没问题,请发出带有 WAIT 标志的BAPI_TRANSACTION_COMMIT。如果不正常,请发出BAPI_TRANSACTION_ROLLBACK。
检查 RETURN from BAPI_TRANSACTION_COMMIT,因为那里也可能有错误(例如数据库更新问题(。
广告 Q1 在这种特殊情况下,我宁愿检查材料文档编号是否以MAT_DOC返回。这样,您就不会依赖返回消息。如果返回了材料文档,则表示无论消息如何,BAPI 调用都成功。我发现处理返回消息的 BAPI 实现非常不一致。有些 BAPI 返回成功消息,有些则不会。
广告 Q2、Q3 始终在 BAPI 调用后调用BAPI_TRANSACTION_COMMIT或BAPI_TRANSACTION_ROLLBACK,具体取决于结果。BAPI_TRANSACTION_COMMIT和BAPI_TRANSACTION_ROLLBACK不仅执行提交/回滚工作,还调用BUFFER_REFRESH_ALL函数。