+ Sapforum.Biz » Инструменты » ABAP - Инструментальные средства » SE38 - ABAP Редактор (Модератор: Dmitriy)Тема:
|- Построение и вывод иерархии




Автор Тема: Построение и вывод иерархии  (Прочитано 479 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн LFatMan

  • Newbie
  • *
  • Сообщений: 1
  • Reputation Power: 0
  • LFatMan has no influence.
Построение и вывод иерархии
« : Май 04, 2018, 02:44:42 pm »
   Здравствуйте. Имеется таблица с данными. Есть 2 поля. Id строки и id вышестоящего узла, который также является строкой в таблице. Соответственно, образуются деревья иерархии. В таблице таких деревьев 5, в каждом по несколько уровней иерархии.
   Задача вывести по id любой строки все дерево иерархии со всем содержимым.
   Алгоритм у меня следующий. Ищем родителей, пока не придем к корню, затем рекурсией находим детей. Использую cl_gui_alv_tree.
  Проблема - стаж абапа меньше месяца. Думалка никак не разберется с привязкой алгоритма к реализации. Если есть идеи по поиску детей и вывода дерева прошу поделиться. Bcalv_tree смотрел, но там сортировка по полям.


Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 696
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: Построение и вывод иерархии
« Ответ #1 : Май 05, 2018, 08:25:13 am »
You are not allowed to view links. Register or Login
Алгоритм у меня следующий. Ищем родителей, пока не придем к корню, затем рекурсией находим детей. Использую cl_gui_alv_tree.
Вообще-то странный алгоритм. Правильно нужно считать всех родителей, у них ссылка на выше стоящий узел = NULL и выводим это дело на экран через CL_GUI_COLUMN_TREE, далее по событию EXPAND_NO_CHILDREN, которое вызывается для узла если в нем нет данных, подчитываем данные которые ссылаются на данный узел, после чего узел раскрывается. Таким образом не нужно считывать все дерево за раз, т.е. работает быстрее. По хорошему конечно для каждой считанной ветки нужно еще проверить наличие подчиненных чтобы понимать как отображать узел. В общем это больше к общему представлению о программировании имеет место, а не к абапу.

По поводу как рисовать и выводить.. вот этих примеров с головой как мне кажется.