В случае когда в вашем ALV объекте сосредоточено большое количество полей, при определении форматов могут возникать трудности поиска необходимого поля. Чтобы облегчить данный поиск вы можете объединять поля в группы, выглядит это следующим образом:
Для объединения полей в группы необходимо для начала их создать. Класс через который происходит создание этих групп называется cl_salv_specific_groups. Получить ссылку на этот объект можно из класса cl_salv_functional_settings, в свою очередь ссылку на него можно получить из главного объекта ALV. После создания полей, для всех полей группы необходимо задать ее идентификатор. Пример того как это делается:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
REPORT ZALV_SPECIFIC_GROUPS. DATA: gt_data TYPE spfli_tab, " Таблица с данными go_fun_set TYPE REF TO cl_salv_functional_settings, go_specg TYPE REF TO cl_salv_specific_groups, go_columns TYPE REF TO cl_salv_columns_list, go_column TYPE REF TO cl_salv_column_list, go_alv TYPE REF TO cl_salv_table. START-OF-SELECTION. SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_data. " Фабричный метод возвращяет экзмепляр ALV объекта TRY. cl_salv_table=>factory( IMPORTING r_salv_table = go_alv CHANGING t_table = gt_data ). CATCH cx_salv_msg . MESSAGE 'Ошибка при создании ALV' TYPE 'E'. ENDTRY. " Подключаем стандартные функции go_alv->set_screen_status( EXPORTING REPORT = 'SAPLSALV_METADATA_STATUS' pfstatus = 'SALV_TABLE_STANDARD' set_functions = CL_SALV_MODEL_BASE=>C_FUNCTIONS_ALL ). go_fun_set = go_alv->get_functional_settings( ). " Создаем группу полей. go_specg = go_fun_set->get_specific_groups( ). go_specg->add_specific_group( ID = '1' text = 'Данные отправления' ). " Добавляем поля в группу go_columns = go_alv->get_columns( ). TRY. go_column ?= go_columns->get_column( 'CITYFROM' ). go_column->set_specific_group( '1' ). go_column ?= go_columns->get_column( 'AIRPFROM' ). go_column->set_specific_group( '1' ). CATCH cx_salv_not_found. ENDTRY. " Отобразить ALV представление go_alv->display( ). |