Sapforum.Biz

Инструменты => ABAP - Инструментальные средства => SE38 - ABAP Редактор => Тема розпочата: LFatMan від Травень 04, 2018, 02:44:42 ПП

Назва: Построение и вывод иерархии
Відправлено: LFatMan від Травень 04, 2018, 02:44:42 ПП
   Здравствуйте. Имеется таблица с данными. Есть 2 поля. Id строки и id вышестоящего узла, который также является строкой в таблице. Соответственно, образуются деревья иерархии. В таблице таких деревьев 5, в каждом по несколько уровней иерархии.
   Задача вывести по id любой строки все дерево иерархии со всем содержимым.
   Алгоритм у меня следующий. Ищем родителей, пока не придем к корню, затем рекурсией находим детей. Использую cl_gui_alv_tree.
  Проблема - стаж абапа меньше месяца. Думалка никак не разберется с привязкой алгоритма к реализации. Если есть идеи по поиску детей и вывода дерева прошу поделиться. Bcalv_tree смотрел, но там сортировка по полям.

Назва: Re: Построение и вывод иерархии
Відправлено: Uukrul від Травень 05, 2018, 08:25:13 ДП
Цитата: LFatMan від Травень 04, 2018, 02:44:42 ПП
Алгоритм у меня следующий. Ищем родителей, пока не придем к корню, затем рекурсией находим детей. Использую cl_gui_alv_tree.
Вообще-то странный алгоритм. Правильно нужно считать всех родителей, у них ссылка на выше стоящий узел = NULL и выводим это дело на экран через CL_GUI_COLUMN_TREE, далее по событию EXPAND_NO_CHILDREN, которое вызывается для узла если в нем нет данных, подчитываем данные которые ссылаются на данный узел, после чего узел раскрывается. Таким образом не нужно считывать все дерево за раз, т.е. работает быстрее. По хорошему конечно для каждой считанной ветки нужно еще проверить наличие подчиненных чтобы понимать как отображать узел. В общем это больше к общему представлению о программировании имеет место, а не к абапу.

По поводу как рисовать и выводить.. вот этих примеров с головой как мне кажется.
(http://sapforum.biz/index.php?action=dlattach;topic=2973.0;attach=4395;image)