*&---------------------------------------------------------------------* *& Report RSDEMO_CONTEXT_MENU_LIST * *& * *&---------------------------------------------------------------------* *& * *& * *&---------------------------------------------------------------------* REPORT RSDEMO_CONTEXT_MENU_LIST . tables spfli. *set pf-status 'LIST'. select * from spfli. WRITE: / spfli-carrid, spfli-connid, spfli-cityfrom, spfli-airpfrom, spfli-cityto, spfli-airpto, spfli-fltime, spfli-deptime, spfli-arrtime. endselect. form on_ctmenu_request using p_menu type ref to cl_Ctmenu. call method p_menu->LOAD_GUI_STATUS exporting program = 'RSDEMO_CONTEXT_MENU_LIST' STATUS = 'CONTEXT' MENU = p_menu exceptions READ_ERROR = 1. endform.
on screen
*&---------------------------------------------------------------------* *& Report RSDEMO_CONTEXT_MENU_DYNPR * *& * *&---------------------------------------------------------------------* *& * *& * *&---------------------------------------------------------------------* REPORT rsdemo_context_menu_dynpr . DATA ok_code LIKE sy-ucomm. CONTROLS table_control TYPE TABLEVIEW USING SCREEN 100. tables spfli. data spfli_wa like spfli. DATA spfli_itab LIKE STANDARD TABLE OF spfli. DATA init. DATA mark. CALL SCREEN 100. *&---------------------------------------------------------------------* *& Module STATUS_0100 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE status_0100 OUTPUT. SET PF-STATUS 'STATUS_100'. SET TITLEBAR '100'. ENDMODULE. " STATUS_0100 OUTPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE user_command_0100 INPUT. CASE ok_code. WHEN 'CARRID'. MESSAGE i300(eu) WITH 'CARRID'. "#EC NOTEXT WHEN 'BOX_1'. MESSAGE i300(eu) WITH 'BOX_1'. "#EC NOTEXT WHEN 'TABLE_CONTROL'. MESSAGE i300(eu) WITH 'TABLE CONTROL'. "#EC NOTEXT WHEN 'TABLE_TITLE'. MESSAGE i300(eu) WITH 'TABLE CONTROL TITLE'. "#EC NOTEXT WHEN 'EXIT'. LEAVE PROGRAM. ENDCASE. ENDMODULE. " USER_COMMAND_0100 INPUT *&--------------------------------------------------------------------- *& Form Routine: setting context menu for CARRID *---------------------------------------------------------------------- FORM on_ctmenu_carrid USING p_menu TYPE REF TO cl_ctmenu. CALL METHOD p_menu->load_gui_status EXPORTING program = 'RSDEMO_CONTEXT_MENU_DYNPR' status = 'CONTEXT' menu = p_menu. ENDFORM. *&--------------------------------------------------------------------- *& Form Routine: setting context menu for BOX_1 *---------------------------------------------------------------------- FORM on_ctmenu_box_1 USING p_menu TYPE REF TO cl_ctmenu. CALL METHOD p_menu->add_function EXPORTING fcode = 'BOX_1' text = TExt-001 icon = ' ' ftype = ' ' disabled = ' ' hidden = ' ' checked = ' '. CALL METHOD p_menu->add_function EXPORTING fcode = 'BOX_2' text = TExt-001 icon = ' ' ftype = ' ' disabled = ' ' hidden = ' ' checked = ' '. call method p_menu->set_default_function exporting fcode = 'BOX_1'. ENDFORM. *&--------------------------------------------------------------------- *& Form Routine: setting context menu for TABLE *---------------------------------------------------------------------- FORM on_ctmenu_table USING p_menu TYPE REF TO cl_ctmenu. CALL METHOD p_menu->add_function EXPORTING fcode = 'TABLE_CONTROL' text = text-002 icon = ' ' ftype = ' ' disabled = ' ' hidden = ' ' checked = ' '. ENDFORM. *&--------------------------------------------------------------------- *& Form Routine: setting context menu for TITLE *---------------------------------------------------------------------- FORM on_ctmenu_title USING p_menu TYPE REF TO cl_ctmenu. CALL METHOD p_menu->add_function EXPORTING fcode = 'TABLE_TITLE' text = text-003 icon = ' ' ftype = ' ' disabled = ' ' hidden = ' ' checked = ' '. ENDFORM.
in control
*&---------------------------------------------------------------------* *& Include SIMPLE_TREE_CONTEXT_MEN_DEMTOP * *& * *&---------------------------------------------------------------------* REPORT sapsimple_tree_context_men_dem MESSAGE-ID tree_control_msg. CLASS lcl_application DEFINITION DEFERRED. CLASS cl_gui_cfw DEFINITION LOAD. TYPES: node_table_type LIKE STANDARD TABLE OF mtreesnode WITH DEFAULT KEY. * CAUTION: MTREESNODE is the name of the node structure which must * be defined by the programmer. DO NOT USE MTREESNODE! DATA: g_application TYPE REF TO lcl_application, g_custom_container TYPE REF TO cl_gui_custom_container, g_tree TYPE REF TO cl_gui_simple_tree, g_ok_code TYPE sy-ucomm, g_ctx_fcode TYPE sy-ucomm. *** INCLUDE SIMPLE_TREE_CONTEXT_MEN_DEMTOP
*----------------------------------------------------------------------* * INCLUDE SIMPLE_TREE_CONTROL_DEMOCL1 * *----------------------------------------------------------------------* CLASS lcl_application DEFINITION. PUBLIC SECTION. METHODS: handle_node_context_menu_req FOR EVENT node_context_menu_request OF cl_gui_simple_tree IMPORTING node_key menu, handle_node_context_menu_sel FOR EVENT node_context_menu_select OF cl_gui_simple_tree IMPORTING node_key fcode. ENDCLASS. *---------------------------------------------------------------------* * CLASS LCL_APPLICATION IMPLEMENTATION *---------------------------------------------------------------------* * ........ * *---------------------------------------------------------------------* CLASS lcl_application IMPLEMENTATION. METHOD handle_node_context_menu_req. " this method handles the node context menu request event of the " tree control instance data: text type gui_text. " first entry in context menu text = 'Node with key'. "#EC NOTEXT concatenate text node_key into text SEPARATED by ' '. call method menu->add_function exporting text = text fcode = 'Entry1'. "#EC NOTEXT " second entry in context menu call method menu->add_function exporting text = 'Second Entry' "#EC NOTEXT fcode = 'Entry2'. "#EC NOTEXT ENDMETHOD. METHOD handle_node_context_menu_sel. " this method handles the node context select event of the tree " control instance " write chosen FCODE in dynpro field g_ctx_fcode = fcode. ENDMETHOD. ENDCLASS.
*------------------------------------------------------------------- ***INCLUDE simple_tree_control_demoO01 . *------------------------------------------------------------------- *&---------------------------------------------------------------------* *& Module PBO_0400 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE PBO_100 OUTPUT. SET PF-STATUS 'MAIN'. IF G_TREE IS INITIAL. " The Tree Control has not been created yet. " Create a Tree Control and insert nodes into it. PERFORM CREATE_AND_INIT_TREE. ENDIF. ENDMODULE. " PBO_0100 OUTPUT *** INCLUDE simple_tree_context_men_demO01
*------------------------------------------------------------------- ***INCLUDE simple_tree_control_demoI01 . *------------------------------------------------------------------- *&---------------------------------------------------------------------* *& Module PAI_0400 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE PAI_100 INPUT. data: return_code type i. * CL_GUI_CFW=>DISPATCH must be called if events are registered * that trigger PAI * this method calls the event handler method of an event CALL METHOD CL_GUI_CFW=>DISPATCH importing return_code = return_code. if return_code <> cl_gui_cfw=>rc_noevent. " a control event occured => exit PAI clear g_ok_code. exit. endif. CASE G_OK_CODE. WHEN 'BACK'. " Finish program IF NOT G_CUSTOM_CONTAINER IS INITIAL. " destroy tree container (detroys contained tree control, too) CALL METHOD G_CUSTOM_CONTAINER->FREE EXCEPTIONS CNTL_SYSTEM_ERROR = 1 CNTL_ERROR = 2. IF SY-SUBRC <> 0. MESSAGE A000. ENDIF. CLEAR G_CUSTOM_CONTAINER. CLEAR G_TREE. ENDIF. LEAVE PROGRAM. ENDCASE. * CAUTION: clear ok code! CLEAR G_OK_CODE. ENDMODULE. " PAI_0100 INPUT *** INCLUDE simple_tree_context_men_demI01
*------------------------------------------------------------------- ***INCLUDE simple_tree_context_men_demF01 . *------------------------------------------------------------------- *&---------------------------------------------------------------------* *& Form CREATE_AND_INIT_TREE *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM create_and_init_tree. DATA: node_table TYPE node_table_type, events TYPE cntl_simple_events, event TYPE cntl_simple_event. * create a container for the tree control CREATE OBJECT g_custom_container EXPORTING " the container is linked to the custom control with the " name 'TREE_CONTAINER' on the dynpro container_name = 'TREE_CONTAINER' EXCEPTIONS cntl_error = 1 cntl_system_error = 2 create_error = 3 lifetime_error = 4 lifetime_dynpro_dynpro_link = 5. IF sy-subrc <> 0. MESSAGE a000. ENDIF. * create a tree control CREATE OBJECT g_tree EXPORTING parent = g_custom_container node_selection_mode = cl_gui_simple_tree=>node_sel_mode_single EXCEPTIONS lifetime_error = 1 cntl_system_error = 2 create_error = 3 failed = 4 illegal_node_selection_mode = 5. IF sy-subrc <> 0. MESSAGE a000. ENDIF. * define the events which will be passed to the backend " node context menu request event-eventid = cl_gui_simple_tree=>eventid_node_context_menu_req. event-appl_event = ' '. " no PAI if event occurs APPEND event TO events. " process PAI if context menu select event occurs call method g_tree->SET_CTX_MENU_SELECT_EVENT_APPL exporting appl_event = 'X'. CALL METHOD g_tree->set_registered_events EXPORTING events = events EXCEPTIONS cntl_error = 1 cntl_system_error = 2 illegal_event_combination = 3. IF sy-subrc <> 0. MESSAGE a000. ENDIF. * assign event handlers in the application class to each desired event SET HANDLER g_application->handle_node_context_menu_req FOR g_tree. SET HANDLER g_application->handle_node_context_menu_sel FOR g_tree. * add some nodes to the tree control * NOTE: the tree control does not store data at the backend. If an * application wants to access tree data later, it must store the * tree data itself. PERFORM build_node_table USING node_table. * node_table_structure_name = 'MTREESNODE' * A programmer using the tree control must create a structure in the * dictionary. This structure must include the structure TREEV_NODE * and must contain a character field with the name 'TEXT'. CALL METHOD g_tree->add_nodes EXPORTING table_structure_name = 'MTREESNODE' node_table = node_table EXCEPTIONS failed = 1 error_in_node_table = 2 dp_error = 3 table_structure_name_not_found = 4 OTHERS = 5. IF sy-subrc <> 0. MESSAGE a000. ENDIF. * expand the root node call method g_tree->expand_node exporting node_key = 'Root' "#EC NOTEXT exceptions FAILED = 1 ILLEGAL_LEVEL_COUNT = 2 CNTL_SYSTEM_ERROR = 3 NODE_NOT_FOUND = 4 CANNOT_EXPAND_LEAF = 5. IF SY-SUBRC <> 0. MESSAGE A000. ENDIF. ENDFORM. " CREATE_AND_INIT_TREE *&---------------------------------------------------------------------* *& Form build_node_table *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM build_node_table USING node_table TYPE node_table_type. DATA: node LIKE mtreesnode. * Node with key 'Root' node-node_key = 'Root'. "#EC NOTEXT node-isfolder = 'X'. node-text = 'Root'. APPEND node TO node_table. * Node with key 'Child1' clear node. node-node_key = 'Child1'. "#EC NOTEXT node-relatkey = 'Root'. node-relatship = cl_gui_simple_tree=>relat_last_child. node-text = 'Child1'. APPEND node TO node_table. ENDFORM. " build_node_table *** INCLUDE simple_tree_context_men_demF01