|
Código fuente -
Ejemplos
|
|
Sábado, 05 de Junio de 2004 02:11 |
Crear tabla interna en tiempo de ejecución
REPORT YVOL_DYNATAB.
TYPE-POOLS: SLIS.
DATA: IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,
IS_FCAT LIKE LINE OF IT_FCAT.
DATA: IT_FIELDCAT TYPE LVC_T_FCAT,
IS_FIELDCAT LIKE LINE OF IT_FIELDCAT.
DATA: NEW_TABLE TYPE REF TO DATA.
DATA: NEW_LINE TYPE REF TO DATA.
FIELD-SYMBOLS: <L_TABLE> TYPE ANY TABLE,
<L_LINE> TYPE ANY,
<L_FIELD> TYPE ANY.
DATA: BEGIN OF itab OCCURS 0,
N1 LIKE MARA-MATNR,
n2 LIKE MARA-MATNR,
n3 LIKE MARA-MATNR,
n4 LIKE MARA-MATNR,
END OF itab.
break-point.
* Build fieldcat
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_STRUCTURE_NAME = 'SYST'
CHANGING
CT_FIELDCAT = IT_FCAT[].
LOOP AT IT_FCAT INTO IS_FCAT WHERE NOT REPTEXT_DDIC IS INITIAL.
MOVE-CORRESPONDING IS_FCAT TO IS_FIELDCAT.
IS_FIELDCAT-FIELDNAME = IS_FCAT-FIELDNAME.
IS_FIELDCAT-REF_FIELD = IS_FCAT-FIELDNAME.
IS_FIELDCAT-REF_TABLE = IS_FCAT-REF_TABNAME.
APPEND IS_FIELDCAT TO IT_FIELDCAT.
ENDLOOP.
* Create a new Table
CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
EXPORTING
* IT_OUTTAB = itab
IT_FIELDCATALOG = IT_FIELDCAT
IMPORTING
EP_TABLE = NEW_TABLE.
* Create a new Line with the same structure of the table.
ASSIGN NEW_TABLE->* TO <L_TABLE>.
CREATE DATA NEW_LINE LIKE LINE OF <L_TABLE>.
ASSIGN NEW_LINE->* TO <L_LINE>.
* Test it...
DO 30 TIMES.
ASSIGN COMPONENT 'SUBRC' OF STRUCTURE <L_LINE> TO <L_FIELD>.
<L_FIELD> = SY-INDEX.
INSERT <L_LINE> INTO TABLE <L_TABLE>.
ENDDO.
LOOP AT <L_TABLE> ASSIGNING <L_LINE>.
ASSIGN COMPONENT 'SUBRC' OF STRUCTURE <L_LINE> TO <L_FIELD>.
WRITE <L_FIELD>.
ENDLOOP.
|