Cach 1:
Selection screen:
CLASS lcl_handle_events DEFINITION.
PUBLIC SECTION.
METHODS:
on_user_command FOR EVENT added_function OF cl_salv_events
IMPORTING e_salv_function.
ENDCLASS. "lcl_handle_events DEFINITION
CLASS lcl_handle_events IMPLEMENTATION.
METHOD on_user_command.
CALL SCREEN 200.
LEAVE TO SCREEN 0.
ENDMETHOD.
ENDCLASS. "lcl_handle_events IMPLEMENTATION
DATA: g_okcode TYPE syucomm.
DATA: gr_container TYPE REF TO cl_gui_custom_container.
PARAMETERS p_carrid TYPE sflight-carrid DEFAULT 'AA'.
START-OF-SELECTION.
CALL SCREEN 100.
Screen 100
PROCESS BEFORE OUTPUT.
MODULE status_0100.
*
PROCESS AFTER INPUT.
MODULE exit.
MODULE status_0100 OUTPUT.
SET PF-STATUS '100'.
IF gr_container IS NOT BOUND.
SELECT * FROM sflight INTO TABLE @DATA(flights) WHERE carrid = @p_carrid.
IF cl_salv_table=>is_offline( ) EQ if_salv_c_bool_sap=>false.
CREATE OBJECT gr_container
EXPORTING
container_name = 'CUSTOM_CONTAINER'.
ENDIF.
cl_salv_table=>factory(
EXPORTING
r_container = gr_container
IMPORTING
r_salv_table = DATA(salv) " Basis Class Simple ALV Tables
CHANGING
t_table = flights
).
DATA(handle_events) = NEW lcl_handle_events( ).
SET HANDLER handle_events->on_user_command FOR salv->get_event( ).
salv->get_functions( )->set_all( 'X' ).
TRY .
salv->get_functions( )->add_function(
EXPORTING
name = 'TEST'
text = 'Test'
tooltip = 'Test'
position = if_salv_c_function_position=>right_of_salv_functions
).
CATCH cx_salv_existing cx_salv_wrong_call.
EXIT.
ENDTRY.
salv->display( ).
ENDIF.
ENDMODULE.
MODULE exit INPUT.
CASE g_okcode.
WHEN 'BACK' OR 'EXIT' OR 'CANC'.
SET SCREEN 0.
LEAVE SCREEN.
ENDCASE.
ENDMODULE.
Screen 200
PROCESS BEFORE OUTPUT.
MODULE status_0200.
*
PROCESS AFTER INPUT.
MODULE exit.
MODULE status_0200 OUTPUT.
SET PF-STATUS '200'.
ENDMODULE.
GUI Status
CLASS lcl_handle_events DEFINITION.
PUBLIC SECTION.
METHODS:
on_user_command FOR EVENT added_function OF cl_salv_events
IMPORTING e_salv_function.
ENDCLASS. "lcl_handle_events DEFINITION
CLASS lcl_handle_events IMPLEMENTATION.
METHOD on_user_command.
g_log = 'abc'.
LEAVE TO SCREEN 0.
ENDMETHOD.
ENDCLASS. "lcl_handle_events IMPLEMENTATION
PARAMETERS p_carrid TYPE sflight-carrid DEFAULT 'AA'.
START-OF-SELECTION.
SELECT * FROM sflight INTO TABLE @DATA(flights) WHERE carrid = @p_carrid.
cl_salv_table=>factory(
IMPORTING
r_salv_table = DATA(salv) " Basis Class Simple ALV Tables
CHANGING
t_table = flights
).
DATA(handle_events) = NEW lcl_handle_events( ).
SET HANDLER handle_events->on_user_command FOR salv->get_event( ).
salv->set_screen_status(
pfstatus = 'STAT'
report = sy-repid
set_functions = salv->c_functions_all ).
salv->display( ).
END-OF-SELECTION.
WRITE: g_log.
GUI status:
Selection screen:
CLASS lcl_handle_events DEFINITION.
PUBLIC SECTION.
METHODS:
on_user_command FOR EVENT added_function OF cl_salv_events
IMPORTING e_salv_function.
ENDCLASS. "lcl_handle_events DEFINITION
CLASS lcl_handle_events IMPLEMENTATION.
METHOD on_user_command.
CALL SCREEN 200.
LEAVE TO SCREEN 0.
ENDMETHOD.
ENDCLASS. "lcl_handle_events IMPLEMENTATION
DATA: g_okcode TYPE syucomm.
DATA: gr_container TYPE REF TO cl_gui_custom_container.
PARAMETERS p_carrid TYPE sflight-carrid DEFAULT 'AA'.
START-OF-SELECTION.
CALL SCREEN 100.
Screen 100
PROCESS BEFORE OUTPUT.
MODULE status_0100.
*
PROCESS AFTER INPUT.
MODULE exit.
MODULE status_0100 OUTPUT.
SET PF-STATUS '100'.
IF gr_container IS NOT BOUND.
SELECT * FROM sflight INTO TABLE @DATA(flights) WHERE carrid = @p_carrid.
IF cl_salv_table=>is_offline( ) EQ if_salv_c_bool_sap=>false.
CREATE OBJECT gr_container
EXPORTING
container_name = 'CUSTOM_CONTAINER'.
ENDIF.
cl_salv_table=>factory(
EXPORTING
r_container = gr_container
IMPORTING
r_salv_table = DATA(salv) " Basis Class Simple ALV Tables
CHANGING
t_table = flights
).
DATA(handle_events) = NEW lcl_handle_events( ).
SET HANDLER handle_events->on_user_command FOR salv->get_event( ).
salv->get_functions( )->set_all( 'X' ).
TRY .
salv->get_functions( )->add_function(
EXPORTING
name = 'TEST'
text = 'Test'
tooltip = 'Test'
position = if_salv_c_function_position=>right_of_salv_functions
).
CATCH cx_salv_existing cx_salv_wrong_call.
EXIT.
ENDTRY.
salv->display( ).
ENDIF.
ENDMODULE.
MODULE exit INPUT.
CASE g_okcode.
WHEN 'BACK' OR 'EXIT' OR 'CANC'.
SET SCREEN 0.
LEAVE SCREEN.
ENDCASE.
ENDMODULE.
Screen 200
PROCESS BEFORE OUTPUT.
MODULE status_0200.
*
PROCESS AFTER INPUT.
MODULE exit.
MODULE status_0200 OUTPUT.
SET PF-STATUS '200'.
ENDMODULE.
GUI Status
Cach 2
Code:
DATA g_log TYPE string.
CLASS lcl_handle_events DEFINITION.
PUBLIC SECTION.
METHODS:
on_user_command FOR EVENT added_function OF cl_salv_events
IMPORTING e_salv_function.
ENDCLASS. "lcl_handle_events DEFINITION
CLASS lcl_handle_events IMPLEMENTATION.
METHOD on_user_command.
g_log = 'abc'.
LEAVE TO SCREEN 0.
ENDMETHOD.
ENDCLASS. "lcl_handle_events IMPLEMENTATION
PARAMETERS p_carrid TYPE sflight-carrid DEFAULT 'AA'.
START-OF-SELECTION.
SELECT * FROM sflight INTO TABLE @DATA(flights) WHERE carrid = @p_carrid.
cl_salv_table=>factory(
IMPORTING
r_salv_table = DATA(salv) " Basis Class Simple ALV Tables
CHANGING
t_table = flights
).
DATA(handle_events) = NEW lcl_handle_events( ).
SET HANDLER handle_events->on_user_command FOR salv->get_event( ).
salv->set_screen_status(
pfstatus = 'STAT'
report = sy-repid
set_functions = salv->c_functions_all ).
salv->display( ).
END-OF-SELECTION.
WRITE: g_log.
GUI status:
Comments
Post a Comment