Anonymous написал(а):
Более развёрнуто: у меня есть таблица Т1 с фиксированным числом столбцов, например: A,B,C,D, Е. Необходимо получить таблицу Т2 с заранее не определённым набором столбцов из Т1, например: А,С,В.
Таблицу Т2 я создаю динамически, с необходимвым набором столбцов из Т1. Но как их потом заполнить значениями?
MOVE-CORRESPONDING Т1 ТО <T2> не прокатывает, говорит что <T2> не внутрення таблица с хеадер лайном, <T2>[] тоже не катит. Как быть???
Если я правильно понял проблему, то как-нибудь так:
Code:
DATA:
gs_mara2 TYPE REF TO data
.
DATA:
gt_mara TYPE TABLE OF mara,
gt_fcat TYPE lvc_t_fcat,
gt_mara2 TYPE REF TO data
.
FIELD-SYMBOLS:
<gs_mara> TYPE mara,
<gs_mara2> TYPE ANY,
<gt_mara2> TYPE STANDARD TABLE
.
SELECT *
INTO TABLE gt_mara
UP TO 100 ROWS
FROM mara.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'MARA'
CHANGING
ct_fieldcat = gt_fcat.
DELETE gt_fcat WHERE fieldname <> 'MATNR' AND
fieldname <> 'MATKL' AND
fieldname <> 'MEINS'.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = gt_fcat
IMPORTING
ep_table = gt_mara2.
ASSIGN gt_mara2->* TO <gt_mara2>.
CREATE DATA gs_mara2 LIKE LINE OF <gt_mara2>.
ASSIGN gs_mara2->* TO <gs_mara2>.
LOOP AT gt_mara ASSIGNING <gs_mara>.
CLEAR <gs_mara2>.
MOVE-CORRESPONDING <gs_mara> TO <gs_mara2>.
APPEND <gs_mara2> TO <gt_mara2>.
ENDLOOP.