ABAP Blog, Робота з SALV Tree
Блог ABAP розробника
Ви працюєте з чистим кодом, якщо кожна функція робить приблизно те, що ви очікували. Код можна назвати красивим, якщо у вас також створюється враження, що мова була створена спеціально для цього завдання.
У. Каннінгем
Коментарі
Для відображення ієрархічного дерева, що складається з будь-якого числа рівнів ієрархії в SALV моделі, використовується клас -cl_salv_tree.

Рядки в такому дереві називаються вузлами. Кожен вузол, байдуже, на якому він рівні, має однакову структуру з усіма іншими.
Дерево, як і інші класи моделі SALV, створюється за допомогою фабрично-статичного методуfactory(). При цьому при його виклику необхідно передавати не заповнену таблицю даних, а порожню. Заповнення даних відбувається на етапі визначення вузлів для дерева. Об'єкт дерева можна створити як у повно екранному режимі, так і в контейнері, вказавши параметр r_container. Крім того, можна сховати заголовок дерева – передавши в параметр hide_header значення abap_true (X).
Приклад створення дерева без ієрархії:
Результат роботи програми:
- relat_first_child – вузол додається першим дочірній
- relat_last_child – останнім дочірнім
- relat_first_sibling – вузол додається як перший братський
- relat_last_sibling – вузол додається як останній братський
- relat_next_sibling – вузол додається як наступний братський
- relat_prev_sibling – вузол додається як попередній братський
- DEFAULT
- INHERITED
- INTENSIFIED
- INACTIVE
- INTENSIFIED_CRITICAL
- EMPHASIZED_NEGATIVE
- EMPHASIZED_POSITIVE
- EMPHASIZED
- EMPHASIZED_A
- EMPHASIZED_B
- EMPHASIZED_C

Налаштування функцій
Як і у випадку зcl_salv_table, для повноекранного режиму кнопки налаштовуються через статус GUI, стандартний можна взяти з програми — SALV_DEMO_TREE_SIMPLE. Якщо дерево відображається в контейнері, через класcl_salv_functions_tree. Однак тут немає явного обмеження на використання статусу GUI в повноекранному режимі, можна замість нього використовувати вищезгаданий клас, приклад налаштування кнопок:
Якщо раптом кнопка суми не працюватиме замініть її функцією - &CALC_SUM.
Налаштування колонок
Налаштування колонок працює так само як і зcl_salv_table, за винятком того, що для налаштування колонок у дереві використовуються класи -cl_salv_columns_tree іcl_salv_column_tree. Приклад налаштування колонок – включення оптимізації:
Обробка подій
За обробку подій дерева відповідає класcl_salv_events_tree. Для дерева можна обробити такі події:
Приклад обробки цих подій можна переглянути в стандартній програмі SALV_DEMO_TREE_EVENTS.
Налаштування осередків вузла