java - BAPI_TRANSACTION_COMMIT 是否提交自上次提交以来的更改

标签 java commit abap jco

我知道当您在程序中调用 BAPI 来更改 SAP 系统中的数据时,您必须调用 BAPI_TRANSACTION_COMMIT 将更改写入数据库。

   JCoFunctionTemplate functionTemplate = dest.getRepository().getFunctionTemplate("BAPI_FIXEDASSET_CHANGE");      
   JCoFunction ChangeFunction = functionTemplate.getFunction();
   ...//some code
   ChangeFunction.execute(destination);

    JCoFunctionTemplate functionTemplate = dest.getRepository().getFunctionTemplate("BAPI_TRANSACTION_COMMIT");   
    JCoFunction commFunct = functionTemplate.getFunction();
    commFunct.execute(destination);

我的问题是,BAPI_TRANSACTION_COMMIT 是否提交自上次提交以来的所有更改?或者它只提交前一个事务?

最佳答案

依赖数据库操作的一种常用方式也称为事务。根据定义,事务是数据库上的原子操作,用于在任何更改后保持一致的数据一致。如果n个连续的数据库操作属于一个事务,那么提交必须在最后一个成功的操作之后发出。如果n个操作中有任何一个失败,则认为该交易未完全发出。回滚工作是实现此目的的常用方法。如果您有一个事务应该拆分以仅提交几个更改,请考虑重新设计您的整个方法。或者,不太好,创建一个发布功能模块并在更新任务中调用它。对此要小心。哦,我明白了,你调用标准 sap 功能模块。寻找它的参数。它可能有一个隐式提交的标志。永远不要忘记 SAP GUI 事务“BAPI”并阅读文档。您的愿望很可能与事务不一致,因此 bapi 必须做更多事情。如果稍后出现故障,则事务将不一致,因此不会提交。大多数 sap 都知道他们的 api 应该做什么。但在处理质量通知和质量检验批处理时我对此表示怀疑。 :-D

关于java - BAPI_TRANSACTION_COMMIT 是否提交自上次提交以来的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28837922/

相关文章:

git - 如何在 git 中撤销提交?

string - 在 ABAP 调试器中查看长字符串的结尾

abap - 替换 OOABAP 中的 TABLES 语句的最佳实践是什么?

java - 文件时间到字符串

MySQL 重复键回滚

Git pull 变更日志

string - 如何格式化数字以显示至少 n 位小数

java - 不可循环初始化的代码可读性

java - 如何从多线程访问数组?

java - 从 Java/Android 线程返回值