• &---------------------------------------------------------------------*
  • & Include ZPARIPR_WMDB_CONF_F01
  • &---------------------------------------------------------------------*
  • Transport: DRUK978116
  • &---------------------------------------------------------------------*
  • & Form CREATE_AND_INIT_TREE
  • &---------------------------------------------------------------------*
  • ----------------------------------------------------------------------*
  • --> p1 text
  • <-- p2 text
  • ----------------------------------------------------------------------*

FORM CREATE_AND_INIT_TREE.

 DATA: NODE_TABLE TYPE TREEV_NTAB,
       ITEM_TABLE TYPE ITEM_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 list tree
 CREATE OBJECT g_tree
   EXPORTING
     PARENT              = G_CUSTOM_CONTAINER
     NODE_SELECTION_MODE = CL_GUI_LIST_TREE=>NODE_SEL_MODE_SINGLE
     ITEM_SELECTION     = 'X'
     WITH_HEADERS       = ' '
   EXCEPTIONS
     CNTL_SYSTEM_ERROR           = 1
     CREATE_ERROR                = 2
     FAILED                      = 3
     ILLEGAL_NODE_SELECTION_MODE = 4
     LIFETIME_ERROR              = 5.
 IF SY-SUBRC <> 0.
   MESSAGE A000.
 ENDIF.
  • define the events which will be passed to the backend
                                      " node double click
 event-eventid = CL_GUI_list_TREE=>EVENTID_NODE_DOUBLE_CLICK.
 event-appl_event = 'X'.                                   "
 append event to events.
                                      " item double click
 EVENT-EVENTID = CL_GUI_LIST_TREE=>EVENTID_ITEM_DOUBLE_CLICK.
 event-appl_event = 'X'.
 append event to events.
                                      " expand no children
 EVENT-EVENTID = CL_GUI_LIST_TREE=>EVENTID_EXPAND_NO_CHILDREN.
 event-appl_event = 'X'.
 append event to events.
                                      " link click
 EVENT-EVENTID = CL_GUI_LIST_TREE=>EVENTID_LINK_CLICK.
 event-appl_event = 'X'.
 append event to events.
                                      " button click
 EVENT-EVENTID = CL_GUI_LIST_TREE=>EVENTID_BUTTON_CLICK.
 event-appl_event = 'X'.
 append event to events.
                                      " checkbox change
 EVENT-EVENTID = CL_GUI_LIST_TREE=>EVENTID_CHECKBOX_CHANGE.
 event-appl_event = 'X'.
 append event to events.
 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_DOUBLE_CLICK FOR G_TREE.
 SET HANDLER G_APPLICATION->HANDLE_ITEM_DOUBLE_CLICK FOR G_TREE.
 SET HANDLER G_APPLICATION->HANDLE_EXPAND_NO_CHILDREN FOR G_TREE.
 SET HANDLER G_APPLICATION->HANDLE_LINK_CLICK FOR G_TREE.
 SET HANDLER G_APPLICATION->HANDLE_BUTTON_CLICK FOR G_TREE.
 SET HANDLER G_APPLICATION->HANDLE_CHECKBOX_CHANGE 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.
 CALL METHOD G_APPLICATION->m_build_node_and_item_table
   CHANGING
     NODE_TABLE = NODE_TABLE
     ITEM_TABLE = ITEM_TABLE.
 CALL METHOD G_TREE->ADD_NODES_AND_ITEMS
   EXPORTING
     NODE_TABLE = NODE_TABLE
     ITEM_TABLE = ITEM_TABLE
     ITEM_TABLE_STRUCTURE_NAME = 'MTREEITM'
   EXCEPTIONS
     FAILED = 1
     CNTL_SYSTEM_ERROR = 3
     ERROR_IN_TABLES = 4
     DP_ERROR = 5
     TABLE_STRUCTURE_NAME_NOT_FOUND = 6.
 IF SY-SUBRC <> 0.
   MESSAGE A000.
 ENDIF.

ENDFORM. " CREATE_AND_INIT_TREE


      • INCLUDE ZPAIPR_WMDB_CONF_F01