在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'呢?
这将按照注册的顺序执行所有高优先级的(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完成时,数据将被提交......或者没有。有什么意见吗?
事实上,当你调用 COMMIT WORK
或 COMMIT WORK AND WAIT
. 唯一不同的是 COMMIT WORK
是异步的,而且 COMMIT WORK AND WAIT
是同步的。
的 BAPI_TRANSACTION_COMMIT
与 WAIT
参数集等于 COMMIT WORK AND WAIT
. 如果不设置参数,则等于 COMMIT WORK
.
这是真的 你不能在BAdI中提交. 如果在BAdI执行后出现回滚怎么办?它可能会让你的数据处于完全不一致的状态。