sexta-feira, 9 de abril de 2010

How to write any table (example)

*&---------------------------------------------------------------------*
*& Report ZSL_EX_6
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT zsl_ex_6.

*&--------------------------------------------------------------------*
*& Form write_table
*&--------------------------------------------------------------------*
* text
*---------------------------------------------------------------------*
* -->P_TABLE text
*---------------------------------------------------------------------*
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


TYPES: BEGIN OF my_line_type,
name TYPE string,
birth_date TYPE d,
salary TYPE p DECIMALS 2,
END OF my_line_type,

my_table_type TYPE HASHED TABLE OF my_line_type
WITH UNIQUE KEY name birth_date.

DATA: my_wa TYPE my_line_type,
my_table TYPE my_table_type.

*&--------------------------------------------------------------------*
START-OF-SELECTION.
*&--------------------------------------------------------------------*
my_wa-name = 'Peter Smith'.
my_wa-birth_date = '19640303'.
my_wa-salary = '20000.00'.
INSERT my_wa INTO TABLE my_table.

my_wa-name = 'April May June'.
my_wa-birth_date = '19660401'.
my_wa-salary = '1000000.00'.
INSERT my_wa INTO TABLE my_table.

my_wa-name = 'Maria albertina'.
my_wa-birth_date = '19640601'.
my_wa-salary = '1.00'.
INSERT my_wa INTO TABLE my_table.

PERFORM write_table USING my_table.

Sem comentários:

Enviar um comentário