Я довольно новичок в этом. В настоящее время я изучаю abap для своей работы, и у меня есть проблема, которая, похоже, не работает. Как мне приступить к созданию функционального модуля, который принимает любую внутреннюю таблицу и записывает ее на экран? Я ищу очень общее решение, которое может работать с любым типом itab в качестве входных данных.Как читать и печатать общий текст в abap?
1
A
ответ
5
Это точная причина, по которой SAP разработала ALV (просмотрщик списка ABAP). Одним из самых коротких способов отображения любой (не вложенной) таблицы является следующее.
DATA: go_alv TYPE REF TO cl_salv_table.
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = go_alv
CHANGING
t_table = itab.
go_alv->display().
0
Это возможно, но вы должны думать о большом количестве вещей:
- ширины столбцов, динамически клеящих столбцы
- валюты поля/полей с единицами
- даты форматирование в многоязычном среда
- таблицы может содержать произвольные данные, в том числе вложенных таблиц
Все обстоятельства, это не тривиальная задача. Это лучше всего оставить на existing components.
1
Это был бы самый простой способ для таблицы, тип линии которой представляет собой только плоские объекты данных, взятые со страницы 33 из This SAP Development Guide.
FIELD-SYMBOLS: <row> TYPE ANY,
<comp> TYPE ANY.
LOOP AT itab INTO <row>.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE <row> TO <wa_comp>.
IF sy-subrc <> 0.
SKIP.
EXIT.
ENDIF.
WRITE <wa_comp>.
ENDDO.
ENDLOOP.
Более надежным способом было бы использовать самоанализ, содержащий Run-Time Type Services, набор классов, которые позволяют вникать в детали объекта данных. Это даст вам подробности, упомянутые vwegert. Еще лучший вариант - разместить его в сетке ALV.
Еще раз спасибо, это было очень полезно. –