segunda-feira, 26 de abril de 2010

How to dynamicaly select and print a table (example)

PROGRAM test.

PARAMETER:
table TYPE c LENGTH 30 DEFAULT 'SPFLI',
where TYPE c LENGTH 70 DEFAULT 'carrid = ''AA'''.

DATA:
data_ref TYPE REF TO data.

FIELD-SYMBOLS:
‹tab› TYPE ANY TABLE.


*&--------------------------------------------------------------------*
*& Form write_table
*&--------------------------------------------------------------------*
FORM write_table USING p_table TYPE ANY TABLE.

FIELD-SYMBOLS: ‹line› TYPE data,
‹field› TYPE data.

WRITE:/ '{'.
LOOP AT p_table ASSIGNING ‹line›.
WRITE /4 '('.
DO.
ASSIGN COMPONENT sy-index OF STRUCTURE ‹line› TO ‹field›.
IF sy-subrc ‹› 0.
EXIT.
ENDIF.
WRITE /8 ‹field›.
ENDDO. "loop a componente
WRITE /4 ')'.
ENDLOOP. "loop a tabela
WRITE / '}'.
ENDFORM. "write_table

START-OF-SELECTION.
CREATE DATA data_ref TYPE TABLE OF (table).
ASSIGN data_ref->* TO ‹tab›.
SELECT * FROM (table) INTO TABLE ‹tab› WHERE (where).
PERFORM write_table USING ‹tab›.

Sem comentários:

Enviar um comentário