gpt4 book ai didi

c# - asp.net 网页上的 BAPI 函数回滚

转载 作者:太空宇宙 更新时间:2023-11-03 22:50:50 24 4
gpt4 key购买 nike

我有一个 C# web 应用程序,它在 ASP.net 网站的一个函数中调用多个 BAPI 和存储过程。如果函数内部的方法之一失败,我需要回滚在网络上调用的函数上执行的所有 bapi。

在 SQL 中我调用

SqlTransaction transaction = connectionsql.BeginTransaction();
...
transaction.Rollback();

如果方法之一失败,则在 c# 代码上。 (这个可以做sql回滚)

但对于 SAP BAPI,即使我在 C# catch 语句上调用 BAPI_TRANSACTION_ROLLBACK,更改仍然存在。 (回滚不成功)

仅供引用,在我的 BAPI 函数中,我使用 CSAP_MAT_BOM_MAINTAIN 来更新 BOM 信息。

是否有任何方法可以在我的 SAP BAPI 函数的 C# 代码上执行类似 sql 事务的回滚,并在 Web 捕获异常时回滚在 C# 上运行的所有 BAPI?

最佳答案

首先,您必须检查 BAPI 是否包含 COMMIT WORK 语句。当然,这会干扰您的交易处理。

接下来您必须注意正确的 session 处理。您已将以下函数调用置于 BAPI 调用周围。

RfcSessionManager.BeginContext() 

RfcSessionManager.EndContext()

如果没有这个上下文括号,每个 BAPI 调用都将在不同的上下文中执行。

关于c# - asp.net 网页上的 BAPI 函数回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47405606/

24 4 0