ABAP Blog, Робота з SALV Tree

Блог ABAP розробника

Ви працюєте з чистим кодом, якщо кожна функція робить приблизно те, що ви очікували. Код можна назвати красивим, якщо у вас також створюється враження, що мова була створена спеціально для цього завдання.

У. Каннінгем

Коментарі

Для відображення ієрархічного дерева, що складається з будь-якого числа рівнів ієрархії в SALV моделі, використовується клас -cl_salv_tree.

blog

Рядки в такому дереві називаються вузлами. Кожен вузол, байдуже, на якому він рівні, має однакову структуру з усіма іншими.

Дерево, як і інші класи моделі 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

salv

Налаштування функцій

Як і у випадку з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.

Налаштування осередків вузла