ALV доклади в SAP Урок – ABAP List Viewer
⚡ Умно обобщение
ALV доклади в SAP, създадени от ABAP List Viewer, предоставят подравняване на колони, сортиране, филтриране, общи суми и междинни суми без персонализирано кодиране. Тази страница обяснява типовете прости, блокови и йерархични списъци, техните функционални модули за повторно използване и варианти на показване.

В какво се съдържа ALV SAP ABAP?
Често срещаните желани функции на всеки отчет са „подравняване на колони“, сортиране, филтриране, междинни суми, общи суми и т.н. За да се реализират от нулата, е необходимо да се положат много усилия за кодиране. За да избегнем това, можем да използваме концепция, наречена ABAP List Viewer (ALV).
Всеки от тези доклади предоставя функционални модули които помагат за получаване на желания резултат без много усилия. Нека ги разгледаме подробно –
Класическият ALV предлага три типа списъци, като всеки от тях има собствен набор от функционални модули за повторно използване:
- Прост отчет: една вътрешна таблица, показана като списък или мрежа.
- Доклад за блокове: няколко вътрешни таблици, показани една под друга като отделни блокове.
- Йерархичен отчет: заглавна таблица и таблица с елементи, свързани чрез споделен ключ.
Прост отчет
Важни функционални модули в тях докладва са -
- Повторно използване_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. Но в други случаи трябва да го създадем.
Забележка: Каталогът на полетата може да се попълни и ръчно чрез попълване на всички необходими подробности във вътрешната таблица
Важни параметри в са:
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_структура : име на таблицата с речник
- Is_Layout : структура за задаване на оформлението на отчета
- It_fieldcat : вътрешна таблица със списък на всички полета и техните атрибути, които трябва да бъдат отпечатани (тази таблица може да бъде попълнена автоматично от функцията)
- It_events : вътрешна таблица със списък на всички възможни събития на ALV и съответните им имена на форми.
2. Таблици:
- а. t_outtab : вътрешна таблица с данните за извеждане
REUSE_ALV_EVENTS_GET
Връща таблица с възможни събития за тип списък
1. Внос:
Et_Events:Таблицата със събития се връща с всички възможни CALLBACK събития за посочения тип списък (колона „ИМЕ“). За да бъдат обработени събития от Обратното извикване, тяхното поле „ФОРМУЛЯР“ трябва да бъде попълнено. Ако полето е инициализирано, събитието се игнорира. Записът може да бъде прочетен от таблицата на събитията, полето „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
Забележка: Grid не може да обработва големи обеми. Функции като сортиране и превъртане надолу консумират много ресурси/време, ако обемът на данните за показване е голям. Няма ясна дефиниция, така че ако количеството данни е X, да се използва list или grid, но разработчикът трябва да прецени въз основа на своя опит. Ако не сте сигурни, тогава list е по-добрият вариант.
REUSE_ALV_COMMENTARY_WRITE
Това се използва в събитието Top-of-page за отпечатване на заглавията и други коментари за списъка.
Важни параметри
- It_list_commentary : Вътрешна таблица със заглавия от типа slis_t_listheader.
Тази вътрешна таблица има три полета:
- Тип: 'H' – заглавка, 'S' – селекция, 'A' – действие
- Ключ: само когато типът е 'S'.
- Информация : текстът за печат
Пример: Прост отчет за ALV мрежа
Програмата по-долу превръща горепосочените функционални модули в работещ отчет. Тя чете таблицата с разписанието на полетите 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
Този функционален модул се използва за задаване на състоянието на GUI по подразбиране и т.н. Параметрите са подобни на използваните в 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 : Име на вътрешната таблица в програмата, съдържаща изходните данни от най-ниското йерархично ниво.
Всички дефиниции на вътрешни таблици, структури и константи са декларирани в пул от типове, наречен SLIS. Тази вътрешна таблица може да бъде попълнена автоматично с помощта на REUSE_ALV_FIELDCATALOG_MERGE'.
Варианти на дисплея
- Вариантите на показване се използват за задаване на свойствата по подразбиране на alv изход като критерии за сортиране, критерии за филтриране, сумиране и междинно сумиране и т.н.
- Вариантите на дисплея могат да бъдат специфични за потребителя и стандартни (стандартните варианти могат да се използват от всеки потребител)
- Видът варианти на показване, които могат да бъдат запазени, се контролира от параметъра i_save, който се предава във функционалните модули reuse_alv_list_display / reuse_alv_grid_display
- Можете да предоставите опция на екрана за избор, за да изберете какъв вариант на дисплея да се използва
Общите функционални модули, свързани с избора/валидирането на варианти на дисплея са
- Повторно използване_alv_variant_default_get
- Повторно използване_alv_variant_f4
- Повторно използване_alv_variant_existence
💡 Съвет: За да разрешите само потребителски специфични варианти, използвайте I_SAVE = 'U', за да позволите само потребителски варианти, 'X' само за стандартни варианти и 'A' и за двата. Празна стойност блокира запазването изцяло.
Това е всичко за ABAP – ALV програмиране!
