For you who want to working faster, just copy-paste and modified 🙂
Practically for display only report I just have to set data structure and add the get data logic.
* ==================================================================== *
* Program......: *
* Title........: *
* Author.......: *
* Date.........: *
* -------------------------------------------------------------------- *
* Description..: *
* -------------------------------------------------------------------- *
* Modification list.: *
* Date Author Description: *
* --/--/-- ------- ------------ *
* ==================================================================== *
REPORT ZTEMPLATE.
* -------------------------------------------------------------------- *
* M A C R O
* -------------------------------------------------------------------- *
DEFINE _set_text.
TRY.
lo_col ?= lo_columns->get_column( &1 ).
lo_col->set_short_text( &2 ).
lo_col->set_medium_text( &3 ).
lo_col->set_long_text( &4 ).
CATCH cx_salv_not_found.
ENDTRY.
END-OF-DEFINITION.
* -------------------------------------------------------------------- *
* G L O B A L V A R I A B L E
* -------------------------------------------------------------------- *
CLASS lcl_main DEFINITION DEFERRED.
TYPES: BEGIN OF ty_data,
field TYPE dummy,
END OF ty_data,
tt_data TYPE TABLE OF ty_data.
DATA: t_data TYPE tt_data,
go_main TYPE REF TO lcl_main.
* -------------------------------------------------------------------- *
* S E L E C T I O N S C R E E N
* -------------------------------------------------------------------- *
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
* SELECT-OPTIONS: so_xxx FOR table-field.
* PARAMETERS: p_xxx TYPE table-field.
SELECTION-SCREEN END OF BLOCK b1.
* -------------------------------------------------------------------- *
* C L A S S
* -------------------------------------------------------------------- *
CLASS lcl_main DEFINITION.
PUBLIC SECTION.
METHODS:
constructor,
get_data,
display_data.
PRIVATE SECTION.
DATA: lo_alv TYPE REF TO cl_salv_table.
METHODS:
set_columns,
set_events.
METHODS:
on_user_command FOR EVENT added_function OF cl_salv_events
IMPORTING e_salv_function.
* on_before_salv_function FOR EVENT before_salv_function OF cl_salv_events
* IMPORTING e_salv_function,
*
* on_after_salv_function FOR EVENT after_salv_function OF cl_salv_events
* IMPORTING e_salv_function,
*
* on_double_click FOR EVENT double_click OF cl_salv_events_table
* IMPORTING row column,
*
* on_link_click FOR EVENT link_click OF cl_salv_events_table
* IMPORTING row column.
ENDCLASS.
CLASS lcl_main IMPLEMENTATION.
METHOD constructor.
TRY.
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = lo_alv
CHANGING
t_table = t_data.
CATCH cx_salv_msg.
ENDTRY.
ENDMETHOD. " constructor
METHOD get_data.
ENDMETHOD. " get_data
METHOD display_data.
DATA(lo_functions) = lo_alv->get_functions( ).
lo_functions->set_all( abap_true ).
set_columns( ).
set_events( ).
lo_alv->display( ).
ENDMETHOD. " display_data
METHOD set_events.
DATA(lo_events) = lo_alv->get_event( ).
SET HANDLER me->on_user_command FOR lo_events.
* SET HANDLER me->on_before_salv_function FOR lo_events.
* SET HANDLER me->on_after_salv_function FOR lo_events.
* SET HANDLER me->on_double_click FOR lo_events.
* SET HANDLER me->on_link_click FOR lo_events.
ENDMETHOD. " set_events
METHOD set_columns.
DATA: lo_col TYPE REF TO cl_salv_column_table.
DATA(lo_columns) = lo_alv->get_columns( ).
lo_columns->set_optimize( 'X' ).
_set_text 'FIELD' 'Short' 'Medium' 'Long'.
ENDMETHOD. " set_columns
METHOD on_user_command.
ENDMETHOD. " on_user_command
ENDCLASS.
* -------------------------------------------------------------------- *
* S T A R T O F S E L E C T I O N
* -------------------------------------------------------------------- *
START-OF-SELECTION.
PERFORM f_start.
* -------------------------------------------------------------------- *
* E N D O F S E L E C T I O N
* -------------------------------------------------------------------- *
END-OF-SELECTION.
PERFORM f_end.
* -------------------------------------------------------------------- *
* S U B R O U T I N E S
* -------------------------------------------------------------------- *
*&---------------------------------------------------------------------*
*& Form f_start
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM f_start .
CREATE OBJECT go_main.
go_main->get_data( ).
ENDFORM.
*&---------------------------------------------------------------------*
*& Form f_end
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM f_end .
go_main->display_data( ).
ENDFORM.
Thank you for come here and enjoy 🙂