使用 jCo(3.x)) 访问 SAP table 时获取无数据
Getting No data when accessing SAP table with jCo(3.x))
这是我的示例 code.In 这个示例只有基本类型,没有结构类型 set.But 在输出中 table 中不存在任何数据。
当我检查 SAP 中的记录时,它包含这个特定的多个记录id.Can有人向我解释一下吗?
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);
}
更新了代码。
首先通过事务代码 SE37 使用 SAP GUI 测试您的 ABAP 远程功能模块。
如果此测试成功并且使用相同的参数值从 JCo 调用时得到不同的结果,那么我建议研究 SAP 注释 206068 可能的原因。
同时检查您的方法 configureTableParameters
。我想,index
应该是一个字段索引而不是行数。您的实施将创建太多不必要的行。我假设您想调用 table.appendRow();
而不是 table.appendRows(index);
。此外,您可能打算用值 "100"
填充行中的第一个字段,在这种情况下,您必须为此传递索引值 0
而不是 1
。
多个问题可能导致此问题。
如果您将“”或“”设置为字段。 (当你设置值时,如果有一些值
如果它说合作伙伴不存在,如果你确定它存在,这意味着你的数据没有正确传递。将调试点添加到设置数据的位置,并确保传递正确的名称和正确的值。
你也不需要添加(索引)你可以 table.appendRow(); // 但这不会影响你的情况
此外,当您设置值时,请确保其已归档。 (通常不是)在你给出的例子中它的 int
例如:
private void configureTableParameters(JCoParameterList tableParameters){
JCoTable jCoTable=tableParameters.getTable(key);
jCoTable.appendRow();
if(value!=null)
jCoTable.setValue(fieldKey,String.valueOf(value));
}
这只是 psuda 代码,不会起作用
这是我的示例 code.In 这个示例只有基本类型,没有结构类型 set.But 在输出中 table 中不存在任何数据。
当我检查 SAP 中的记录时,它包含这个特定的多个记录id.Can有人向我解释一下吗?
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);
}
更新了代码。
首先通过事务代码 SE37 使用 SAP GUI 测试您的 ABAP 远程功能模块。 如果此测试成功并且使用相同的参数值从 JCo 调用时得到不同的结果,那么我建议研究 SAP 注释 206068 可能的原因。
同时检查您的方法 configureTableParameters
。我想,index
应该是一个字段索引而不是行数。您的实施将创建太多不必要的行。我假设您想调用 table.appendRow();
而不是 table.appendRows(index);
。此外,您可能打算用值 "100"
填充行中的第一个字段,在这种情况下,您必须为此传递索引值 0
而不是 1
。
多个问题可能导致此问题。
如果您将“”或“”设置为字段。 (当你设置值时,如果有一些值
如果它说合作伙伴不存在,如果你确定它存在,这意味着你的数据没有正确传递。将调试点添加到设置数据的位置,并确保传递正确的名称和正确的值。
你也不需要添加(索引)你可以 table.appendRow(); // 但这不会影响你的情况
此外,当您设置值时,请确保其已归档。 (通常不是)在你给出的例子中它的 int
例如:
private void configureTableParameters(JCoParameterList tableParameters){
JCoTable jCoTable=tableParameters.getTable(key);
jCoTable.appendRow();
if(value!=null)
jCoTable.setValue(fieldKey,String.valueOf(value));
}
这只是 psuda 代码,不会起作用