Отчеты ИВЛ в SAP Учебное пособие — Средство просмотра списков ABAP
⚡ Умное резюме
Отчеты ИВЛ в SAPСписки, созданные с помощью ABAP List Viewer, обеспечивают выравнивание столбцов, сортировку, фильтрацию, итоги и промежуточные итоги без написания пользовательского кода. На этой странице описаны простые, блочные и иерархические типы списков, их функциональные модули повторного использования и варианты отображения.

Что такое ALV в SAP АБАП?
К наиболее востребованным функциям любого отчета относятся «выравнивание столбцов», сортировка, фильтрация, промежуточные итоги, итоговые суммы и т. д. Для их реализации с нуля потребуется много работы по программированию. Чтобы этого избежать, можно использовать концепцию, называемую ABAP List Viewer (ALV).
Каждый из этих отчетов содержит функциональные модули которые помогают добиться желаемого результата без особых усилий. Давайте рассмотрим их подробно –
Классический ALV предлагает три типа списков, и каждый из них имеет свой собственный набор функциональных модулей для повторного использования:
- Простой отчет: Одна внутренняя таблица, представленная в виде списка или сетки.
- Отчет по блокам: несколько внутренних таблиц, показанных одна под другой в виде отдельных блоков.
- Иерархический отчет: Таблица заголовка и таблица товаров связаны общим ключом.
Простой отчет
Важные функциональные модули в этих докладе являются -
- Reuse_alv_fieldcatalog_merge
- Reuse_alv_list_display
- Reuse_alv_events_get
- Reuse_alv_grid_display
- Reuse_alv_commentary_write
REUSE_ALV_FIELDCATALOG_MERGE
Этот функциональный модуль используется для заполнения каталога полей, который необходим для отображения данных в ALV.
Если выходные данные взяты из одной таблицы словаря и выбраны все столбцы, то нам не нужно создавать исключительно каталог полей. Достаточно указать имя таблицы в качестве параметра (I_structure_name) в REUSE_ALV_LIST_DISPLAY. Но в других случаях нам нужно его создать.
Примечание. Каталог полей можно заполнить вручную, заполнив все необходимые данные во внутренней таблице.
Важными параметрами являются:
1. Экспорт:
- I_program_name: идентификатор отчета
- I_internal_tabname: внутренняя таблица вывода.
- I_inclname: включить или имя отчета, в котором обрабатываются все динамические формы.
2. Изменение
- ct_fieldcat: внутренний стол с типом SLIS_T_FIELDCAT_ALV, который объявлен в пуле типов SLIS.
REUSE_ALV_LIST_DISPLAY
Это функциональный модуль, который печатает данные.
Важные параметры:
1. Экспорт:
- I_callback_program: идентификатор отчета
- I_bypassing_buffer: 'X'
- I_buffer_active: ''
- I_callback_pf_status_set: процедура, в которой пользователь может установить свой собственный статус pf или изменить функциональность существующего статуса pf.
- I_callback_user_command: процедура, в которой обрабатываются коды функций.
- I_structure name: имя словарной таблицы.
- Is_Layout: структура для установки макета отчета.
- It_fieldcat: внутренняя таблица со списком всех полей и их атрибутов, которые должны быть напечатаны (эта таблица может заполняться функцией автоматически)
- It_events: внутренняя таблица со списком всех возможных событий ALV и соответствующими им именами форм.
2. Таблицы:
- а. t_outtab: внутренняя таблица с данными для вывода
REUSE_ALV_EVENTS_GET
Возвращает таблицу возможных событий для типа списка.
1. Импорт:
Et_Events:Таблица событий возвращается со всеми возможными событиями CALLBACK для указанного типа списка (столбец «ИМЯ»). Чтобы события обрабатывались обратным вызовом, их поле «ФОРМА» должно быть заполнено. Если поле инициализировано, событие игнорируется. Запись может быть прочитана из таблицы событий, поле «ФОРМА» заполнено, а запись изменена с использованием констант из пула типов SLIS.
2. Экспорт:
I_list_type: 0 = простой список REUSE_ALV_LIST_DISPLAY
1 = иерархически-последовательный список REUSE_ALV_HIERSEQ_LIST_DISPLAY
2 = простой черный список REUSE_ALV_BLOCK_LIST_APPEND
3 = иерархически-последовательный список блоков REUSE_ALV_BLOCK_LIST_HS_APPEND
REUSE_ALV_GRID_DISPLAY
Новая функция из версии ABAP4.6 для отображения результатов в сетке, а не в предварительном просмотре.
Параметры: такие же, как reuse_alv_list_display.
Примечание: Сетка (Grid) не справляется с большими объемами данных. Такие функции, как сортировка и прокрутка вниз, потребляют много ресурсов/времени, если объем отображаемых данных велик. Нет четкого определения, что лучше использовать: список (List) или сетку (Grid) при определенном объеме данных, разработчик должен принимать решение, основываясь на своем опыте. Если нет уверенности, то список (List) — лучший вариант.
REUSE_ALV_COMMENTARY_WRITE
Это используется в событии Top-of-page для печати заголовков и других комментариев для списка.
Важные параметры
- It_list_commentary: внутренняя таблица с заголовками типа slis_t_listheader.
Эта внутренняя таблица имеет три поля:
- Тип: «H» — заголовок, «S» — выбор, «A» — действие.
- Ключ: только если тип «S».
- Информация: текст для печати.
Пример: Простой отчет в формате ALV Grid
Приведенная ниже программа преобразует указанные выше функциональные модули в рабочий отчет. Она считывает таблицу расписания полетов SPFLI, автоматически формирует каталог полей и отображает результат в виде таблицы.
REPORT z_alv_demo. TYPE-POOLS: slis. DATA: lt_spfli TYPE STANDARD TABLE OF spfli, lt_fieldcat TYPE slis_t_fieldcat_alv, ls_layout TYPE slis_layout_alv. START-OF-SELECTION. * 1. Read the data into the output table SELECT * FROM spfli INTO TABLE lt_spfli. * 2. Build the field catalog from the dictionary structure CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = sy-repid i_internal_tabname = 'LT_SPFLI' i_structure_name = 'SPFLI' CHANGING ct_fieldcat = lt_fieldcat. * 3. Set the layout and display the grid ls_layout-zebra = 'X'. ls_layout-colwidth_optimize = 'X'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid is_layout = ls_layout it_fieldcat = lt_fieldcat i_save = 'A' TABLES t_outtab = lt_spfli.
Три параметра выполняют большую часть работы. I_STRUCTURE_NAME позволяет создавать каталог полей на основе словаря, поэтому ни один столбец не описывается вручную. IS_LAYOUT включает чередование строк и оптимизированную ширину столбцов. I_SAVE = 'A' позволяет сохранять как пользовательские, так и стандартные варианты отображения из готового списка.
Заблокировать отчет
Это выглядит как простой отчет, но этот отчет имеет только функции сортировки и фильтрации. Этот отчет используется, если вам нужно отобразить более одного отчета на выходе. Технически говоря, если у вас есть несколько внутренних таблиц с данными, которые должны отображаться в виде отдельных блоков, мы выбираем отчет по блокам ALV.
Важными функциями, используемыми для создания этого отчета, являются:
- REUSE_ALV_BLOCK_LIST_INIT
- REUSE_ALV_BLOCK_LIST_APPEND
- REUSE_ALV_BLOCK_LIST_DISPLAY
REUSE_ALV_BLOCK_LIST_INIT
Этот функциональный модуль используется для установки статуса графического интерфейса по умолчанию и т. д. Параметры аналогичны тем, которые используются в reuse_alv_list_display или reuse_alv_grid_display.
REUSE_ALV_BLOCK_LIST_APPEND
Этот функциональный модуль добавляет данные в блок.
Важные параметры
1.Экспорт:
- is_layout: настройки макета для блока
- it_fieldcat: каталог полей
- I_tabname: имя внутренней таблицы со всеми возможными событиями.
2. Таблицы:
- t_outtab: внутренняя таблица с выходными данными.
REUSE_ALV_BLOCK_LIST_DISPLAY
Этот функциональный модуль отображает список данных, добавленных вышеуказанной функцией.
Параметры: Все параметры являются необязательными.
Иерархические отчеты
Иерархическое отображение используется для отображения связанных данных. Например, заказ на продажу и детали товара. Здесь детали заказа на продажу могут быть данными заголовка, тогда как элементы в заказе на продажу могут быть данными позиции.
Для этого используется функциональный модуль
REUSE_ALV_HIERSEQ_LIST_DISPLAY
Экспорт:
- I_CALLBACK_PROGRAM
- I_CALLBACK_PF_STATUS_SET
- I_CALLBACK_USER_COMMAND
- IS_LAYOUT
- It_fieldcat
- It_events
- I_tabname_header: Имя внутренней таблицы в программе, содержащей выходные данные самого высокого уровня иерархии.
- I_tabname_item: Имя внутренней таблицы в программе, содержащей выходные данные самого низкого уровня иерархии.
- Is_keyinfo: эта структура содержит имена полей таблицы заголовка и элементов, которые связывают две таблицы (общий ключ).
Столы
- t_outtab_header: таблица заголовков с данными для вывода.
- t_outtab_item: Имя внутренней таблицы в программе, содержащей выходные данные самого низкого уровня иерархии.
Все определения внутренних таблиц, структур и констант объявляются в пуле типов, называемом СЛИС. Эта внутренняя таблица может заполняться автоматически с помощью REUSE_ALV_FIELDCATALOG_MERGE'.
Варианты отображения
- Варианты отображения используются для установки свойств по умолчанию для вывода alv, таких как критерии сортировки, критерии фильтрации, подведение итогов и промежуточных итогов и т. д.
- Варианты отображения могут быть специфичными для пользователя и стандартными (стандартные варианты могут использоваться любым пользователем)
- Тип сохраняемых вариантов отображения контролируется параметром i_save, передаваемым в функциональные модули reuse_alv_list_display / reuse_alv_grid_display.
- На экране выбора можно предоставить возможность выбрать, какой вариант отображения будет использоваться.
Общие функциональные модули, связанные с выбором/проверкой вариантов отображения:
- Reuse_alv_variant_default_get
- Reuse_alv_variant_f4
- Reuse_alv_variant_existence
💡 Совет: Передайте I_SAVE = 'U', чтобы разрешить сохранение только вариантов, специфичных для пользователя, 'X' — только стандартных вариантов, и 'A' — обоих типов. Пустое значение полностью блокирует сохранение.
Это все, чтобы ABAP – Программирование ИВЛ!
