Skip to content

Instantly share code, notes, and snippets.

@grknylmz
Created September 20, 2017 07:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save grknylmz/75f03bcd81bc58d5d3fcb57f8d2ac859 to your computer and use it in GitHub Desktop.
Save grknylmz/75f03bcd81bc58d5d3fcb57f8d2ac859 to your computer and use it in GitHub Desktop.
REPORT zoop_demo.
CLASS lcl_persistent DEFINITION ABSTRACT.
PUBLIC SECTION.
DATA : lt_data TYPE REF TO data.
METHODS: constructor IMPORTING !iv_table_name TYPE string,
get_data,
show_data ABSTRACT.
PROTECTED SECTION.
DATA : lv_table_name TYPE string.
ENDCLASS.
CLASS lcl_persistent IMPLEMENTATION.
METHOD constructor.
lv_table_name = iv_table_name.
ENDMETHOD.
METHOD get_data.
FIELD-SYMBOLS : <fs_itab> TYPE ANY TABLE.
CREATE DATA lt_data TYPE TABLE OF (me->lv_table_name).
ASSIGN lt_data->* TO <fs_itab>.
SELECT * FROM (me->lv_table_name) INTO TABLE @<fs_itab> UP TO 10 ROWS.
ENDMETHOD.
ENDCLASS.
CLASS lcl_alv_grid DEFINITION INHERITING FROM lcl_persistent FINAL.
PUBLIC SECTION.
METHODS : show_data REDEFINITION.
PROTECTED SECTION.
PRIVATE SECTION.
DATA : lo_alv TYPE REF TO cl_salv_table, "Object of class cl-salv_table
lv_msg TYPE REF TO cx_salv_msg, "#EC NEEDED "Catching exceptions
lo_function TYPE REF TO cl_salv_functions_list. "For handling double click event
ENDCLASS.
CLASS lcl_alv_grid IMPLEMENTATION.
METHOD show_data.
FIELD-SYMBOLS : <fs_alv_tab> TYPE ANY TABLE.
ASSIGN me->lt_data->* TO <fs_alv_tab>.
TRY.
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = lo_alv
CHANGING
t_table = <fs_alv_tab>.
CATCH cx_salv_msg INTO lv_msg. "#EC NO_HANDLER
ENDTRY.
lo_alv->display( ).
ENDMETHOD.
ENDCLASS.
CLASS lcl_alv_writer DEFINITION INHERITING FROM lcl_persistent FINAL.
PUBLIC SECTION.
METHODS : show_data REDEFINITION.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS lcl_alv_writer IMPLEMENTATION.
METHOD show_data.
FIELD-SYMBOLS : <fs_writer_tab> TYPE ANY TABLE.
ASSIGN me->lt_data->* TO <fs_writer_tab>.
LOOP AT <fs_writer_tab> ASSIGNING FIELD-SYMBOL(<fs_line>).
WRITE / : <fs_line>.
ENDLOOP.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA(lo_grid) = NEW lcl_alv_grid( iv_table_name = 'BUT000' ).
lo_grid->get_data( ).
lo_grid->show_data( ).
DATA(lo_writer) = NEW lcl_alv_writer( iv_table_name = 'ADR2' ).
lo_grid->get_data( ).
lo_grid->show_data( ).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment