超出JCo RFC_READ_TABLE数据缓冲区

时间:2019-01-14 21:50:22

标签: java sap abap connector jco

我正在尝试通过函数RFC_READ_TABLE从表VBRK获取数据,但始终会得到数据缓冲区超出异常。

final JCoConnection managedConnection2 = sapCoreJCoManagedConnectionFactory.getManagedConnection("JCoStateless",
        getClass().getName(), rfcDestination);

final JCoFunction function2 = managedConnection2.getFunction("RFC_READ_TABLE");

final JCoParameterList importParameterList2 = function2.getImportParameterList();

importParameterList2.setValue("QUERY_TABLE", "VBRK");
final JCoParameterList tableParameterList2 = function2.getTableParameterList();

final JCoTable optionsTable = tableParameterList2.getTable("OPTIONS");
String selectionFilter = "VBELN EQ '" + "0123456789" + "'";
optionsTable.appendRow();
optionsTable.setValue("TEXT", selectionFilter);

//execute function RFC_READ_TABLE
managedConnection2.execute(function2);

有人可以指出我的错误吗?

1 个答案:

答案 0 :(得分:4)

您收到此错误,因为所选字段不适合结构数据即TAB512。此外,功能模块 RFC_READ_TABLE 还限制每行数据读取是否超过512字节。

您已将 OPTIONS 应用于SELECT记录,但未使用 FIELDS 限制SELECTED字段。如果您将限制SELECTED字段,那么您将不会遇到错误Data Bufferededed。还建议使用 ROWCOUNT 限制记录数。