Classic Lists & ALV
Formatting: COLOR, INTENSIFIED, INVERSE, HOTSPOT, UNDER, NO-GAP, NO-ZERO, CURRENCY, UNIT, EDIT MASK, LEFT-JUSTIFIED.
18.1 Classic list output with WRITE
Formatting: COLOR, INTENSIFIED, INVERSE, HOTSPOT, UNDER, NO-GAP, NO-ZERO, CURRENCY, UNIT, EDIT MASK, LEFT-JUSTIFIED. SKIP, ULINE, NEW-PAGE, FORMAT control layout. Up to 20 detail lists (sy-lsind). Lists are not available in ABAP Cloud.
TOP-OF-PAGE.
WRITE: / 'Carrier', 10 'Connection', 25 'Date', 40 'Price'.
ULINE.
START-OF-SELECTION.
LOOP AT gt_flights INTO DATA(ls_f).
WRITE: / ls_f-carrid COLOR COL_KEY,
10 ls_f-connid,
25 ls_f-fldate,
40 ls_f-price CURRENCY ls_f-currency.
HIDE: ls_f-carrid, ls_f-connid. " remember values for drill-down
ENDLOOP.
AT LINE-SELECTION.
WRITE: / 'You selected', ls_f-carrid, ls_f-connid. " secondary list, sy-lsind = 118.2 ALV overview
ALV (ABAP List Viewer) displays tables with sorting, filtering, totals, layouts, and Excel export for free.
REUSE_ALV_GRID_DISPLAY / _LIST_DISPLAY Function modules, field catalog Legacy, still common OO, needs a screen + container Editable grids, complex dialogs CL_SALV_TABLE (SALV object model) OO, simple, no field catalog needed Recommended for read-only reports ALV with Integrated Data Access on HANA Huge data sets, paging pushed to DB Fiori elements list report Browser, RAP/OData
18.3 REUSE_ALV_GRID_DISPLAY (legacy)
DATA lt_fcat TYPE slis_t_fieldcat_alv.
DATA ls_layout TYPE slis_layout_alv.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
ct_fieldcat = lt_fcat.
ls_layout-zebra = abap_true.
ls_layout-colwidth_optimize = abap_true.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = ls_layout
it_fieldcat = lt_fcat
TABLES
t_outtab = gt_flights
EXCEPTIONS
program_error = 1
OTHERS = 2.18.4 CL_SALV_TABLE (recommended)
Event handling (e.g. double-click):
DATA lo_alv TYPE REF TO cl_salv_table.
TRY.
cl_salv_table=>factory( IMPORTING r_salv_table = lo_alv
CHANGING t_table = gt_flights ).
lo_alv->get_functions( )->set_all( abap_true ). " toolbar
lo_alv->get_columns( )->set_optimize( abap_true ).
lo_alv->get_display_settings( )->set_striped_pattern( abap_true ).
lo_alv->get_display_settings( )->set_list_header( 'Flights' ).
DATA(lo_col) = CAST cl_salv_column_table( lo_alv->get_columns( )->get_column( 'PRICE' ) ).
lo_col->set_long_text( 'Ticket price' ).
lo_alv->get_columns( )->get_column( 'MANDT' )->set_technical( abap_true ). " hide
lo_alv->get_aggregations( )->add_aggregation( columnname = 'PAYMENTSUM' ).
lo_alv->get_sorts( )->add_sort( columnname = 'CARRID' subtotal = abap_true ).
lo_alv->get_layout( )->set_key( VALUE #( report = sy-repid ) ).
lo_alv->get_layout( )->set_save_restriction( if_salv_c_layout=>restrict_none ).
lo_alv->display( ).
CATCH cx_salv_msg cx_salv_not_found cx_salv_data_error cx_salv_existing INTO DATA(lx_salv).
MESSAGE lx_salv TYPE 'I' DISPLAY LIKE 'E'.
ENDTRY.CLASS lcl_events DEFINITION.
PUBLIC SECTION.
METHODS on_double_click FOR EVENT double_click OF cl_salv_events_table
IMPORTING row column.
ENDCLASS.
CLASS lcl_events IMPLEMENTATION.
METHOD on_double_click.
MESSAGE |Row { row }, column { column }| TYPE 'I'.
ENDMETHOD.
ENDCLASS.
" after factory:
DATA(lo_handler) = NEW lcl_events( ).
SET HANDLER lo_handler->on_double_click FOR lo_alv->get_event( ).18.5 ALV with IDA (HANA)
Only the visible rows are fetched; sorting, filtering, and aggregation run in the database.
cl_salv_gui_table_ida=>create( iv_table_name = 'SFLIGHT' )->fullscreen( )->display( ).
cl_salv_gui_table_ida=>create_for_cds_view( 'ZI_SALESORDER' )->fullscreen( )->display( ).