BAPI_TRANSACTION_COMMIT with WAIT = 'X' within a BADi

问题描述 投票:5回答:1

在BADi中使用带有 "WAIT "参数的 "BAPI_TRANSACTION_COMMIT "会有什么效果?我是否应该期望SAP会在LUW提交时提交数据?

我知道在'BAPI_TRANSACTION_COMMIT'里面,如果你指定参数'WAIT'='X',就会发生'COMMIT WORK'或者'COMMIT WORK AND WAIT'。

我也知道在BADi里面做'COMMIT WORK'是不正确的,但是如果我通过BAPI使用'COMMIT WORK AND WAIT'呢?

SAP文档中关于COMMIT 说。

这将按照注册的顺序执行所有高优先级的(VB1)更新功能模块,并在一个共同的数据库LUW中执行。如果不指定加法AND WAIT,则程序不会等到更新工作进程执行完毕后再执行(异步更新),而是在COMMIT WORK后立即恢复。但是,如果指定了增加AND WAIT,则在COMMIT WORK之后的程序处理将不会继续,直到更新工作进程执行了高优先级更新功能模块(同步更新)。

当所有高优先级的更新功能模块都成功完成后,该语句会将低优先级(VB2)的更新功能模块按照注册顺序一起执行到一个共同的数据库LUW中。

我的困惑是因为我们有一个BADi的实现,在这个BADi中,有一个对上述函数的调用,参数是'WAIT'='X',我们找到了一个SAP注释,在这个BADi里面禁止使用'COMMIT WORK',但是它说的是'COMMIT WORK'而不是'COMMIT WORK AND WAIT'。

所以我可以认为这个实现是正确的,因为当LUW完成时,数据将被提交......或者没有。有什么意见吗?

sap commit abap bapi badi
1个回答
3
投票

事实上,当你调用 COMMIT WORKCOMMIT WORK AND WAIT. 唯一不同的是 COMMIT WORK 是异步的,而且 COMMIT WORK AND WAIT 是同步的。

BAPI_TRANSACTION_COMMITWAIT 参数集等于 COMMIT WORK AND WAIT. 如果不设置参数,则等于 COMMIT WORK.

这是真的 你不能在BAdI中提交. 如果在BAdI执行后出现回滚怎么办?它可能会让你的数据处于完全不一致的状态。

© www.soinside.com 2019 - 2024. All rights reserved.