Advertisement
Guest User

Untitled

a guest
Dec 13th, 2017
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 2.67 KB | None | 0 0
  1. *&---------------------------------------------------------------------*
  2. *& Report  ZTREELOCAL
  3. *&
  4. *&---------------------------------------------------------------------*
  5. *&
  6. *&
  7. *&---------------------------------------------------------------------*
  8. REPORT ztreelocal.
  9.  
  10. SELECTION-SCREEN BEGIN OF BLOCK blc1.
  11. PARAMETERS p_tplnr TYPE tplnr DEFAULT 'PS110-000777'.
  12. SELECTION-SCREEN END OF BLOCK blc1.
  13.  
  14. *--------------------------------------------------------------------*]
  15. CLASS lcl_tree_node DEFINITION DEFERRED.
  16. *--------------------------------------------------------------------*
  17. INTERFACE lif_tree_node.
  18.  
  19.   METHODS
  20.           : haschild
  21.               RETURNING VALUE(r_bool) TYPE abap_bool
  22.           , addchild
  23.               IMPORTING i_name   TYPE string
  24.                         i_parent TYPE REF TO lcl_tree_node
  25.           , output
  26.           .
  27.  
  28. ENDINTERFACE.
  29. *--------------------------------------------------------------------*
  30. CLASS lcl_tree_node DEFINITION.
  31.   PUBLIC SECTION.
  32.  
  33.     INTERFACES lif_tree_node.
  34.     ALIASES
  35.             : haschild FOR lif_tree_node~haschild
  36.             , addchild FOR lif_tree_node~addchild
  37.             , output   FOR lif_tree_node~output
  38.             .
  39.     METHODS
  40.       : constructor IMPORTING i_name   TYPE string
  41.                               i_parent TYPE REF TO lcl_tree_node OPTIONAL
  42.                   .
  43.   PRIVATE SECTION.
  44.     DATA
  45.           : name   TYPE                 string
  46.           , parent TYPE REF TO          lcl_tree_node
  47.           , childs TYPE TABLE OF REF TO lcl_tree_node
  48.           .
  49. ENDCLASS.
  50.  
  51. CLASS lcl_tree_node IMPLEMENTATION.
  52. *--------------------------------------------------------------------*
  53.   METHOD constructor.
  54.     me->name   = i_name.
  55.     me->parent = i_parent.
  56.   ENDMETHOD.
  57. *--------------------------------------------------------------------*
  58.   METHOD haschild.
  59.   ENDMETHOD.
  60. *--------------------------------------------------------------------*
  61.   METHOD addchild.
  62.     DATA(lo_child) = NEW lcl_tree_node( i_name = i_name
  63.                                         i_parent = i_parent ).
  64.     APPEND lo_child TO childs.
  65.   ENDMETHOD.
  66. *--------------------------------------------------------------------*
  67.   METHOD output.
  68.     WRITE / me->name.
  69.  
  70.     LOOP AT childs ASSIGNING FIELD-SYMBOL(<lo_child>).
  71.  
  72.       <lo_child>->output( ).
  73.  
  74.     ENDLOOP.
  75.  
  76.   ENDMETHOD.
  77. *--------------------------------------------------------------------*
  78. ENDCLASS.
  79.  
  80. START-OF-SELECTION.
  81.   BREAK-POINT.
  82.  
  83.   DATA(lo_root) = NEW lcl_tree_node( conv string( p_tplnr ) ).
  84.  
  85.  
  86.   lo_root->addchild( i_name   = CONV string( |{ p_tplnr }-001 | )
  87.                      i_parent = lo_root ).
  88.  
  89.   lo_root->output( ).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement