Дерево

«Дерево» - это компонент, предназначенный для экспорта 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 подобласти, которые на рисунке обозначены белыми цифрами в красных кругах, а их границы отмечены красной пунктирной линией:

  • Подобласть 1 занимает левую верхнюю ячейку области.

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

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

  • Подобласть 4 занимает остальные ячейки области разметки.

Для чего эта разметка необходима? Для начала надо понять, что:

  • Подобласти 1 и 2 отвечают за форматирование "шапки" дерева (той строчки, в которой выводятся наименования столбцов).

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

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

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

Имеется возможность для каждого уровня иерархии контролировать не только цвет заливки, но и любое другое форматирование ячеек (шрифт, цвет, размер текста и т.д.).

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

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

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

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

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

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

На рисунке ниже, нам необходимо, чтобы столбец Object ID был зеленого оттенка, а поля с адресом (все они находятся правее Object ID) были серых оттенков.

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

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

Данный пункт определяет расположение дерева относительно предыдущего компонента. Чтобы сменить направление вывода, необходимо нажать на кнопку:

Данная опция подробно описана в компоненте «Паттерн» .

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

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

  • Ориентация

Данная опция имеет два состояния:

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

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

  • Структура

Если данная опция включена, то выполняется группировка уровней иерархии - возле каждого узла, имеющего дочерние узлы появляется маркер:

При этом, есть возможность выбрать начальное состояние узлов, при их выводе в Excel:

  • все узлы развернуты.

  • все узлы свернуты.

  • каждый узел имеет то состояние, в котором пребывает соответствующий узел в ALV TREE.

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

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

Примечание: вне зависимости от этой опции, в разметке должны присутствовать подобласти 1 и 2.


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

Если данная опция включена, то будет выводиться столбец с узлами.

Примечание: вне зависимости от этой опции, в разметке должны присутствовать подобласти 1 и 3.

      • Переключатель

позволяет выбрать, будет ли столбец иерархии выведен до столбцов данных, или после них.

      • Опция

задает смещение текста узла для каждого следующего уровня иерархии относительно предыдущего. Смещение достигается добавлением определенного числа пробелов в начало текста узла. Смещение можно отключить, задав значение 0.


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

Если данная опция включена, то будут выводиться столбцы с данными.

Примечание: вне зависимости от этой опции, в разметке должны присутствовать подобласти 2 и 3.


    • Ширина из филдкаталога.

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

          • Если данная опция выключена, то ширина столбцов будет взята из соответствующих столбцов Excel-шаблона.


      • Разрешить формулы.

          • Если данная опция включена, то все значения, начинающиеся со знака '=' будут интерпретироваться как формулы ( См.подробнее здесь ).

          • Если данная опция выключена, то значения будут вставлены в ячейку обычным образом.