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: