sapdev logo background
sapdev logo sapdev logo
Comments

Create ALVtree Hierarchy





* Add following code to 'STATUS_0100'(PBO module)
*-----------------------------------------------*
* Create ALVtree Hierarchy
  PERFORM create_alvtree_hierarchy.


* Add following code to 'Z......F01' INCLUDE
*--------------------------------------------------*
*&-------------------------------------------------------------*
*&      Form  CREATE_ALVTREE_HIERARCHY
*&-------------------------------------------------------------*
*       text
*--------------------------------------------------------------*
*       Builds ALV tree display, (inserts nodes, subnodes etc)
*--------------------------------------------------------------*
form create_alvtree_hierarchy.
  DATA: NODE LIKE MTREESNODE,
        ld_node type string.

  LOOP AT it_ekko INTO wa_ekko.
* 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
* occur in the node table before its parent node.

*   Node with key 'Root'
    node-node_key = wa_ekko-ebeln. " 'Root'.   "#EC NOTEXT
    " 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.
    node-text = wa_ekko-ebeln.      "'Root'.
    APPEND node TO node_table.

    LOOP AT it_ekpo INTO wa_ekpo WHERE ebeln EQ wa_ekko-ebeln.
*     Node with key wa_ekpo-ebelp    "'Child1'
      ld_node = sy-tabix.
      concatenate wa_ekpo-ebelp ld_node into ld_node.
      node-node_key = ld_node.  "'Child1'. #EC NOTEXT

*     Node is inserted as child of the node with key wa_ekpo-ebeln  "'Root'.
      node-relatkey = wa_ekpo-ebeln.  " 'Root'.
      node-relatship = cl_gui_simple_tree=>relat_last_child.

      node-hidden = ' '.
      node-disabled = ' '.
      node-isfolder = ' '.
      CLEAR node-n_image.
      CLEAR node-exp_image.
      node-expander = ' '.  " The node is marked with a '+', although
*                        it has no children. When the user clicks on the
*                        + to open the node, the event
*                        expand_no_children is fired. The programmer can
*                        add the children of the
*                        node within the event handler of the
*                        expand_no_children event
*                        (see method handle_expand_no_children
*                        of class lcl_application)

      node-text = wa_ekpo-ebelp.
      APPEND node TO node_table.

    ENDLOOP.
  ENDLOOP.

* Add nodes to alv tree
  CALL METHOD GD_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.
  



comments powered by Disqus