ALV доклади в SAP Урок – ABAP List Viewer

⚡ Умно обобщение

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

  • 📋 Основна цел: ABAP List Viewer предоставя стандартните функции на списъците чрез готови функционални модули, така че те никога не трябва да се програмират отново.
  • 🗂️ Каталог на полето: 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

В какво се съдържа 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.

Тази вътрешна таблица има три полета:

  1. Тип: 'H' – заглавка, 'S' – селекция, 'A' – действие
  2. Ключ: само когато типът е 'S'.
  3. Информация : текстът за печат

Пример: Прост отчет за 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
  • Можете да предоставите опция на екрана за избор, за да изберете какъв вариант на дисплея да се използва

Общите функционални модули, свързани с избора/валидирането на варианти на дисплея са

  1. Повторно използване_alv_variant_default_get
  2. Повторно използване_alv_variant_f4
  3. Повторно използване_alv_variant_existence

💡 Съвет: За да разрешите само потребителски специфични варианти, използвайте I_SAVE = 'U', за да позволите само потребителски варианти, 'X' само за стандартни варианти и 'A' и за двата. Празна стойност блокира запазването изцяло.

Това е всичко за ABAP – ALV програмиране!

Въпроси и Отговори

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

Задайте DO_SUM в каталога на полетата за колоната, която трябва да бъде добавена, и предоставете таблица за сортиране с включена SUBTOT за колоната, която групира редовете. Не е необходим допълнителен код за изчисление.

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

Да. AI асистентите в ABAP инструментите за разработка генерират SELECT, каталога на полетата и извикването на REUSE_ALV_GRID_DISPLAY от описание на необходимите колони. Генерираният SELECT все още се нуждае от проверка на производителността.

Не. ALV остава стандартният изход на SAP Доклади с графичен потребителски интерфейс. Асистентите с изкуствен интелект добавят стойност, като обобщават дълъг списък, забелязват отклонения и отговарят на въпроси относно показаните данни на разбираем език.

Обобщете тази публикация с: