*----------------------------------------------------------------------*
***INCLUDE Z_INIT_TREO01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module INIT_TREE OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE INIT_TREE OUTPUT.
DATA: NODE LIKE MTREESNODE,
WA_ITAB1 TYPE TY_ITAB,
WA_ITAB TYPE TY_ITAB.
DATA: LCL_EVENT TYPE REF TO LCL_EVENT_RECIEVE.
DATA: EVENTS TYPE CNTL_SIMPLE_EVENTS,
EVENT TYPE CNTL_SIMPLE_EVENT.
SELECT * INTO CORRESPONDING FIELDS OF TABLE ITAB
FROM ZTHR_ZZY.
SORT ITAB BY PARENT.
NODE-NODE_KEY = 'ROOT'.
NODE-ISFOLDER = 'X'.
NODE-TEXT = 'ALL'.
APPEND NODE TO NODE_TABLE.
CLEAR NODE.
LOOP AT ITAB INTO WA_ITAB.
READ TABLE ITAB INTO WA_ITAB1 WITH KEY PARENT = WA_ITAB-ZKEY.
IF SY-SUBRC EQ 0.
WA_ITAB-ISFOLDER = 'X'.
ELSE.
WA_ITAB-ISFOLDER = ' '.
ENDIF.
MODIFY ITAB FROM WA_ITAB.
ENDLOOP.
LOOP AT ITAB INTO WA_ITAB.
NODE-NODE_KEY = WA_ITAB-ZKEY.
NODE-TEXT = WA_ITAB-TEXT.
* NODE-ISFOLDER = ''.
IF WA_ITAB-ISFOLDER EQ 'X'.
NODE-ISFOLDER = 'X'.
ELSE.
NODE-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
ENDIF.
IF WA_ITAB-PARENT IS INITIAL.
NODE-RELATKEY = 'ROOT'.
ELSE.
NODE-RELATKEY = WA_ITAB-PARENT.
ENDIF.
APPEND NODE TO NODE_TABLE.
CLEAR NODE.
ENDLOOP.
IF MYCONTAINER IS INITIAL.
CREATE OBJECT MYCONTAINER
EXPORTING
CONTAINER_NAME = 'CONTAINER'.
CREATE OBJECT G_TREE
EXPORTING
PARENT = MYCONTAINER
NODE_SELECTION_MODE = G_TREE->NODE_SEL_MODE_MULTIPLE.
CREATE OBJECT LCL_EVENT.
SET HANDLER LCL_EVENT->NODE_DOUBLE_CLICK FOR G_TREE.
CLEAR EVENT.
CLEAR EVENTS.
REFRESH EVENTS.
EVENT-EVENTID = CL_GUI_SIMPLE_TREE=>EVENTID_NODE_DOUBLE_CLICK.
EVENT-APPL_EVENT = ''.
APPEND EVENT TO EVENTS.
CALL METHOD G_TREE->SET_REGISTERED_EVENTS
EXPORTING
EVENTS = EVENTS.
CALL METHOD G_TREE->ADD_NODES
EXPORTING
NODE_TABLE = NODE_TABLE
TABLE_STRUCTURE_NAME = 'NODE_STR'.
CALL METHOD G_TREE->EXPAND_NODE
EXPORTING
NODE_KEY = 'ROOT'.
ENDIF.
ENDMODULE. " INIT_TREE OUTPUT
*&---------------------------------------------------------------------*
*& 包括 ZINC_EVENT_RECIEVE
*&---------------------------------------------------------------------*
CLASS LCL_EVENT_RECIEVE DEFINITION.
PUBLIC SECTION.
METHODS:NODE_DOUBLE_CLICK
FOR EVENT NODE_DOUBLE_CLICK
OF CL_GUI_SIMPLE_TREE
IMPORTING NODE_KEY.
ENDCLASS. "lcl_event_recieve DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_event_recieve IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_EVENT_RECIEVE IMPLEMENTATION.
METHOD NODE_DOUBLE_CLICK.
AAA = NODE_KEY.
SET SCREEN 0.
LEAVE SCREEN.
ENDMETHOD. "node_double_click
ENDCLASS. "lcl_event_recieve IMPLEMENTATION