Единственный способ, которым я мог бы получить эту работу является функция 'DDIF_FIELDINFO_GET. Он получает имя каталога структуры, таблицы или типа и возвращает список своих полей и множество полезных сведений о них, таких как элемент данных поля, описание, длина и т. Д. Вот простой пример:
DATA: lt_fields_info TYPE dfies_tab.
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = 'MARA'
TABLES
dfies_tab = lt_fields_info[]
EXCEPTIONS
not_found = 1
internal_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Handle errors.
ENDIF.
LOOP AT lt_fields_info[] INTO ls_field_info.
" Dynamically printing the fields' details:
WRITE:/'Field name: ',
ls_field_info-fieldname,
'Field data element: ',
ls_field_info-rollname,
'Field description: ',
ls_field_info-fieldtext.
ENDLOOP.
Leelaprasad Kolapalli (извините, я не могу узнать, как помечать имя пользователя в моем комментарии) предложил использовать функцию «DD_GET_FIELD_INFO». К сожалению, это не сработало для некоторых таблиц DDIC, без видимых причин. Это побудило меня искать Google для аналогичной функции, а затем я нашел лучшую. К сожалению, обе функции не работают с локальными (внутренними) структурами, как определено в классах или включаются, поэтому я не знаю, как получить данные полей для них.
Я не мог получить ни один из этих классов/методов для работы, потому что они либо вызвали ошибку преобразования, либо просто не указали мне имя поля вообще. Они рассказали мне значение поля и базовый тип, которые НЕ являются тем, что пытаются сделать у меня с OP и мной.
ASSIGN COMPONENT
и все его варианты также не помогают. Я не могу сделать ASSIGN COMPONENT 'MANDT' OF STRUCTURE ...
, потому что я не знаю названия поля! В моем конкретном случае на работе я использую позицию (индекс) поля в структуре, а команда - ASSIGN COMPONENT sy-index OF STRUCTURE ...
.
Я исследовал сеть и нашел около десяти разных сообщений с множеством вводящих в заблуждение ответов и людей, которые действительно не читали вопросы или не понимали их, и я пробовал всех из них без везения, пока не нашел выше функция. Надеюсь, это полезно для кого-то, поскольку это было полезно для меня.
Прошу прокомментировать – Subham
Прочитайте документацию, с которой я связан, попробуйте, и если вы столкнулись с конкретной проблемой, вернитесь с конкретным вопросом. Вы не упомянули, чего вы пытаетесь достичь, и я не собираюсь тратить время на угадывание. – vwegert
извинения за неясность. Я хотел бы получить имена полей из структуры и отобразить их. Что я делаю неправильно здесь –
Subham