gpt4 book ai didi

bapi - 使用 TransactionID 时 SAP JCo RETURN 表为空

转载 作者:行者123 更新时间:2023-12-01 16:15:49 24 4
gpt4 key购买 nike

我正在使用 JCo 库访问 SAP 标准 BAPI。好吧,除了当我使用 TID (TransactionID) 时 RETURN 表始终为空之外,一切都正常。

当我刚刚删除 TID 时,我得到的 RETURN 表中充满了警告等。但不幸的是,我需要将 TID 用于事务 BAPI,否则更改不会提交。

为什么使用 TID 时 RETURN TABLE 为空?

或者我必须如何提交对事务 BAPI 的更改?

这里是 BAPI 访问的伪代码:

import com.sap.conn.jco.*;
import org.apache.commons.logging.*;

public class BapiSample {

private static final Log logger = LogFactory.getLog(BapiSample.class);
private static final String CLIENT = "400";
private static final String INSTITUTION = "1000";
protected JCoDestination destination;

public BapiSample() {
this.destination = getDestination("mySAPConfig.properties");
}

public void execute() {
String tid = null;
try {
tid = destination.createTID();
JCoFunction function = destination.getRepository().getFunction("BAPI_PATCASE_CHANGEOUTPATVISIT");

function.getImportParameterList().setValue("CLIENT", CLIENT);
function.getImportParameterList().setValue("INSTITUTION", INSTITUTION);
function.getImportParameterList().setValue("MOVEMNT_SEQNO", "0001");
// Here we will then all parameters of the BAPI....
// ...
// Now the execute
function.execute(destination, tid);
// And getting the RETURN Table. !!! THIS IS ALWAYS EMPTY!
JCoTable returnTable = function.getTableParameterList().getTable("RETURN");
int numRows = returnTable.getNumRows();
for (int i = 0; i < numRows; i++) {
returnTable.setRow(i);
logger.info("RETURN VALUE: " + returnTable.getString("MESSAGE"));
}
JCoFunction commit = destination.getRepository().getFunction("BAPI_TRANSACTION_COMMIT");
commit.execute(destination, tid);
destination.confirmTID(tid);
} catch (Throwable ex) {
try {
if (destination != null) {
JCoFunction rollback = destination.getRepository().getFunction("BAPI_TRANSACTION_ROLLBACK");
rollback.execute(destination, tid);
}

} catch (Throwable t1) {
}
}
}

protected static JCoDestination getDestination(String fileName) {
JCoDestination result = null;
try {
result = JCoDestinationManager.getDestination(fileName);
} catch (Exception ex) {
logger.error("Error during destination resolution", ex);
}
return result;
}
}

更新 10.01.2013: 我终于能够同时完成 RETURN 表填充和输入提交。解决方案是同时执行这两项操作,即不带 TID 的提交,获取 RETURN 表,然后再次使用 TID 进行提交。

非常非常奇怪,但也许是 JCo 提交的正确用法。 有人可以向我解释一下吗?

最佳答案

我能够同时填充 RETURN 表和提交输入。

解决方案是同时执行两者,不带 TID 的提交,获取 RETURN 表,然后再次使用 TID 提交

关于bapi - 使用 TransactionID 时 SAP JCo RETURN 表为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13974223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com