SAP Column tree

code as bellow

*&---------------------------------------------------------------------*
*& Include COLUMN_TREE_CONTROL_DEMOTOP                                 *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT SAPCOLUMN_TREE_CONTROL_DEMO MESSAGE-ID TREE_CONTROL_MSG.

  CLASS LCL_APPLICATION DEFINITION DEFERRED.
  CLASS CL_GUI_CFW DEFINITION LOAD.

* CAUTION: MTREEITM is the name of the item structure which must
* be defined by the programmer. DO NOT USE MTREEITM!
  TYPES: ITEM_TABLE_TYPE LIKE STANDARD TABLE OF MTREEITM
         WITH DEFAULT KEY.

  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_COLUMN_TREE,
        G_OK_CODE TYPE SY-UCOMM.

* Fields on Dynpro 100
  DATA: G_EVENT(30),
        G_NODE_KEY TYPE TV_NODEKEY,
        G_ITEM_NAME TYPE TV_ITMNAME,
        G_HEADER_NAME TYPE TV_HDRNAME.

CONSTANTS:
  BEGIN OF c_nodekey,
    root   type tv_nodekey value 'Root',                    "#EC NOTEXT
    child1 TYPE tv_nodekey VALUE 'Child1',                  "#EC NOTEXT
*    child2 type tv_nodekey value 'Child2',                  "#EC NOTEXT
    new1   TYPE tv_nodekey VALUE 'New1',                    "#EC NOTEXT
    new2   TYPE tv_nodekey VALUE 'New2',                    "#EC NOTEXT
*    new3   type tv_nodekey value 'New3',                    "#EC NOTEXT
*    new4   type tv_nodekey value 'New4',                    "#EC NOTEXT
  END OF c_nodekey,
  BEGIN OF c_column,
    column1 TYPE tv_itmname VALUE 'Column1',                "#EC NOTEXT
    column2 TYPE tv_itmname VALUE 'Column2',                "#EC NOTEXT
    column3 TYPE tv_itmname VALUE 'Column3',                "#EC NOTEXT
  END OF c_column.

*** INCLUDE COLUMN_TREE_CONTROL_DEMOTOP
*----------------------------------------------------------------------*
*   INCLUDE COLUMN_TREE_CONTROL_DEMOCL1                                *
*----------------------------------------------------------------------*

CLASS LCL_APPLICATION DEFINITION.

  PUBLIC SECTION.
    METHODS:
      HANDLE_NODE_DOUBLE_CLICK
        FOR EVENT NODE_DOUBLE_CLICK
        OF CL_GUI_COLUMN_TREE
        IMPORTING NODE_KEY,
      HANDLE_HEADER_CLICK
        FOR EVENT HEADER_CLICK
        OF CL_GUI_COLUMN_TREE
        IMPORTING HEADER_NAME,
      HANDLE_EXPAND_NO_CHILDREN
        FOR EVENT EXPAND_NO_CHILDREN
        OF CL_GUI_COLUMN_TREE
        IMPORTING NODE_KEY,
      HANDLE_ITEM_DOUBLE_CLICK
        FOR EVENT ITEM_DOUBLE_CLICK
        OF CL_GUI_COLUMN_TREE
        IMPORTING NODE_KEY ITEM_NAME,
      HANDLE_BUTTON_CLICK
        FOR EVENT BUTTON_CLICK
        OF CL_GUI_COLUMN_TREE
        IMPORTING NODE_KEY ITEM_NAME,
      HANDLE_LINK_CLICK
        FOR EVENT LINK_CLICK
        OF CL_GUI_COLUMN_TREE
        IMPORTING NODE_KEY ITEM_NAME,
      HANDLE_CHECKBOX_CHANGE
        FOR EVENT CHECKBOX_CHANGE
        OF CL_GUI_COLUMN_TREE
        IMPORTING NODE_KEY ITEM_NAME CHECKED.
ENDCLASS.                    "LCL_APPLICATION DEFINITION

*----------------------------------------------------------------------*
*       CLASS LCL_APPLICATION IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS LCL_APPLICATION IMPLEMENTATION.

  METHOD HANDLE_NODE_DOUBLE_CLICK.
    " this method handles the node double click event of the tree
    " control instance

    " show the key of the double clicked node in a dynpro field
    G_EVENT = 'NODE_DOUBLE_CLICK'.
    G_NODE_KEY = NODE_KEY.
    CLEAR: G_ITEM_NAME, G_HEADER_NAME.
  ENDMETHOD.                    "HANDLE_NODE_DOUBLE_CLICK

  METHOD HANDLE_HEADER_CLICK.
    " this method handles header click event of the tree
                                       " control instance

    " show the name of the clicked header in a dynpro field
    G_EVENT = 'HEADER_CLICK'.
    G_HEADER_NAME = HEADER_NAME.
    CLEAR: G_NODE_KEY, G_ITEM_NAME.
  ENDMETHOD.                    "HANDLE_HEADER_CLICK

  METHOD  HANDLE_ITEM_DOUBLE_CLICK.
    " this method handles the item double click event of the tree
    " control instance

    " show the key of the node and the name of the item
    " of the double clicked item in a dynpro field
    G_EVENT = 'ITEM_DOUBLE_CLICK'.
    G_NODE_KEY = NODE_KEY.
    G_ITEM_NAME = ITEM_NAME.
    CLEAR G_HEADER_NAME.
  ENDMETHOD.                    "HANDLE_ITEM_DOUBLE_CLICK

  METHOD  HANDLE_LINK_CLICK.
    " this method handles the link click event of the tree
    " control instance

    " show the key of the node and the name of the item
    " of the clicked link in a dynpro field
    G_EVENT = 'LINK_CLICK'.
    G_NODE_KEY = NODE_KEY.
    G_ITEM_NAME = ITEM_NAME.
    CLEAR G_HEADER_NAME.
  ENDMETHOD.                    "HANDLE_LINK_CLICK

  METHOD  HANDLE_BUTTON_CLICK.
    " this method handles the button click event of the tree
    " control instance

    " show the key of the node and the name of the item
    " of the clicked button in a dynpro field
    G_EVENT = 'BUTTON_CLICK'.
    G_NODE_KEY = NODE_KEY.
    G_ITEM_NAME = ITEM_NAME.
    CLEAR G_HEADER_NAME.
  ENDMETHOD.                    "HANDLE_BUTTON_CLICK

  METHOD  HANDLE_CHECKBOX_CHANGE.
    " this method handles the checkbox_change event of the tree
    " control instance

    " show the key of the node and the name of the item
    " of the clicked checkbox in a dynpro field
    G_EVENT = 'CHECKBOX_CHANGE'.
    G_NODE_KEY = NODE_KEY.
    G_ITEM_NAME = ITEM_NAME.
    CLEAR  G_HEADER_NAME.
  ENDMETHOD.                    "HANDLE_CHECKBOX_CHANGE


  METHOD HANDLE_EXPAND_NO_CHILDREN.
    DATA: NODE_TABLE TYPE TREEV_NTAB,
          NODE TYPE TREEV_NODE,
          ITEM_TABLE TYPE ITEM_TABLE_TYPE,
          ITEM TYPE MTREEITM.

* show the key of the expanded node in a dynpro field
    G_EVENT = 'EXPAND_NO_CHILDREN'.
    G_NODE_KEY = NODE_KEY.
    CLEAR: G_ITEM_NAME, G_HEADER_NAME.

    IF node_key = c_nodekey-child1.
* add two nodes

* Node with key 'New1'
      CLEAR NODE.
      node-node_key = c_nodekey-New1.
      node-relatkey = c_nodekey-child1.
      NODE-RELATSHIP = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD.
      APPEND NODE TO NODE_TABLE.

* Node with key 'New2'
      CLEAR NODE.
      node-node_key = c_nodekey-New2.
      node-relatkey = c_nodekey-child1.
      NODE-RELATSHIP = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD.
      NODE-N_IMAGE = '@10@'.
      APPEND NODE TO NODE_TABLE.

* Items of node with key 'New1'
      CLEAR ITEM.
      item-node_key = c_nodekey-New1.
      item-item_name = c_column-Column1.
      item-class = cl_gui_column_tree=>item_class_text.
      item-text = 'New1 Col. 1'(n11).
      APPEND ITEM TO ITEM_TABLE.

      CLEAR ITEM.
      item-node_key = c_nodekey-New1.
      item-item_name = c_column-Column2.
      ITEM-CLASS = CL_GUI_COLUMN_TREE=>ITEM_CLASS_LINK.
      item-t_image = '@3C@'.
      APPEND ITEM TO ITEM_TABLE.

      CLEAR ITEM.
      item-node_key = c_nodekey-New1.
      item-item_name = c_column-Column3.
      item-class = cl_gui_column_tree=>item_class_text.
      item-text = 'New1 Col. 3'(n13).
      APPEND ITEM TO ITEM_TABLE.

* Items of node with key 'New2'
      CLEAR ITEM.
      item-node_key = c_nodekey-New2.
      item-item_name = c_column-Column1.
      item-class = cl_gui_column_tree=>item_class_text.
      item-text = 'New2 Col. 1'(n21).
      APPEND ITEM TO ITEM_TABLE.

      CLEAR ITEM.
      item-node_key = c_nodekey-New2.
      item-item_name = c_column-Column2.
      item-class = cl_gui_column_tree=>item_class_text.
      item-text = 'New2 Col. 2'(n22).
      APPEND ITEM TO ITEM_TABLE.

      CLEAR ITEM.
      item-node_key = c_nodekey-New2.
      item-item_name = c_column-Column3.
      item-class = cl_gui_column_tree=>item_class_text.
      item-text = 'New2 Col. 3'(n23).
      APPEND ITEM TO 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.
    endif.
  ENDMETHOD.                    "HANDLE_EXPAND_NO_CHILDREN

ENDCLASS.                    "LCL_APPLICATION IMPLEMENTATION
*-------------------------------------------------------------------
***INCLUDE column_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 column_tree_control_demoO01
*-------------------------------------------------------------------
***INCLUDE column_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 column_tree_control_demoI01
*-------------------------------------------------------------------
***INCLUDE column_tree_control_demoF01 .
*-------------------------------------------------------------------

*&---------------------------------------------------------------------*
*&      Form  CREATE_AND_INIT_TREE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM CREATE_AND_INIT_TREE.
  DATA: NODE_TABLE TYPE TREEV_NTAB,
        ITEM_TABLE TYPE ITEM_TABLE_TYPE,
        event type cntl_simple_event,
        EVENTS TYPE CNTL_SIMPLE_EVENTS,
        HIERARCHY_HEADER TYPE TREEV_HHDR.

* 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.
* setup the hierarchy header
  hierarchy_header-heading = 'Hierarchy Header'(roo).
                                        " heading
   HIERARCHY_HEADER-WIDTH = 30.         "  30 characters

* create a tree control

* After construction, the control contains one column in the
* hierarchy area. The name of this column
* is defined via the constructor parameter HIERACHY_COLUMN_NAME.
  CREATE OBJECT G_TREE
    EXPORTING
      PARENT              = G_CUSTOM_CONTAINER
      NODE_SELECTION_MODE = CL_GUI_COLUMN_TREE=>NODE_SEL_MODE_SINGLE
      ITEM_SELECTION = 'X'
      hierarchy_column_name = c_column-Column1
      HIERARCHY_HEADER = HIERARCHY_HEADER
    EXCEPTIONS
      CNTL_SYSTEM_ERROR           = 1
      CREATE_ERROR                = 2
      FAILED                      = 3
      ILLEGAL_NODE_SELECTION_MODE = 4
      ILLEGAL_COLUMN_NAME         = 5
      LIFETIME_ERROR              = 6.
  IF SY-SUBRC <> 0.
    MESSAGE A000.
  ENDIF.

* define the events which will be passed to the backend
  " node double click
  event-eventid = CL_GUI_COLUMN_TREE=>EVENTID_NODE_DOUBLE_CLICK.
  event-appl_event = 'X'. " process PAI if event occurs
  append event to events.

  " item double click
  event-eventid = CL_GUI_COLUMN_TREE=>EVENTID_ITEM_DOUBLE_CLICK.
  event-appl_event = 'X'.
  append event to events.

  " expand no children
  event-eventid = CL_GUI_COLUMN_TREE=>EVENTID_EXPAND_NO_CHILDREN.
  event-appl_event = 'X'.
  append event to events.

  " link click
  event-eventid = CL_GUI_COLUMN_TREE=>EVENTID_LINK_CLICK.
  event-appl_event = 'X'.
  append event to events.

  " button click
  event-eventid = CL_GUI_COLUMN_TREE=>EVENTID_button_click.
  event-appl_event = 'X'.
  append event to events.

  " checkbox change
  event-eventid = CL_GUI_COLUMN_TREE=>EVENTID_checkbox_change.
  event-appl_event = 'X'.
  append event to events.

  " header click
  event-eventid = CL_GUI_COLUMN_TREE=>EVENTID_header_click.
  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.
  SET HANDLER G_APPLICATION->HANDLE_HEADER_CLICK FOR G_TREE.

* insert two additional columns

* Column2
  CALL METHOD G_TREE->ADD_COLUMN
    EXPORTING
      name                         = c_column-Column2
      width                        = 21
      header_text                  = 'Column2'(co2)
    EXCEPTIONS
      COLUMN_EXISTS                 = 1
      ILLEGAL_COLUMN_NAME           = 2
      TOO_MANY_COLUMNS              = 3
      ILLEGAL_ALIGNMENT             = 4
      DIFFERENT_COLUMN_TYPES        = 5
      CNTL_SYSTEM_ERROR             = 6
      FAILED                        = 7
      PREDECESSOR_COLUMN_NOT_FOUND  = 8.
  IF SY-SUBRC <> 0.
    MESSAGE A000.
  ENDIF.
* Column3
  CALL METHOD G_TREE->ADD_COLUMN
    EXPORTING
      name                         = c_column-Column3
      width                        = 21
      alignment                    = cl_gui_column_tree=>align_right
      header_text                  = 'Column3'(co3)
    EXCEPTIONS
      COLUMN_EXISTS                 = 1
      ILLEGAL_COLUMN_NAME           = 2
      TOO_MANY_COLUMNS              = 3
      ILLEGAL_ALIGNMENT             = 4
      DIFFERENT_COLUMN_TYPES        = 5
      CNTL_SYSTEM_ERROR             = 6
      FAILED                        = 7
      PREDECESSOR_COLUMN_NOT_FOUND  = 8.
  IF SY-SUBRC <> 0.
    MESSAGE A000.
  ENDIF.

* 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_AND_ITEM_TABLE USING NODE_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.

* expand the node with key 'Root'
  CALL METHOD G_TREE->EXPAND_NODE
    EXPORTING
      node_key            = c_nodekey-Root
    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_and_item_table
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*

FORM BUILD_NODE_AND_ITEM_TABLE
  USING
    NODE_TABLE TYPE TREEV_NTAB
    ITEM_TABLE TYPE ITEM_TABLE_TYPE.

  DATA: NODE TYPE TREEV_NODE,
        ITEM TYPE MTREEITM.

* Build the node table.

* Caution: The nodes are inserted into the tree according to the order
* in which they occur in the table. In consequence, a node must not
* must not occur in the node table before its parent node.

* Node with key 'Root'
  node-node_key = c_nodekey-Root.
                            " Key of the node
  CLEAR NODE-RELATKEY.      " Special case: A root node has no parent
  CLEAR NODE-RELATSHIP.     " node.

  NODE-HIDDEN = ' '.        " The node is visible,
  NODE-DISABLED = ' '.      " selectable,
  NODE-ISFOLDER = 'X'.      " a folder.
  CLEAR NODE-N_IMAGE.       " Folder-/ Leaf-Symbol in state "closed":
                            " use default.
  CLEAR NODE-EXP_IMAGE.     " Folder-/ Leaf-Symbol in state "open":
                            " use default
  CLEAR NODE-EXPANDER.      " see below.
  APPEND NODE TO NODE_TABLE.

* Node with key 'Child1'
  node-node_key = c_nodekey-child1.
  " Key of the node
  " Node is inserted as child of the node with key 'Root'.
  node-relatkey = c_nodekey-Root.
  NODE-RELATSHIP = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD.

  NODE-HIDDEN = ' '.
  NODE-DISABLED = ' '.
  NODE-ISFOLDER = 'X'.
  CLEAR NODE-N_IMAGE.
  CLEAR NODE-EXP_IMAGE.
  NODE-EXPANDER = 'X'. " The node is marked with a '+', although
                       " it has no children. When the user clicks on the
                       " + to open the node, the event expand_nc is
                       " fired. The programmerr can
                       " add the children of the
                       " node within the event handler of the expand_nc
                       " event  (see callback handle_expand_nc).
  APPEND NODE TO NODE_TABLE.

* The items of the nodes:

* Node with key 'Root'
  CLEAR ITEM.
  item-node_key = c_nodekey-Root.
  item-item_name = c_column-Column1.     " Item of Column 'Column1'
  item-class = cl_gui_column_tree=>item_class_text. " Text Item
  item-text = 'Root Col. 1'(ro1).
  APPEND ITEM TO ITEM_TABLE.

  CLEAR ITEM.
  item-node_key = c_nodekey-Root.
  item-item_name = c_column-Column2.     " Item of Column 'Column2'
  item-class = cl_gui_column_tree=>item_class_text.
  item-text = 'Root Col. 2'(ro2).
  APPEND ITEM TO ITEM_TABLE.

  CLEAR ITEM.
  item-node_key = c_nodekey-Root.
  item-item_name = c_column-Column3.     " Item of Column 'Column3'
  " Item is a link (click on link fires event LINK_CLICK)
  item-class = cl_gui_column_tree=>item_class_link.
  item-text = 'Root Col. 3'(ro3).
  APPEND ITEM TO ITEM_TABLE.

* Node with key 'Child1'
  CLEAR ITEM.
  item-node_key = c_nodekey-Child1.
  item-item_name = c_column-Column1.
  item-class = cl_gui_column_tree=>item_class_text.
  item-text = 'Child1 Col. 1'(c11).
  APPEND ITEM TO ITEM_TABLE.

  CLEAR ITEM.
  item-node_key = c_nodekey-Child1.
  item-item_name = c_column-Column2.     "
  item-class = cl_gui_column_tree=>item_class_button. " Item is a button
  item-text = 'Child1 Col. 2'(c12).
  ITEM-T_IMAGE = '@0B@'.
  APPEND ITEM TO ITEM_TABLE.

  CLEAR ITEM.
  item-node_key = c_nodekey-Child1.
  item-item_name = c_column-Column3.
  " Item is a checkbox
  ITEM-CLASS = CL_GUI_COLUMN_TREE=>ITEM_CLASS_CHECKBOX.
  ITEM-EDITABLE = 'X'.
  item-text = 'Child1 Col. 3'(c13).
  ITEM-T_IMAGE = '@0C@'.
  APPEND ITEM TO ITEM_TABLE.

ENDFORM.                    " build_node_and_item_table



*** INCLUDE column_tree_control_demoF01
  START-OF-SELECTION.
* create the application object
* this object is needed to handle the ABAP Objects Events of
* Controls
  CREATE OBJECT G_APPLICATION.

  SET SCREEN 100.
原文地址:https://www.cnblogs.com/JackeyLove/p/13649731.html