Documentos de Académico
Documentos de Profesional
Documentos de Cultura
************************************************************************
***
*** CLASSES
***
************************************************************************
*---------------------------------------------------------------------*
CLASS CL_TREE_EVENTS DEFINITION
*---------------------------------------------------------------------* [+] Class for handling events on o_tree
*---------------------------------------------------------------------CLASS cl_tree_events DEFINITION.
PUBLIC SECTION.
METHODS:
handle_node_double_click
FOR EVENT node_double_click
OF cl_gui_column_tree
IMPORTING node_key,
handle_checkbox_change
FOR EVENT checkbox_change
OF cl_gui_column_tree
IMPORTING node_key item_name checked.
ENDCLASS.
"cl_tree_events DEFINITION
*---------------------------------------------------------------------*
CLASS CL_TREE_EVENTS IMPLEMENTATION
*---------------------------------------------------------------------* [+] Class for handling events on o_tree
*---------------------------------------------------------------------CLASS cl_tree_events IMPLEMENTATION.
*---------------------------------------------------------------------*
*
METHOD HANDLE_NODE_DOUBLE_CLICK
*---------------------------------------------------------------------*
* [+] Processes a double-click on a node
*---------------------------------------------------------------------*
METHOD handle_node_double_click.
WRITE: / node_key.
ENDMETHOD.
"handle_node_double_click
*---------------------------------------------------------------------*
*
METHOD HANDLE_CHECKBOX_CHANGE
*---------------------------------------------------------------------*
* [+] Processes a double-click on a node
*---------------------------------------------------------------------*
METHOD handle_checkbox_change.
WRITE: / node_key.
WRITE: / item_name.
WRITE: / checked.
ENDMETHOD.
"handle_checkbox_change
ENDCLASS.
"cl_tree_events IMPLEMENTATION
************************************************************************
***
*** MAIN PROCESSING
***
************************************************************************
*&---------------------------------------------------------------------*
*&
START_OF_SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
* Create the event listener object
CREATE OBJECT o_tree_listener.
SET SCREEN 100.
************************************************************************
***
*** DOCKING AND TREE OBJECT METHODS
***
************************************************************************
*---------------------------------------------------------------------*
FORM BUILD_DOCKED_WINDOW
*---------------------------------------------------------------------* [+] Constructs and loads the data into the docked window...
*
[+] Builds the dock
*
[+] Builds the tree
*
[+] Loads the tree nodes
*---------------------------------------------------------------------FORM build_docked_window.
* Local variables
DATA: li_events TYPE
lv_events TYPE
lo_dock
TYPE
lv_repid TYPE
lv_tree_header
cntl_simple_events, "events
cntl_simple_event, "events
REF TO cl_gui_docking_container, "docked window
syrepid, "report ID
TYPE treev_hhdr.
* Setting variables
lv_repid = sy-repid.
=
=
=
=
=
lo_dock
cl_gui_column_tree=>node_sel_mode_single
'X'
'TreeColumn'
" the column that contains the node names
lv_tree_header.
* Define the columns (excluding the column with the node names 'TreeColumn')
*
code
size name
PERFORM define_column USING 'Column1' 5 'Check'.
PERFORM define_column USING 'Column2' 15 'My Column 2'.
"build_docked_window
*---------------------------------------------------------------------*
FORM BUILD_TREE
*---------------------------------------------------------------------* [+] Loads the tree nodes
*---------------------------------------------------------------------FORM build_tree.
* NODES ARE INSERTED IN THE ORDER SHOWN.
* DO NOT DEFINE A CHILD BEFORE ITS PARENT NODE!
CLEAR:
i_nodes,
v_nodes,
i_items,
v_items.
REFRESH:
i_nodes,
i_items.
** CREATE BRANCHES **
*
folder code
PERFORM add_node USING 'X' 'Branch1'
PERFORM add_node USING ' ' 'Leaf1'
PERFORM add_node USING ' ' 'Leaf2'
parent
'Root'
'Branch1'
'Branch1'
image
name
''
'Branch Node 1'.
''
'Leaf Node 1'.
'@10@' 'Leaf Node 2'.
** CREATE COLUMNS **
*
node
column
PERFORM add_checkbox_column USING 'Leaf1' 'Column1'.
value
ENDFORM.
"build_tree
*---------------------------------------------------------------------*
FORM DEFINE_COLUMN
*---------------------------------------------------------------------* [+] Defines a column
*---------------------------------------------------------------------FORM define_column
USING
p_code TYPE c
p_size TYPE i
p_name TYPE c.
CALL METHOD o_tree->add_column
EXPORTING
name
= p_code
width
= p_size
header_text = p_name.
ENDFORM.
"define_column
*---------------------------------------------------------------------*
FORM ADD_CHECKBOX_COLUMN
*---------------------------------------------------------------------* [+] Adds a checkbox column to a node
*---------------------------------------------------------------------FORM add_checkbox_column
USING
p_node_name
TYPE c
p_column_name TYPE c.
CLEAR v_items.
v_items-node_key
v_items-item_name
v_items-class
v_items-editable
APPEND v_items TO
ENDFORM.
= p_node_name.
= p_column_name.
= cl_gui_column_tree=>item_class_checkbox.
= 'X'.
i_items.
"add_checkbox_column
*---------------------------------------------------------------------*
FORM ADD_TEXT_COLUMN
*---------------------------------------------------------------------* [+] Adds a text column to a node
*---------------------------------------------------------------------FORM add_text_column
USING
p_node_name
TYPE c
p_column_name TYPE c
p_value
TYPE c.
CLEAR v_items.
v_items-node_key
v_items-item_name
v_items-text
v_items-class
APPEND v_items TO
ENDFORM.
= p_node_name.
= p_column_name.
= p_value.
= cl_gui_column_tree=>item_class_text.
i_items.
"add_text_column
*---------------------------------------------------------------------*
FORM ADD_NODE
*---------------------------------------------------------------------* [+] Adds a node to the tree
* [+] Adds a single column for the node
*---------------------------------------------------------------------FORM add_node
USING
p_folder TYPE c
p_code
TYPE c
p_parent TYPE c
p_image TYPE c
p_name
TYPE c.
CLEAR:
v_nodes,
v_items.
* add the node
v_nodes-node_key
v_nodes-relatkey
v_nodes-relatship
v_nodes-isfolder
v_nodes-n_image
=
=
=
=
=
p_code.
p_parent.
cl_gui_column_tree=>relat_last_child.
p_folder.
p_image.
ENDFORM.
"add_node
************************************************************************
***
*** MODULES
***
************************************************************************
*---------------------------------------------------------------------*
MODULE LOAD_DOCK
*---------------------------------------------------------------------* [+] Loads the docked window and tree
*---------------------------------------------------------------------MODULE load_dock OUTPUT.
SET PF-STATUS 'MAIN'.
IF o_tree IS INITIAL.
build the tree/dock
PERFORM build_docked_window.
ENDIF.
ENDMODULE.
"load_dock OUTPUT
*---------------------------------------------------------------------*
MODULE PROCESS_EVENTS_0100
*---------------------------------------------------------------------* [+] Processes the events from the dock/tree
*---------------------------------------------------------------------MODULE process_events_0100 INPUT.
"process_events_0100 INPUT