所以bapi_transaction_commit额外地刷新了BAPI buffer缓冲区。 下面是bapi buffer的用处: 1、假设你的程序连续地调用了若干个bapi,然后在最后使用了commit work/bapi_transaction_commit,这样会一次性提交所有bapi更新 2、众所周知,bapi调用会检查一些错误,如数据库中数据的存在与否.例如第二个bapi可能必须去检查前一个...
简要地看一下bapi_transaction_commit的代码,我们能很快看出其与commit work的区别。它会在执行commit work之后再调用一个buffer_refresh_all的函数 所以bapi_transaction_commit额外地刷新了BAPI buffer缓冲区。 下面是bapi buffer的用处: 1、假设你的程序连续地调用了若干个bapi,然后在最后使用了co... ...
调用的时候,通常 BAPI_TRANSACTION_COMMIT的WAIT参数是空的,那么就会导致commit work and wait不会执行,而是简单的 commit work操作,这样后续的BAPI可能需要上一个bapi所作操作的数据,而恰巧这些数据还没有提交完成,就会导致以后的bapi都无法正常顺利的执行。所以我们只需要将 BAPI_TRANSACTION_COMMIT中的参数wait赋值'X...
首先得明白BAPI_TRANSACTION_COMMIT这个BAPI的作用。它功劳很大,在SAP里面很多的BAPI直接调用是不会有结果的,因为需要COMMIT一下才能生效,比如生成资产编号的BAPI:BAPI_FIXEDASSET_CREATE1,如果对他直接在SE37中调用运行或者使用SE38调用它,虽然可以得到一个资产编号,但是在AS03里面查询,系统会很白痴得提示你:该资产编号...
没错,虽然从静态源代码看,代码块 B 紧接在代码块 A 之后,但运行时 B 却在 D 即 COMMIT WORK 之后执行。 所以多次调用 BAPI,最后一次性 COMMIT WORK, 会有问题吗?这个问题不能一概而论。 假设多次调用 BAPI,每次传递的输入参数都相同,那么: 最安全的情况,如果这个 BAPI 每次执行的只是数据库更新操作,且 ...
那么,这就需要COMMIT一下,在调用这个BAPI之后再紧接调用BAPI_TRANSACTION_COMMIT这个。但是,在SE38中是可以这样做,而在.net中就没那么简单了,直接在调用完BAPI_FIXEDASSET_CREATE1之后再紧接调用BAPI_TRANSACTION_COMMIT是不可以的,虽然还是生成了资产编号,但仍旧是个废号。跟在SE37中调用无异。
有朋友问我这个问题:调用 MIRO 的 BAPI, 调用多次,最后一次性 COMMIT WORK,可以执行成功,但是调用一百次以上,最后再 COMMIT ...
2) 执行BAPI处理后。一般使用BAPI函数BAPI_TRANSACTION_COMMIT(内含COMMIT语句) 。 3. 如果要保证数据库中当前所作的更改立即被确认,那么就必须使用COMMIT WORK 语句结束LUW。COMMIT WORK 在程序代码中标记了 LUW(几个作业联系在一起形成作业的逻辑单元) 结束并启动更新任务。在COMMIT WORK 语句以后,对数据库所作的...
3、使用BAPI_ACC_DOCUMENT_POST参数表EXTENSION2,将扩展字段传入详细步骤如下: 1、创建结构,se11,很简单,不再赘述,如下图: 2、SE19实现BADI增强ACC_DOCUMENT 通过ACC_DOCUMENT help文档知道,方法CHANGE用来完成字段的扩展,还有一个需要注意的是参考业务类型,这个一定要选对,不然执行BAPI的时候不会调用这个BADI,我用...
在更新数据后调用 否则数据没有Commit 是不会被写入数据库的 在调用BAPI的客户端程序 中调用