
Types: gty_data type ${my_table} ,
gty_tab_data TYPE STANDARD TABLE OF gty_data.
*data, solely for select-options.
data: gso_${my_table} type ${my_table}.
SELECTION-SCREEN BEGIN OF BLOCK sel_opt WITH FRAME TITLE text-t01.
SELECT-Options: so_${my_table_field} for gso_${my_table}-${my_table_field}.
SELECTION-SCREEN END OF BLOCK sel_opt.
SELECTION-SCREEN BEGIN OF BLOCK mode WITH FRAME TITLE text-t02.
PARAMETERS: pa_disp TYPE flag RADIOBUTTON GROUP mode DEFAULT 'X',
pa_proc TYPE flag RADIOBUTTON GROUP mode.
SELECTION-SCREEN END OF BLOCK mode.
CLASS lcl_report DEFINITION.
PUBLIC SECTION.
class-METHODS: init.
METHODS: get_data CHANGING ct_data TYPE gty_tab_data,
display_data CHANGING ct_data TYPE gty_tab_data,
process_data IMPORTING it_data TYPE gty_tab_data.
ENDCLASS.
CLASS lcl_report IMPLEMENTATION.
METHOD process_data.
FIELD-SYMBOLS: <data> LIKE LINE OF it_data.
CHECK it_data IS NOT INITIAL.
LOOP AT it_data ASSIGNING <data>.
*do something
ENDLOOP.
ENDMETHOD.
METHOD display_data.
DATA: lr_alv TYPE REF TO cl_salv_table.
DATA: lr_functions TYPE REF TO cl_salv_functions_list,
lr_layout TYPE REF TO cl_salv_layout,
ls_key TYPE salv_s_layout_key.
TRY.
CALL METHOD cl_salv_table=>factory
EXPORTING
list_display = if_salv_c_bool_sap=>false
IMPORTING
r_salv_table = lr_alv
CHANGING
t_table = ct_data.
##NO_HANDLER.
CATCH cx_salv_msg .
ENDTRY.
lr_layout = lr_alv->get_layout( ).
ls_key-report = sy-repid.
lr_layout->set_key( ls_key ).
lr_layout->set_default( abap_true ).
lr_layout->set_save_restriction( if_salv_c_layout=>restrict_none ).
lr_functions = lr_alv->get_functions( ).
lr_functions->set_all( abap_true ).
CALL METHOD lr_alv->display.
ENDMETHOD.
METHOD get_data.
select * from ${my_table} into CORRESPONDING FIELDS OF table ct_data UP TO 500 ROWS
where ${my_table_field} in so_${my_table_field}.
ENDMETHOD.
method init.
DATA: lt_data TYPE gty_tab_data,
lo_report TYPE REF TO lcl_report.
CREATE OBJECT lo_report.
lo_report->get_data( CHANGING ct_data = lt_data ).
check lt_data is not initial.
CASE abap_true.
WHEN pa_disp.
lo_report->display_data( changing ct_data = lt_data ).
WHEN pa_proc.
lo_report->process_data( EXPORTING it_data = lt_data ).
ENDCASE.
endmethod.
ENDCLASS.
START-OF-SELECTION.
lcl_report=>init( ).
Types: gty_data type ${my_table} ,
gty_tab_data TYPE STANDARD TABLE OF gty_data.
*solely for select-options.
data: gso_${my_table} type ${my_table}.
SELECTION-SCREEN BEGIN OF BLOCK sel_opt WITH FRAME TITLE text-t01.
SELECT-Options: so_${my_table_field} for gso_${my_table}-${my_table_field}.
SELECTION-SCREEN END OF BLOCK sel_opt.
SELECTION-SCREEN BEGIN OF BLOCK mode WITH FRAME TITLE text-t02.
PARAMETERS: pa_disp TYPE flag RADIOBUTTON GROUP mode DEFAULT 'X',
pa_proc TYPE flag RADIOBUTTON GROUP mode.
SELECTION-SCREEN END OF BLOCK mode.
CLASS lcl_report DEFINITION.
PUBLIC SECTION.
CLASS-METHODS: init.
METHODS: get_data CHANGING ct_data TYPE gty_tab_data,
display_data CHANGING ct_data TYPE gty_tab_data,
process_data IMPORTING it_data TYPE gty_tab_data.
ENDCLASS.
CLASS lcl_report IMPLEMENTATION.
METHOD process_data.
LOOP AT it_data ASSIGNING FIELD-SYMBOL(<data>).
*do something
ENDLOOP.
ENDMETHOD.
METHOD display_data.
TRY.
cl_salv_table=>factory( IMPORTING r_salv_table = data(lr_alv)
CHANGING t_table = ct_data ).
CATCH cx_salv_msg.
ENDTRY.
lr_alv->get_layout( )->set_key( VALUE #( report = sy-repid ) ).
lr_alv->get_layout( )->set_default( abap_true ).
lr_alv->get_layout( )->set_save_restriction( if_salv_c_layout=>restrict_none ).
lr_alv->get_functions( )->set_all( abap_true ).
CALL METHOD lr_alv->display.
ENDMETHOD.
METHOD get_data.
select * from ${my_table} into CORRESPONDING FIELDS OF table ct_data UP TO 500 ROWS
where ${my_table_field} in so_${my_table_field}.
ENDMETHOD.
METHOD init.
DATA: lt_data TYPE gty_tab_data,
lo_report TYPE REF TO lcl_report.
CREATE OBJECT lo_report.
lo_report->get_data( CHANGING ct_data = lt_data ).
CHECK lt_data IS NOT INITIAL.
CASE abap_true.
WHEN pa_disp.
lo_report->display_data( CHANGING ct_data = lt_data ).
WHEN pa_proc.
lo_report->process_data( EXPORTING it_data = lt_data ).
ENDCASE.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
lcl_report=>init( ).
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
3 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 | |
1 |