Буфер данных JCo RFC_READ_TABLE превышен

Я пытаюсь получить данные из таблицы VBRK с помощью функции RFC_READ_TABLE, но всегда получаю исключение Data Buffer Exceeded.

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);

Кто-нибудь может указать на мою ошибку?


person pr191ex    schedule 14.01.2019    source источник
comment
Возможный дубликат Почему я получил DATA_BUFFER_EXCEED при вызове RFC_READ_TABLE для CDPOS в java   -  person Sandra Rossi    schedule 15.01.2019


Ответы (1)


Вы получаете эту ошибку, потому что выбранное поле не вписывается в структуру DATA, т.е. TAB512. Кроме того, функциональный модуль RFC_READ_TABLE также ограничивает, если чтение превышает 512 байтов на строку данных.

Вы применили OPTIONS к записям SELECT, но не ограничили SELECTED поля с помощью FIELDS. Если вы ограничите SELECTED поля, то вы не столкнетесь с ошибкой Data Buffer Exceeded. Также рекомендуется ограничить количество записей с помощью ROWCOUNT.

person Umar Abdullah    schedule 15.01.2019