ALV звіти в SAP Підручник – Переглядач списків ABAP

⚡ Розумний підсумок

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

  • 📋 Основна мета: Переглядач списків ABAP надає стандартні функції списків за допомогою готових функціональних модулів, тому їх ніколи не потрібно програмувати знову.
  • 🗂️ Каталог полів: REUSE_ALV_FIELDCATALOG_MERGE створює каталог, який описує кожен вихідний стовпець, і його також можна заповнити вручну.
  • 🖥️ Список і сітка: REUSE_ALV_LIST_DISPLAY друкує класичний список, а REUSE_ALV_GRID_DISPLAY відображає ті самі дані в елементі керування сіткою.
  • 🧱 Звіт про блокування: INIT, APPEND та DISPLAY об'єднують кілька внутрішніх таблиць в один вивід, що складається з окремих блоків.
  • ???? Ієрархічний звіт: REUSE_ALV_HIERSEQ_LIST_DISPLAY пов'язує таблицю заголовків та таблицю елементів через спільний ключ у IS_KEYINFO.
  • 🧰 Тип пулу SLIS: Кожна структура, табличний тип і константа, що використовуються класичним ALV, оголошуються в пулі типів SLIS.
  • 💾 Варіанти відображення: Варіант зберігає значення сортування, фільтрації та підсумовування за замовчуванням, а параметр I_SAVE визначає, чи є він специфічним для користувача, чи стандартним.

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. Змінюється

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.

Ця внутрішня таблиця має три поля:

  1. Тип: 'H' – заголовок, 'S' – виділення, 'A' – дія
  2. Клавіша : лише тоді, коли типом є «S».
  3. Інформація: текст для друку

Приклад: Простий звіт 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
  • Ви можете надати опцію на екрані вибору, щоб вибрати, який варіант відображення використовувати

Загальні функціональні модулі, пов’язані з вибором/підтвердженням варіантів відображення

  1. Повторне використання_alv_variant_default_get
  2. Повторне використання_alv_variant_f4
  3. Reuse_alv_variant_existence

💡 Порада: Передайте I_SAVE = 'U', щоб дозволити лише варіанти, визначені користувачем, 'X' лише для стандартних варіантів та 'A' для обох. Пусте значення повністю блокує збереження.

Це все ABAP – Програмування ALV!

Поширені запитання

Модулі REUSE належать до класичного, функціонально-орієнтованого ALV. CL_GUI_ALV_GRID – це об'єктно-орієнтований елемент керування, вбудований у спеціальний контейнер на dynpro, який пропонує редагування комірок та обробку подій за допомогою методів.

В каталозі полів для стовпця, який потрібно додати, встановіть DO_SUM, а для стовпця, що групує рядки, передайте таблицю сортування з увімкненим параметром SUBTOT. Додатковий код обчислення не потрібен.

Передати назву форми до I_CALLBACK_USER_COMMAND. Форма отримає код функції та вибраний рядок, щоб програма могла прочитати запис і відкрити список деталей або транзакцію.

Так. Помічники штучного інтелекту в інструментах розробки ABAP створюють SELECT, каталог полів та виклик REUSE_ALV_GRID_DISPLAY з опису необхідних стовпців. Згенерований SELECT все ще потребує перевірки продуктивності.

Ні. ALV залишається стандартним виходом SAP Звіти графічного інтерфейсу. Помічники зі штучним інтелектом додають цінність, підсумовуючи довгий список, виявляючи винятки та відповідаючи на запитання щодо відображених даних простою мовою.

Підсумуйте цей пост за допомогою: