JCo RFC_READ_TABLE Превышен буфер данных - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь получить данные из таблицы VBRK через функцию RFC_READ_TABLE, но всегда получаю исключение превышения буфера данных.

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 голосов
/ 15 января 2019

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

Вы применили ОПЦИИ для ВЫБРАТЬ записи, но вы не ограничивали ВЫБРАННЫЕ поля, используя ПОЛЯ . Если вы ограничите поля SELECTED, вы не столкнетесь с ошибкой Data Buffer Exceeded. Также рекомендуется ограничить количество записей, используя ROWCOUNT .

...