Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 2

*&---------------------------------------------------------------------*

*& Report zstkoes_salv_sample2


*&---------------------------------------------------------------------*
*& CREATE screen 100 with custom container "SALV" and flow logic
*&
*& PROCESS BEFORE OUTPUT.
*& MODULE get_data.
*& MODULE status_0100.
*& MODULE salv.
*& PROCESS AFTER INPUT.
*& MODULE user_command_0100.
*&---------------------------------------------------------------------*
REPORT zstkoes_salv_sample4.

CLASS lcl_salv_helper DEFINITION INHERITING FROM cl_salv_model_base.


PUBLIC SECTION.

CLASS-METHODS:
get_alv_from_salv
IMPORTING
io_model TYPE REF TO cl_salv_model
RETURNING
VALUE(ro_grid) TYPE REF TO cl_gui_alv_grid.
ENDCLASS.

CLASS lcl_salv_helper IMPLEMENTATION.


METHOD get_alv_from_salv.

IF io_model->model = if_salv_c_model=>table.
TRY.
IF abap_true = cl_wdy_wb_reflection_helper=>is_instance_of( object =
io_model->r_controller->r_adapter
type_name =
'CL_SALV_GRID_ADAPTER' ).

DATA(o_grid_adap) = CAST cl_salv_grid_adapter( io_model->r_controller-


>r_adapter ).

IF o_grid_adap IS BOUND.
ro_grid = o_grid_adap->get_grid( ).
ENDIF.
ELSEIF abap_true = cl_wdy_wb_reflection_helper=>is_instance_of( object =
io_model->r_controller->r_adapter
type_name
= 'CL_SALV_FULLSCREEN_ADAPTER' ).

DATA(o_fs_adap) = CAST cl_salv_fullscreen_adapter( io_model-


>r_controller->r_adapter ).

IF o_fs_adap IS BOUND.
ro_grid = o_fs_adap->get_grid( ).
ENDIF.
ENDIF.
CATCH cx_root.
ENDTRY.
ENDIF.
ENDMETHOD.

ENDCLASS.
MODULE status_0100 OUTPUT.
SET PF-STATUS '100'.
SET TITLEBAR '100'.
ENDMODULE.
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'BACK' OR 'CANC' OR 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
MODULE get_data OUTPUT.
* Daten holen
SELECT *
INTO TABLE @DATA(it_data)
FROM alv_t_t2.

ENDMODULE.
MODULE salv OUTPUT.

TRY.
cl_salv_table=>factory(
EXPORTING
r_container = NEW cl_gui_custom_container( 'SALV' )
container_name = 'SALV'
IMPORTING
r_salv_table = DATA(lo_salv_table)
CHANGING
t_table = it_data ).

lo_salv_table->get_functions( )->set_all( ).

lo_salv_table->display( ).

DATA(o_alv_grid) = lcl_salv_helper=>get_alv_from_salv( lo_salv_table ).


IF o_alv_grid IS BOUND.
o_alv_grid->set_frontend_layout( is_layout = VALUE #( no_totline = 'X' ) ).
ENDIF.
CATCH cx_root INTO DATA(e_text).
WRITE: / e_text->get_text( ).
ENDTRY.

ENDMODULE.

START-OF-SELECTION.

CALL SCREEN 100.

You might also like