ABAP блог, работа с SALV дърво

Блог за разработчици на ABAP

Работите с чист код, ако всяка функция прави приблизително това, което очаквате. Кодът може да се нарече красив, ако също така имате впечатлението, че езикът е създаден специално за тази задача.

W. Кънингам

Коментари

За показване на йерархично дърво, състоящо се от произволен брой нива на йерархия в модела SALV, се използва класът -cl_salv_tree.

работа

Редовете в такова дърво се наричат ​​възли. Всеки възел, независимо на какво ниво е, има същата структура като всички останали.

Дървото, подобно на други класове на модела SALV, се създава с помощта на статичния фабричен методfactory(). В същото време, когато го извиквате, е необходимо да прехвърлите не попълнена таблица с данни, а празна. Попълването на данните става на етапа на определяне на възлите за създаденото дърво. Дървовиден обект може да бъде създаден както в режим на цял екран, така и в контейнер чрез указване на параметъра r_container. Освен това можете да скриете заглавката на дървото, като подадете стойността abap_true (X) към параметъра hide_header.

Пример за създаване на дърво без йерархия:

Резултатът от програмата:

  • relat_first_child - възелът се добавя като първо дете
  • relat_last_child - последното дете
  • relat_first_sibling - възелът се добавя като първи брат
  • relat_last_sibling - възелът се добавя като последен брат
  • relat_next_sibling - възелът се добавя като следващ брат
  • relat_prev_sibling - възелът се добавя като предишен брат

  • ПО ПОДРАЗБИРАНЕ
  • ПО НАСЛЕДСТВО
  • ЗАСИЛЕН
  • НЕАКТИВЕН
  • ИНТЕНЗИРАН_КРИТИЧЕН
  • ПОДЧЕРТАНО_ОТРИЦАТЕЛНО
  • ПОДЧЕРТАНО_ПОЗИТИВНО
  • ПОДЧЕРТАВА
  • 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.

Настройка на възлова клетка