ALV OO - CL_SALV_TABLE
Abordagem moderna e simplificada para ALVs usando orientação a objetos.
🔹 Exemplo Básico
REPORT z_alv_oo_salv.
DATA: lt_sflight TYPE TABLE OF sflight,
lo_alv TYPE REF TO cl_salv_table.
START-OF-SELECTION.
SELECT * FROM sflight INTO TABLE lt_sflight UP TO 100 ROWS.
TRY.
" Factory method cria instância do ALV
cl_salv_table=>factory(
IMPORTING r_salv_table = lo_alv
CHANGING t_table = lt_sflight ).
" Exibir
lo_alv->display( ).
CATCH cx_salv_msg INTO DATA(lx_error).
MESSAGE lx_error->get_text( ) TYPE 'E'.
ENDTRY.
🔹 Com Funcionalidades Ativadas
DATA: lo_functions TYPE REF TO cl_salv_functions_list,
lo_columns TYPE REF TO cl_salv_columns_table,
lo_display TYPE REF TO cl_salv_display_settings.
" Ativar todas as funções padrão (Excel, layout, filtros, etc.)
lo_functions = lo_alv->get_functions( ).
lo_functions->set_all( abap_true ).
" Otimizar colunas
lo_columns = lo_alv->get_columns( ).
lo_columns->set_optimize( abap_true ).
" Configurar título
lo_display = lo_alv->get_display_settings( ).
lo_display->set_list_header( 'Lista de Voos' ).
lo_display->set_striped_pattern( abap_true ). " Zebrado
lo_alv->display( ).
🔹 Alterar Propriedades de Colunas
DATA: lo_column TYPE REF TO cl_salv_column_table.
TRY.
" Obter coluna específica
lo_column ?= lo_columns->get_column( 'PRICE' ).
" Configurar
lo_column->set_short_text( 'Preço' ).
lo_column->set_medium_text( 'Preço do Voo' ).
lo_column->set_long_text( 'Preço Total do Voo' ).
CATCH cx_salv_not_found.
" Coluna não encontrada
ENDTRY.
💡 Vantagens do CL_SALV_TABLE
- Código mais limpo e OO
- Funcionalidades automáticas (Export, Sort, Filter)
- Melhor manutenibilidade