Skip to Content
0
Aug 26, 2023 at 09:04 AM

利用SAPJCO3在一个事务中调用多个RFM,保证数据一致性

216 Views

纯SAP小白,现在在做java通过sapjco3对接sap系统,主要实现对sap系统中函数的调用。我想在一个事务中调用多个函数,

代码:

JCoContext.begin(jcoDestination);

String tid = jcoDestination.createTid();

JCoFunction function1 = jcoDestination.getRepository().getFunction("function1");

function1.execute(jcoDestination,tid );

JCoFunction function2 = jcoDestination.getRepository().getFunction("function1");

function2.execute(jcoDestination,tid );

JCoFunction commitFunction = jcoDestination.getRepository().getFunction("BAPI_TRANSACTION_COMMIT");

commitFunction.execute(jcoDestination,tid );

JCoContext.end(jcoDestination);

这段代码测试的时候出现了几个问题:

1. 函数BAPI_TRANSACTION_COMMIT提交的好像是所有的事务,而且提交事务没有用到事务id(tid)参数。请问只提交某一个特定事务id的事务。

2. function1我填写的数据都是正确的,function2我填写了错误的数据,最后提交的时候function1的数据还是保存到表里面了,并没有实现事务的一致性,即一个报错另外一个也不会保存成功。请问是为什么。

请各位大佬指教一下,到底是哪里出了问题,还是我对sap的事务理解有问题。