6

当在 BADi 中等于 'X' 时,使用带有 'WAIT' 参数的 'BAPI_TRANSACTION_COMMIT' 会有什么影响?我是否应该期望 SAP 在 LUW 提交时提交数据?

我知道如果您指定参数“WAIT”=“X”,在“BAPI_TRANSACTION_COMMIT”内部会发生“COMMIT WORK”或“COMMIT WORK AND WAIT”。

我也知道在 BADi 中进行“提交工作”是不正确的,但如果我通过 BAPI 使用“提交工作并等待”?

关于 COMMIT 的 SAP 文档说:

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

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

我的困惑是因为我们有一个 BADi 实现,其中使用参数“WAIT”=“X”调用了上述函数,并且我们发现了一个 SAP Notes,它禁止在该 BADi 中使用“COMMIT WORK”,但是它说“提交工作”而不是“提交工作并等待”。

因此,我可以认为该实现是正确的,因为当 LUW 完成时将提交该数据……与否。任何意见?

4

1 回答 1

4

实际上,当您调用COMMIT WORK或时,LUW 完成COMMIT WORK AND WAIT。唯一的区别是COMMIT WORK异步和COMMIT WORK AND WAIT同步。

BAPI_TRANSACTION_COMMITwith参数集WAIT等于COMMIT WORK AND WAIT。如果没有参数集,它等于COMMIT WORK

这是真的。您不得提交 BAdI。如果在 BAdI 已经执行之后有回滚怎么办?它可能会使您的数据处于完全不一致的状态。

于 2014-10-22T06:33:14.650 回答