Дерево

«Дерево» - это компонент, предназначенный для экспорта ALV TREE из программы печати в формуляр.



Вкладка свойств: 



В качестве значения можно использовать экземпляр класса: либо CL_SALV_TREE , либо CL_HRPAYNA_GUI_ALV_TREE (для выгрузки CL_GUI_ALV_TREE).

Разумеется, данный экземпляр класса может выступать как в качестве самого контекста, так и в качестве составляющей (т.е. быть вложенным компонентом) контекста.

Пояснение:
Класс CL_HRPAYNA_GUI_ALV_TREE наследует все свойства/методы/атрибуты/события класса CL_GUI_ALV_TREE. 
Использование класса-наследника взамен оригинального CL_GUI_ALV_TREE обусловлено технической необходимостью (а именно - наличием у него дополнительного метода GET_OUTTAB, обеспечивающим доступ к структуре таблицы). 


Пункт «Область в шаблоне»

Первым делом, перейдите в меню Excel: Данные Структура и уберите галочки в диалоговом окне (если они установлены):


Форматирование дерева описывается разметкой соответствующей области на листе шаблона. 

Данная область должна иметь разметку по определенным правилам, описанным ниже.

  • Область имеет минимум 2 ячейки по горизонтали и 2 по вертикали (может быть и более 2-х ячеек ячеек в любом из направлений). Область условно делится на 4 подобласти, которые на рисунке обозначены белыми цифрами в красных кругах, а их границы отмечены красной пунктирной линией: 
  • Подобластьзанимает левую верхнюю ячейку области. 
  • Подобластьзанимает вторую слева (а при наличии, и остальные, находящиеся правее) ячейку верхней строки области разметки. 
  • Подобластьзанимает вторую сверху (а при наличии, и остальные нижестоящие) ячейки крайнего левого столбца области разметки.
  • Подобластьзанимает остальные ячейки области разметки.


Для чего эта разметка необходима? Для начала надо понять, что:
  • Подобласти  и  отвечают за форматирование "шапки" дерева (той строчки, в которой выводятся наименования столбцов)
  • Подобласти  и  отвечают за форматирование строк с данными. При этом, подобласть  отвечает за форматирование столбца иерархии (т.е. столбец, содержащий узлы дерева), а подобласть  отвечает за форматирование остальных столбцов (таблицы данных). 

Следующий рисунок наглядно демонстрирует всё вышесказанное:



Отлично. Однако, в ALV TREE уровни вложенности иерархии отличаются цветом. Как сделать такое в Excel?

Имеется возможность для каждого уровня иерархии контролировать не только цвет заливки, но и любое другое форматирование ячеек (шрифт, цвет, размер текста и т.д.). 
Для этого, в подобласти  и  нужно добавить больше строк. Принцип таков: каждая нижестоящая строчка в области разметки описывает форматирование следующего уровня вложенности в иерархии (например, вторая строчка описывает второй уровень; третья - третий уровень и т.д.). Имеет смысл разметить максимально предполагаемое количество уровней (но можно и меньше).
При этом, форматирование последней строчки (области разметки шаблона) распространяется как на соответствующий уровень вложенности (дерева), так и на следующие (более "глубокие") уровни, если они есть. Например, если последняя строчка (в разметке) - третья, то она описывает как третий уровень вложенности (дерева), так и 4, 5, 6 и т.д.:




Ну, а если необходимо "раскрасить" столбцы в разные цвета ?

Имеется возможность для каждого столбца контролировать не только цвет заливки, но и любое другое форматирование ячейки (шрифт, цвет, размер текста и т.д.). 
Для этого, в подобласти  и  нужно добавить больше столбцов. Принцип таков: каждый следующий (вправо) столбец описывает форматирование соответствующего столбца в дереве. 
При этом, форматирование крайнего правого столбца подобласти распространяется как на соответствующий столбец дерева, так и на оставшиеся справа столбцы дерева (если они есть).

На рисунке ниже, нам необходимо, чтобы столбец Object ID был зеленого оттенка, а поля с адресом (все они находятся правее Object ID) были серых оттенков. 
Для этого, достаточно в разметку добавить форматирование первого из столбцов дерева, содержащих адрес (он будет 3-й по счету, после столбца иерархии и столбца Object ID), это форматирование автоматически распространится и на оставшиеся столбцы с адресом, поскольку все они находятся правее :




 

Пункт «Направление вывода»

Данный пункт определяет расположение дерева относительно предыдущего компонента (чтобы сменить направление вывода, необходимо нажать на кнопку / ). Данная опция подробно описана в компоненте «Паттерн» .


 

Пункт «Опции вывода»

Данный пункт содержит опции вывода дерева в Excel.

  • Ориентация 

        Данная опция имеет два состояния: 
    •  - дерево выводится в привычном виде - с вертикальным расположением иерархии. 

    •  - дерево поворачивается на 90 градусов (т.е. "ложится" на бок) - расположение иерархии становится горизонтальным. Разметка в этом случае, также, будет иной:

  • Структура 

        Если данная опция включена, то выполняется группировка уровней иерархии (возле каждого узла, имеющего дочерние узлы появляется маркер  или ). При этом, есть возможность выбрать начальное состояние узлов, при их выводе в Excel:
    •  - все узлы развернуты.
    •  - все узлы свернуты.
    •  - каждый узел имеет то состояние, в котором пребывает соответствующий узел в ALV TREE. 

  • Заголовок дерева 

        Если данная опция включена, то в будет выводиться "шапка" - строка, в которой отображаются наименования столбцов. 
        Примечание: вне зависимости от этой опции, в разметке должны присутствовать подобласти 
 и . 

  • Столбец иерархии 

        Если данная опция включена, то будет выводиться столбец с узлами. 
        Примечание: вне зависимости от этой опции, в разметке должны присутствовать подобласти  и . 
    • Переключатель  <-->  позволяет выбрать, будет ли столбец иерархии выведен до столбцов данных, или после них.
    • Опция  задает смещение текста узла для каждого следующего уровня иерархии относительно предыдущего. Смещение достигается добавлением определенного числа пробелов в начало текста узла. Смещение можно отключить, задав значение 0.
       

  • Остальные столбцы 

        Если данная опция включена, то будут выводиться столбцы с данными. 
        Примечание: вне зависимости от этой опции, в разметке должны присутствовать подобласти  и . 
    • Ширина из филдкаталога. 
      • Если включить данную опцию, то ширина столбцов будет браться из актуального филдкаталога ALV TREE (из поля OUTPUTLEN). При этом, будет предложено указать множитель - т.е. коэффициент, при помощи которого можно произвести тонкую настройку требуемой ширины столбца.
      • Если данная опция выключена, то ширина столбцов будет взята из соответствующих столбцов Excel-шаблона.
    • Разрешить формулы.
      • Если данная опция включена, то все значения, начинающиеся со знака '=' будут интерпретироваться как формулы ( См.подробнее здесь ). 
      • Если данная опция выключена, то значения будут вставлены в ячейку обычным образом.