ALV звіти в SAP Підручник – Переглядач списків ABAP
⚡ Розумний підсумок
ALV звіти в SAP, створені засобом перегляду списків ABAP, забезпечують вирівнювання стовпців, сортування, фільтрацію, підсумовування та проміжне підсумовування без використання спеціального кодування. На цій сторінці пояснюються прості, блочні та ієрархічні типи списків, їхні функціональні модулі ПОВТОРНОГО ВИКОРИСТАННЯ та варіанти відображення.

Що таке ШВЛ? SAP ABAP?
Загальними бажаними функціями будь-якого звіту є «вирівнювання стовпців», сортування, фільтрація, проміжні підсумки, загальні суми тощо. Щоб реалізувати їх з нуля, потрібно докласти багато зусиль з кодування. Щоб уникнути цього, можна використовувати концепцію під назвою ABAP List Viewer (ALV).
Кожен із цих звітів надає функціональні модулі які допомагають отримати бажаний результат без особливих зусиль. Розглянемо їх докладніше –
Класичний ALV пропонує три типи списків, і кожен з них має свій власний набір функціональних модулів REUSE:
- Простий звіт: одна внутрішня таблиця, що відображається у вигляді списку або сітки.
- Звіт про блокування: кілька внутрішніх таблиць, показаних одна під одною як окремі блоки.
- Ієрархічний звіт: таблиця заголовків та таблиця елементів, пов'язані спільним ключем.
Простий звіт
Важливі функціональні модулі в них звітом є -
- Повторне використання_alv_fieldcatalog_merge
- Reuse_alv_list_display
- Повторне використання_alv_events_get
- Reuse_alv_grid_display
- Reuse_alv_commentary_write
REUSE_ALV_FIELDCATALOG_MERGE
Цей функціональний модуль використовується для заповнення каталогу полів, який є важливим для відображення даних у ALV.
Якщо вихідні дані отримані з однієї словникової таблиці та вибрано всі стовпці, тоді нам не потрібно створювати виключно каталог полів. Досить згадати назву таблиці як параметр (I_structure_name) у REUSE_ALV_LIST_DISPLAY. Але в інших випадках нам потрібно його створити.
Примітка: Fieldcatalog можна також заповнити вручну, заповнивши всі необхідні дані у внутрішній таблиці
Важливими параметрами є:
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. Таблиці:
- a. t_outtab : внутрішня таблиця з даними для виведення
ПОВТОРНЕ_ВИКОРИСТАННЯ_ПОДІЙ_ПОДІЙ
Повертає таблицю можливих подій для типу списку
1. Імпорт:
Et_Events :Повертається таблиця подій із усіма можливими подіями CALLBACK для вказаного типу списку (стовпець «NAME»). Для того, щоб події оброблялися функцією зворотнього виклику, необхідно заповнити їх поле «ФОРМА». Якщо поле ініціалізовано, подія ігнорується. Запис можна прочитати з таблиці подій, заповнити поле «FORM» і змінити запис за допомогою констант із пулу типів 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
Примітка: Сітка не може обробляти великі обсяги. Такі функції, як сортування та прокручування вниз, споживають багато ресурсів/часу, якщо обсяг даних, що відображаються, великий. Немає чіткого визначення, що якщо обсяг даних X, то потрібно використовувати список або сітку, але розробник повинен приймати рішення на основі свого досвіду. Якщо ви не впевнені, то список — кращий варіант.
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
- Це_події
- I_tabname_header : Ім’я внутрішньої таблиці в програмі, що містить вихідні дані найвищого рівня ієрархії.
- I_tabname_item : назва внутрішньої таблиці в програмі, що містить вихідні дані найнижчого рівня ієрархії.
- Is_keyinfo : ця структура містить заголовок і назви полів таблиці елементів, які пов’язують дві таблиці (спільний ключ).
таблиці
- t_outtab_header : Таблиця заголовків із даними для виведення
- t_outtab_item : назва внутрішньої таблиці в програмі, що містить вихідні дані найнижчого рівня ієрархії.
Усі визначення внутрішніх таблиць, структур і констант оголошено в пулі типів під назвою SLIS. Ця внутрішня таблиця може бути заповнена автоматично за допомогою REUSE_ALV_FIELDCATALOG_MERGE'.
Варіанти відображення
- Варіанти відображення використовуються для встановлення властивостей за замовчуванням виводу alv, таких як критерії сортування, критерії фільтрації, загальні та проміжні підсумки тощо
- Варіанти відображення можуть бути індивідуальними та стандартними (стандартні варіанти можуть використовуватися будь-яким користувачем)
- Тип варіантів відображення, які можна зберегти, контролюється параметром i_save, який передається у функціональних модулях reuse_alv_list_display / reuse_alv_grid_display
- Ви можете надати опцію на екрані вибору, щоб вибрати, який варіант відображення використовувати
Загальні функціональні модулі, пов’язані з вибором/підтвердженням варіантів відображення
- Повторне використання_alv_variant_default_get
- Повторне використання_alv_variant_f4
- Reuse_alv_variant_existence
💡 Порада: Передайте I_SAVE = 'U', щоб дозволити лише варіанти, визначені користувачем, 'X' лише для стандартних варіантів та 'A' для обох. Пусте значення повністю блокує збереження.
Це все ABAP – Програмування ALV!
