02 março 2020

ALV simples com CL_SALV_TABLE

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:






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: