Uma maneira bastante simples para criar um report com ALV no SAP é utilizar a classe standard CL_SALV_TABLE.
Conforme podemos ver no exemplo abaixo, basicamente precisamos amarzenar os dados que queremos imprimir em uma tabela interna e depois passar esta tabela para a classe do ALV:
Como resultado do código, temos o ALV abaixo:
Conforme podemos ver no exemplo abaixo, basicamente precisamos amarzenar os dados que queremos imprimir em uma tabela interna e depois passar esta tabela para a classe do ALV:
DATA: go_alv TYPE REF TO cl_salv_table.
DATA: lr_columns TYPE REF TO cl_salv_columns_table.
DATA: lr_column TYPE REF TO cl_salv_column_table.
DATA: lr_functions TYPE REF TO cl_salv_functions_list.
DATA: gr_display TYPE REF TO cl_salv_display_settings.
DATA: gr_selections TYPE REF TO cl_salv_selections.
START-OF-SELECTION.
**Data Selection
SELECT a~carrid,
a~connid AS teste1,
a~fldate AS teste2
FROM sflight as a
INNER JOIN sbook as b ON ( a~carrid = b~carrid AND
a~connid = b~connid AND
a~fldate = b~fldate
)
INTO TABLE @DATA(it_carrid)
WHERE a~carrid EQ 'AA'
AND a~connid EQ 17
AND a~fldate EQ '20100901'.
SORT it_carrid BY carrid.
**ALV Class
TRY.
cl_salv_table=>factory(
IMPORTING
r_salv_table = go_alv
CHANGING
t_table = it_carrid[] ). "Internal Table
CATCH cx_salv_msg.
ENDTRY.
**Enable function buttons
lr_functions = go_alv->get_functions( ).
lr_functions->set_all( 'X' ).
**Optimize Column
lr_columns = go_alv->get_columns( ).
lr_columns->set_optimize( 'X' ).
**Enable Zebra style
gr_display = go_alv->get_display_settings( ).
gr_display->set_striped_pattern( cl_salv_display_settings=>true ).
**Display ALV
go_alv->display( ).
Como resultado do código, temos o ALV abaixo:
