Java BAPI_事务_提交自上次提交以来的更改吗

Java BAPI_事务_提交自上次提交以来的更改吗,java,commit,abap,jco,Java,Commit,Abap,Jco,我知道,当您在程序中调用BAPI来更改SAP系统中的数据时,必须调用BAPI_TRANSACTION_COMMIT将更改写入数据库 JCoFunctionTemplate functionTemplate = dest.getRepository().getFunctionTemplate("BAPI_FIXEDASSET_CHANGE"); JCoFunction ChangeFunction = functionTemplate.getFunction(); .

我知道,当您在程序中调用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_事务_提交自上次提交以来的所有更改吗?还是只提交上一个事务

BAPI\u事务提交
根据参数
WAIT
执行
提交工作
提交工作并等待
。这意味着它将向数据库提交所有尚未提交的更改


因此,在您的示例代码中,它将提交来自
BAPI\u FIXEDASSET\u CHANGE
的更改,以及在此之前所做的任何尚未提交的更改。

依赖数据库操作的一种常见方式也称为事务。根据定义,事务是数据库上的原子操作,用于在任何更改后保持一致的数据。如果每个数据库操作之后的n个数据库操作都属于一个事务,则必须在最后一次成功操作之后发出提交。如果n个操作中的任何一个失败,则事务被视为未完全发出。对此,回滚工作是常用的方法。如果有一个事务应该被分割,只提交几个更改,考虑重新设计整个方法。或者,不太好,创建一个发布功能模块,并在更新任务中调用它。小心点。哦,我明白了,你称之为标准sap功能模块。寻找它的参数。它可能有一个隐式提交的标志。永远不要忘记SAP GUI事务“BAPI”并阅读文档。很可能您的愿望不一致,因此bapi必须做得更多。如果以后出现故障,则事务不一致,因此不会提交。大多数情况下,sap知道他们的API应该做什么。但在处理质量通知和质量检验批时,我对此表示怀疑-谢谢。你能为我提供这个信息的链接吗。我的下一个问题是,如何只提交最后一个事务?首先可能吗?事实上,它提交了实际LUW的所有(预)挂起的数据库操作,其中调用了提交工作。正如@icbytes正确指出的,提交工作提交了当前LUW(逻辑工作单元)中的所有内容。如果您只想提交最后一个事务,则需要确保这是LUW中唯一的内容。我知道在ABAP中实现这一点的不同方法,但不知道如何使用JCo来实现。不管怎样,您都需要回答的问题是您希望如何处理挂起的数据库操作。