使用' 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完成时,数据将被提交......或者不是。有什么意见吗?
答案 0 :(得分:3)
实际上,当您致电COMMIT WORK
或COMMIT WORK AND WAIT
时,LUW即告结束。唯一的区别是COMMIT WORK
是异步的,COMMIT WORK AND WAIT
是同步的。
BAPI_TRANSACTION_COMMIT
WAIT
参数集等于COMMIT WORK AND WAIT
。如果没有参数集,则它等于COMMIT WORK
。
这是真的。您不得提交BAdI。如果BAdI已经执行后有回滚怎么办?它可能会使您的数据处于完全不一致的状态。