显式提交就没什么说的了,只有写上一句commit work的时候才提交。SAP总喜欢把问题复杂化。那么什么情况下用显式提交呢,有以下两种情况必须显式提交:
1、perform xxx on commit
只有等到显式的commit语句时,这个xxx才会被执行。
2、call function xxx in update task
同上我们知道,BAPI开头的那一堆function module大部分是需要显式调用commit才会提交数据库的,这是属于第1种情况,BAPI里面使用了大量的perform on commit。
再插一下,显式commit在增强程序中可要慎之又慎,它除了会把增强中你的代码中数据更新提交,也会把主程序中的数据更新提交,一不小心数据会被搞乱的。
BAPI_TRANSACTION_COMMIT有个WAIT参数,它类似于更新数据库语句的COMMIT和COMMIT AND WAIT。当不对WAIT参数赋值或赋为空时COMMIT会异步执行,否则会同步执行。这样当有两个业务需要连续执行的时候,第二个业务依赖与第一个业务,那么第一个业务BAPI在调用之后其BAPI_TRANSACTION_COMMIT的WAIT参数应赋为‘X’,否则便不能保证第一个业务在执行完之后调用第二个业务的BAPI或BDC,导致第二个业务不能够执行。
顾名思义,隐式是指没有写commit work语句也触发的数据库提交;显式是指使用commit work或者这条语句触发的提交(包含封装这条语句的function module,如DB_commit, bapi_transaction_commit等)。
在以下几种情况下,会触发隐式提交:
显式提交就没什么说的了,只有写上一句commit work的时候才提交。SAP总喜欢把问题复杂化。那么什么情况下用显式提交呢,有以下两种情况必须显式提交:
1、perform xxx on commit
只有等到显式的commit语句时,这个xxx才会被执行。
2、call function xxx in update task
同上我们知道,BAPI开头的那一堆function module大部分是需要显式调用commit才会提交数据库的,这是属于第1种情况,BAPI里面使用了大量的perform on commit。
再插一下,显式commit在增强程序中可要慎之又慎,它除了会把增强中你的代码中数据更新提交,也会把主程序中的数据更新提交,一不小心数据会被搞乱的。
BAPI_TRANSACTION_COMMIT有个WAIT参数,它类似于更新数据库语句的COMMIT和COMMIT AND WAIT。当不对WAIT参数赋值或赋为空时COMMIT会异步执行,否则会同步执行。这样当有两个业务需要连续执行的时候,第二个业务依赖与第一个业务,那么第一个业务BAPI在调用之后其BAPI_TRANSACTION_COMMIT的WAIT参数应赋为‘X’,否则便不能保证第一个业务在执行完之后调用第二个业务的BAPI或BDC,导致第二个业务不能够执行。
网上给出的解释都不权威,可能有很多错误,建议大家多F1,查看标准注解