ivanchodelat

tree001

Jul 5th, 2018
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 2.02 KB | None | 0 0
  1. REPORT
  2.  
  3. FIELD-SYMBOLS:
  4.  
  5. CLASS
  6.   PUBLIC SECTION.
  7.     CLASS-DATA:
  8.       go_alv_tree     TYPE REF TO cl_salv_tree,
  9.       gt_empty_tab    TYPE STANDARD TABLE OF spfli,
  10.       gt_full_tab     TYPE STANDARD TABLE OF spfli.
  11.     CLASS-METHODS:
  12.       create_tree,     " Создаем и настраиваем объект ALV
  13.       get_data,       " Получение данных из БД
  14.       create_nodes,   " Заполнение дерева данными (создание иерархии)
  15.       show_tree.      " Отображение (обновление) ALV дерева
  16. ENDCLASS.
  17.  
  18. START-OF-SELECTION.
  19.   lcl_report=>get_data( ).
  20.   lcl_report=>create_tree( ).
  21.   lcl_report=>create_nodes( ).
  22.   lcl_report=>show_tree( ).
  23.  
  24. CLASS lcl_report IMPLEMENTATION.
  25.   METHOD show_tree.
  26.     go_alv_tree->display( ).
  27.   ENDMETHOD.
  28.  
  29.   METHOD create_nodes.
  30.     DATA:
  31.       lo_nodes  TYPE REF TO cl_salv_nodes,
  32.       lo_node   TYPE REF TO cl_salv_node.
  33.     " Получаем ссылку на экземпляр класса упрвления узлами дерева
  34.     lo_nodes = go_alv_tree->get_nodes( ).
  35.     SORT gt_full_tab BY carrid.
  36.     " Заполняем дерево
  37.     LOOP AT gt_full_tab ASSIGNING <fs_line>.
  38.       TRY.
  39.           lo_node = lo_nodes->add_node( related_node = ''
  40.                     relationship = cl_gui_column_tree=>relat_first_child
  41.                                       ).
  42.           " Присвоение узлу данных
  43.           lo_node->set_data_row( <fs_line> ).
  44.         CATCH cx_salv_msg.
  45.       ENDTRY.
  46.     ENDLOOP.
  47.   ENDMETHOD.
  48.  
  49.   METHOD get_data.
  50.     SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_full_tab.
  51.   ENDMETHOD.
  52.  
  53.   METHOD create_tree.
  54.     TRY.
  55.         cl_salv_tree=>factory(
  56.           IMPORTING
  57.             r_salv_tree = go_alv_tree
  58.           CHANGING
  59.             t_table     = gt_empty_tab ).
  60.       CATCH cx_salv_error.
  61.         MESSAGE 'Ошибка при создании объекта ALV' TYPE 'E'.
  62.     ENDTRY.
  63.   ENDMETHOD.
  64.  
  65. ENDCLASS.
Add Comment
Please, Sign In to add comment