Nel*_*nda 6 abap commit bapi badi
当在 BADi 中等于 'X' 时,使用带有 '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”?
这将按照注册的顺序和在公共数据库 LUW 中执行所有高优先级 (VB1) 更新功能模块。如果不指定添加 AND WAIT,则程序不会等到更新工作进程执行完毕(异步更新),而是在 COMMIT WORK 后立即恢复。但是,如果指定了添加 AND WAIT,则 COMMIT WORK 之后的程序处理将不会继续,直到更新工作进程执行了高优先级更新功能模块(同步更新)。
当所有高优先级更新功能模块都成功完成后,该语句将按照注册顺序一起执行低优先级(VB2)更新功能模块在一个公共数据库LUW中。
我的困惑出现是因为我们有一个 BADi 实现,其中调用了带有参数 'WAIT' = 'X' 的上述函数,并且我们发现了一个 SAP Notes,它禁止在该 BADi 中使用“COMMIT WORK”,但是它说“提交工作”而不是“提交工作并等待”。
所以我可以认为实现是正确的,因为当 LUW 完成时,数据将被提交......或不。任何意见?
COMMIT WORK
实际上,当您调用或时,LUW 就会完成COMMIT WORK AND WAIT
。唯一的区别是COMMIT WORK
异步和COMMIT WORK AND WAIT
同步。
withBAPI_TRANSACTION_COMMIT
参数WAIT
集等于COMMIT WORK AND WAIT
参数如果没有设置参数,则等于COMMIT WORK
。
这是真的。您不得在 BAdI 中做出承诺。如果BAdI已经执行后出现回滚怎么办?它可能会使您的数据处于完全不一致的状态。