На самом деле здесь есть два вопроса.
first one - это ошибка активации таблицы QMEL
:
Поле ZZCLUSTD
не имеет поля предшествующей длины типа INT4
Таблица DDI C, содержащая столбец типа LCHR и LRAW, требует , которому всегда сразу предшествует столбец типа INT2 или INT4 (хотя в сообщении указано только INT4).
Вопрос second касается того, как прочитай такое поле. Оба столбца всегда должны читаться в одно и то же время, а столбец INT2 / INT4 должен читаться перед столбцом LCHR / LRAW. Единственная ссылка, которую я смог найти, чтобы объяснить это ограничение, находится в примечании 302788 - поля LCHR / LRAW в таблицах логических кластеров .
Столбец INT2 STXL
таблицы с именем CLUSTR
работает следующий код:
TYPES: BEGIN OF ty_viqmel_iflos,
clustr TYPE stxl-clustr, "INT2
zzclustd TYPE stxl-clustd, "LCHR
END OF ty_viqmel_iflos.
DATA lt_viqmel_iflos TYPE TABLE OF ty_viqmel_iflos.
SELECT S~CLUSTR, S~CLUSTD AS ZZCLUSTD
INTO CORRESPONDING FIELDS OF TABLE @lt_viqmel_iflos
FROM viqmel AS v
INNER JOIN stxl AS S
ON s~tdname = v~qmnum
UP TO 100 ROWS.
Примечание: в вашем вопросе есть путаница, когда вы ссылаетесь на CLUSTD
с STXL
и ZZCLUSTD
с QMEL
. Я не понимаю, чего именно вы пытаетесь достичь.
Примечание: если вы хотите прочитать тексты из таблицы STXL
, есть другое решение, вызвав функциональный модуль READ_TEXT_TABLE
или * 1045. * Если вы предпочитаете. Они были сделаны доступными в примечании 2261311. Если у вас нет или вы не можете установить эти функциональные модули, вы можете попробовать this gist , который делает то же самое. Он также содержит ссылку на другое обсуждение.
Примечание: для информации, если быть более точным, LRAW содержит байты, а не символы, а для кластеров данных (случай STXL
) эти байты соответствуют любым значениям. (символы в случае STXL
) заархивированы с инструкцией EXPORT
и должны быть распакованы с IMPORT
`.