Mostrar mensagens com a etiqueta internal table. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta internal table. Mostrar todas as mensagens

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.

segunda-feira, 22 de março de 2010

Upload txt/excel files to internal table (example)

DATA: file_path TYPE string.
DATA: len TYPE i.

file_path = l_file.
TRANSLATE file_path TO UPPER CASE.
len = STRLEN( file_path ) - 3.

CLEAR tabi.

IF file_path+len(3) = 'XLS'.
break slopes.

DATA t_excel TYPE alsmex_tabline OCCURS 0 WITH HEADER LINE.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = l_file
i_begin_col = 1
i_begin_row = 1
i_end_col = 2
i_end_row = 50
TABLES
intern = t_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.


LOOP AT t_excel.
CASE t_excel-col.
WHEN 1.
s_tabi-matnr = t_excel-value.
WHEN 2.
s_tabi-erfmg = t_excel-value.
ENDCASE.
AT END OF row.
APPEND s_tabi to tabi.
CLEAR s_tabi.
ENDAT.
ENDLOOP.


ELSE.




CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = file_path
filetype = 'ASC'
has_field_separator = 'X'
CHANGING
data_tab = tabi.
ENDIF.