下面是我的示例代码。在这个例子中只有基本类型,没有结构类型必须设置。但在输出中,表中不存在数据。
当我检查SAP表中的记录时,它包含这个特定ID的多个记录。有人能给我解释一下吗
public void invokeRFC(JCoDestination destination) {
JCoFunction function=null;
try
{
JCoFunctionTemplate functionTemplate = destination.getRepository().getFunctionTemplate("RFC_METHOD");
if (functionTemplate != null) {
function = functionTemplate.getFunction();
}
if (function == null)
throw new RuntimeException("Not found in SAP.");
//to fill elementary types and structures
configureImportParameters(function,"xxx", "abc");
//to fill table type parameters
configureTableParameters(function, "tblName",1,"100");
function.execute(destination);
} catch (JCoException e)
{
e.printStackTrace();
}
}
public void configureTableParameters(JCoFunction function, String table_name, int index, String id) {
JCoTable table = function.getTableParameterList().getTable("table_name");
table.appendRow();
table.setRow(index);
table.setValue("Partner", "100");
}
private void exportTable(JCoFunction jCoFunction, String tblName) {
JCoTable resultTable = jCoFunction.getTableParameterList().getTable(tblName);
int value = resultTable.getNumRows();
System.out.println(value);
}
private void configureImportParameters(JCoFunction function, String param1, String param2) {
JCoParameterList parameterList =
function.getImportParameterList();
parameterList.setValue("field1", param1);
parameterList.setValue("field2", param2);
}
2条答案
按热度按时间c3frrgcw1#
多个问题可能导致这种情况。
1.如果将“”或“”设置为字段。(当你设置值时,如果这些值有一些值,最好设置
1.如果它说合作伙伴不存在,如果你确定它存在,这意味着你的数据没有正确传递。在设置数据的位置添加调试点,并确保传递正确的名称和值。
1.另外你不需要add(index)你只需table.appendRow();//但这不会影响您的案例
1.同样,当你setValue时,确保它的int文件。(通常不)在你给出的例子中它的int
例如:
这只是psuda代码,将无法工作
bqucvtff2#
首先通过事务代码SE37使用SAP GUI测试您的ABAP远程功能模块。如果此测试成功,并且如果使用相同的参数值从JCo调用,您会得到不同的结果,那么我建议研究SAP注解206068,以了解可能的原因。
同时检查您的方法
configureTableParameters
。我猜,index
应该是一个字段索引,而不是一个行计数。您的实现将创建太多不必要的行。我假设你想调用table.appendRow();
而不是table.appendRows(index);
。此外,您可能打算用值"100"
填充行中的第一个字段,在这种情况下,您必须传递索引值0
而不是1
。