BAPI_TRANSACTION_COMMIT,WAIT =' X'在BADi内

时间:2014-10-21 19:05:05

标签: sap abap

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

我意识到内部' BAPI_TRANSACTION_COMMIT'它发生了' COMMIT WORK'或者'承诺工作和等待'如果你指定参数' WAIT' =' X'。

我也知道做出“承诺工作”是不正确的。在BADi里面,但是如果我使用' COMMIT WORK AND WAIT'通过BAPI?

The SAP documentation regarding to COMMIT说:

  

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

     

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

我的困惑之所以出现是因为我们有一个BADi实现,其中有一个调用上述函数的参数' WAIT' =' X'我们在SAP Notes中找到了禁止使用' COMMIT WORK'在BADi里面,然而它说'承诺工作'而不是'承诺工作和等待'。

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

1 个答案:

答案 0 :(得分:3)

实际上,当您致电COMMIT WORKCOMMIT WORK AND WAIT时,LUW即告结束。唯一的区别是COMMIT WORK是异步的,COMMIT WORK AND WAIT是同步的。

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

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