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.
Настройка на възлова клетка