Raporty ALV w SAP Samouczek – Przeglądarka list ABAP

⚡ Inteligentne podsumowanie

Raporty ALV w SAP, generowane przez ABAP List Viewer, oferują wyrównywanie kolumn, sortowanie, filtrowanie, sumy i sumy częściowe bez konieczności niestandardowego kodowania. Ta strona wyjaśnia typy list: proste, blokowe i hierarchiczne, ich moduły funkcji REUSE oraz warianty wyświetlania.

  • 📋 Główny cel: ABAP List Viewer udostępnia standardowe funkcje listy za pośrednictwem gotowych modułów funkcyjnych, dzięki czemu nie ma potrzeby ich ponownego programowania.
  • 🗂️. Katalog terenowy: REUSE_ALV_FIELDCATALOG_MERGE tworzy katalog opisujący każdą kolumnę wyjściową. Można go również wypełnić ręcznie.
  • 🖥️. Lista i siatka: REUSE_ALV_LIST_DISPLAY drukuje klasyczną listę, natomiast REUSE_ALV_GRID_DISPLAY wyświetla te same dane w kontrolce siatki.
  • 🧱 Raport blokowy: Funkcje INIT, APPEND i DISPLAY łączą kilka tabel wewnętrznych w jedno wyjście składające się z oddzielnych bloków.
  • 🌳 Raport hierarchiczny: REUSE_ALV_HIERSEQ_LIST_DISPLAY łączy tabelę nagłówków i tabelę elementów za pomocą klucza współdzielonego w IS_KEYINFO.
  • 🧰 Typ puli SLIS: Każda struktura, typ tabeli i stała używana w klasycznym ALV jest zadeklarowana w puli typów SLIS.
  • 💾 Warianty wyświetlania: Wariant przechowuje domyślne ustawienia sortowania, filtrowania i sumowania, a parametr I_SAVE decyduje, czy są one specyficzne dla użytkownika, czy standardowe.

Raporty ALV w SAP ABAP

Czym jest ALV SAP ABAP?

Typowe funkcje każdego raportu to „wyrównanie kolumn”, sortowanie, filtrowanie, sumy częściowe, sumy całkowite itp. Implementacja tych funkcji od podstaw wymaga dużego nakładu pracy w zakresie kodowania. Aby tego uniknąć, możemy skorzystać z koncepcji zwanej ABAP List Viewer (ALV).

Każdy z tych raportów zapewnia moduły funkcyjne które pomagają w uzyskaniu pożądanej wydajności bez większego wysiłku. Przyjrzyjmy się im szczegółowo –

Klasyczny ALV oferuje trzy typy list, a każdy z nich ma swój własny zestaw modułów funkcji REUSE:

  • Prosty raport: jedna wewnętrzna tabela wyświetlana jako lista lub siatka.
  • Raport blokowy: kilka wewnętrznych tabel wyświetlanych jedna pod drugą jako oddzielne bloki.
  • Raport hierarchiczny: tabela nagłówków i tabela elementów połączone wspólnym kluczem.

Prosty raport

Ważne moduły funkcyjne w nich zawarte raport są -

  • Reuse_alv_fieldcatalog_merge
  • Użyj ponownie_alv_list_display
  • Użyj ponownie_alv_events_get
  • Użyj ponownie_alv_grid_display
  • Użyj ponownie_alv_commentary_write

REUSE_ALV_FIELDCATALOG_MERGE

Ten moduł funkcyjny służy do wypełniania katalogu pól niezbędnego do wyświetlania danych w ALV.

Jeśli dane wyjściowe pochodzą z jednej tabeli słownikowej i wybrane są wszystkie kolumny, nie musimy tworzyć wyłącznie katalogu pól. Wystarczy wspomnieć nazwę tabeli jako parametr (I_structure_name) w REUSE_ALV_LIST_DISPLAY. Ale w innych przypadkach musimy go stworzyć.

Uwaga: Katalog pól można wypełnić również ręcznie, wpisując wszystkie wymagane szczegóły do ​​tabeli wewnętrznej.

Ważne parametry w to:

1. Eksport:

  • I_program_name: identyfikator raportu
  • I_internal_tabname : wewnętrzna tabela wyjściowa
  • I_inclname : zawiera lub nazwę raportu, w którym obsługiwane są wszystkie formularze dynamiczne.

2. Zmiana

  • ct_fieldcat: stół wewnętrzny z typem SLIS_T_FIELDCAT_ALV zadeklarowanym w puli typów SLIS.

REUSE_ALV_LIST_DISPLAY

Jest to moduł funkcyjny, który drukuje dane.

Ważne parametry to:

1. Eksport:

  • I_callback_program: identyfikator raportu
  • I_bypassing_buffer : 'X'
  • I_buffer_active : ' '
  • I_callback_pf_status_set : procedura, w której użytkownik może ustawić swój własny status pf lub zmienić funkcjonalność istniejącego statusu pf.
  • I_callback_user_command: procedura, w której obsługiwane są kody funkcji.
  • I_structure name : nazwa tabeli słownika
  • Is_Layout: struktura ustawiająca układ raportu
  • It_fieldcat : wewnętrzna tabela zawierająca listę wszystkich pól i ich atrybutów, które mają zostać wydrukowane (tabela ta może zostać automatycznie zapełniona przez funkcję)
  • It_events: wewnętrzna tabela z listą wszystkich możliwych zdarzeń ALV i odpowiadającymi im nazwami formularzy.

2. Tabele:

  • A. t_outtab: wewnętrzna tabela z danymi, które mają zostać wyprowadzone

PONOWNIE UŻYJ_ALV_ZDARZEŃ_GET

Zwraca tabelę możliwych zdarzeń dla typu listy

1. Importuj:

Et_Wydarzenia:Zwracana jest tabela zdarzeń ze wszystkimi możliwymi zdarzeniami CALLBACK dla określonego typu listy (kolumna „NAZWA”). Aby zdarzenia mogły zostać przetworzone przez Callback, należy wypełnić pole FORMULARZ. Jeśli pole jest inicjowane, zdarzenie jest ignorowane. Wpis można odczytać z tabeli zdarzeń, wypełnić pole FORMULARZ i zmodyfikować wpis przy pomocy stałych z puli typu SLIS.

2. Eksport:

I_list_type: 0 = prosta lista REUSE_ALV_LIST_DISPLAY

1 = lista hierarchiczno-sekwencyjna REUSE_ALV_HIERSEQ_LIST_DISPLAY

2 = prosta lista bloków REUSE_ALV_BLOCK_LIST_APPEND

3 = hierarchiczno-sekwencyjna lista bloków REUSE_ALV_BLOCK_LIST_HS_APPEND

REUSE_ALV_GRID_DISPLAY

Nowa funkcja z wersji ABAP4.6 umożliwiająca wyświetlanie wyników w siatce zamiast podglądu.

Parametry: takie same jak reuse_alv_list_display

Uwaga: Siatka nie obsługuje dużych wolumenów. Funkcje takie jak sortowanie i przewijanie w dół zużywają dużo zasobów/czasu, jeśli ilość wyświetlanych danych jest duża. Nie ma jednoznacznej definicji, która mówi, że jeśli ilość danych wynosi X, należy wybrać listę lub siatkę, ale programista musi podjąć decyzję na podstawie własnego doświadczenia. Jeśli nie masz pewności, lista jest lepszym wyborem.

REUSE_ALV_COMMENTARY_WRITE

Jest to wykorzystywane w zdarzeniu Top-of-page w celu wydrukowania nagłówków i innych komentarzy do listy.

Ważne parametry

  • It_list_commentary: Wewnętrzna tabela z nagłówkami typu slis_t_listheader.

Ta wewnętrzna tabela ma trzy pola:

  1. Typ: „H” – nagłówek, „S” – wybór, „A” – akcja
  2. Klucz: tylko wtedy, gdy typem jest „S”.
  3. Informacje: tekst do wydrukowania

Przykład: prosty raport siatki ALV

Poniższy program przekształca powyższe moduły funkcji w działający raport. Odczytuje tabelę rozkładu lotów SPFLI, automatycznie tworzy katalog pól i wyświetla wynik w siatce.

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.

Trzy parametry wykonują większość pracy. I_STRUCTURE_NAME pozwala na wygenerowanie katalogu pól ze słownika, dzięki czemu żadna kolumna nie jest opisywana ręcznie. IS_LAYOUT włącza wiersze paskowane i optymalizuje szerokości kolumn. I_SAVE = 'A' umożliwia zapisanie zarówno wariantów wyświetlania specyficznych dla użytkownika, jak i standardowych z listy gotowych wyników.

Raport bloku

Wygląda to jak prosty raport, ale ten raport ma tylko funkcje sortowania i filtrowania. Ten raport jest używany, jeśli musisz wyświetlić więcej niż jeden raport na wyjściu. Mówiąc technicznie, jeśli masz wiele wewnętrznych tabel z danymi, które mają być wyświetlane jako oddzielne bloki, to wybieramy raport blokowy ALV.

Najważniejszymi funkcjami używanymi do tworzenia tego raportu są:

  • REUSE_ALV_BLOCK_LIST_INIT
  • REUSE_ALV_BLOCK_LIST_APPEND
  • REUSE_ALV_BLOCK_LIST_DISPLAY

REUSE_ALV_BLOCK_LIST_INIT

Ten moduł funkcyjny służy do ustawiania domyślnego statusu GUI itp. Parametry są podobne do tych używanych w reuse_alv_list_display lub reuse_alv_grid_display

REUSE_ALV_BLOCK_LIST_APPEND

Ten moduł funkcyjny dodaje dane do bloku.

Ważne parametry

1. Eksportuj:

  • is_layout: ustawienia układu bloku
  • it_fieldcat: katalog pól
  • I_tabname : nazwa tabeli wewnętrznej ze wszystkimi możliwymi zdarzeniami

2.Tabele:

  • t_outtab: wewnętrzna tabela z danymi wyjściowymi.

REUSE_ALV_BLOCK_LIST_DISPLAY

Ten moduł funkcyjny wyświetla listę z danymi dołączonymi przez powyższą funkcję.

Parametry: Wszystkie parametry są opcjonalne.

Raporty hierarchiczne

Wyświetlanie hierarchiczne jest używane do wyświetlania danych, które są powiązane. Jak szczegóły zamówienia sprzedaży i pozycji. Tutaj szczegóły zamówienia sprzedaży mogą być danymi nagłówka, podczas gdy pozycje w zamówieniu sprzedaży mogą być danymi pozycji

Służy do tego moduł funkcyjny

REUSE_ALV_HIERSEQ_LIST_DISPLAY

Eksport:

  • I_CALLBACK_PROGRAM
  • I_CALLBACK_PF_STATUS_SET
  • I_CALLBACK_USER_COMMAND
  • IS_LAYOUT
  • It_fieldcat
  • To_wydarzenia
  • I_tabname_header : Nazwa tabeli wewnętrznej w programie zawierającej dane wyjściowe najwyższego poziomu hierarchii.
  • I_tabname_item : Nazwa tabeli wewnętrznej w programie zawierającej dane wyjściowe najniższego poziomu hierarchii.
  • Is_keyinfo: Ta struktura zawiera nazwy pól tabeli nagłówka i elementu, które łączą dwie tabele (klucz współdzielony).

Stoły

  • t_outtab_header : Tabela nagłówków z danymi do wyprowadzenia
  • t_outtab_item : Nazwa tabeli wewnętrznej w programie zawierającej dane wyjściowe najniższego poziomu hierarchii.

Wszystkie definicje wewnętrznych tabel, struktur i stałych są zadeklarowane w puli typów o nazwie SLIS. Ta wewnętrzna tabela może zostać wypełniona automatycznie przy użyciu REUSE_ALV_FIELDCATALOG_MERGE'.

Warianty wyświetlania

  • Warianty wyświetlania służą do ustawiania domyślnych właściwości wyjścia alv, takich jak kryteria sortowania, kryteria filtrowania, sumowanie i sumowanie częściowe itp.
  • Warianty wyświetlania mogą być specyficzne dla użytkownika i standardowe (warianty standardowe mogą być używane przez dowolnego użytkownika)
  • Rodzaj wariantów wyświetlania, które można zapisać, jest kontrolowany przez parametr i_save przekazywany w modułach funkcyjnych reuse_alv_list_display / reuse_alv_grid_display
  • Na ekranie wyboru możesz udostępnić opcję wyboru wariantu wyświetlania

Powszechnymi modułami funkcyjnymi związanymi z wyborem/weryfikacją wariantów wyświetlania są

  1. Użyj ponownie_alv_variant_default_get
  2. Użyj ponownie_alv_variant_f4
  3. Reuse_alv_variant_existence

💡 Wskazówka: Przekaż I_SAVE = 'U', aby zezwolić tylko na warianty specyficzne dla użytkownika, 'X' tylko na warianty standardowe, a 'A' na oba. Pusta wartość całkowicie blokuje zapisywanie.

To wszystko ABAP – Programowanie ALV!

FAQ

Moduły REUSE należą do klasycznego, opartego na funkcjach ALV. CL_GUI_ALV_GRID to obiektowo zorientowana kontrolka osadzona w niestandardowym kontenerze na DynPro, która umożliwia edycję komórek i obsługę zdarzeń za pomocą metod.

Ustaw DO_SUM w katalogu pól dla kolumny, którą należy dodać, i przekaż tabelę sortowania z włączoną funkcją SUBTOT dla kolumny grupującej wiersze. Nie jest potrzebny żaden dodatkowy kod obliczeniowy.

Przekaż nazwę formularza do I_CALLBACK_USER_COMMAND. Formularz otrzymuje kod funkcji i wybrany wiersz, dzięki czemu program może odczytać rekord i otworzyć listę szczegółów lub transakcję.

Tak. Asystenci AI w narzędziach programistycznych ABAP generują polecenie SELECT, katalog pól i wywołanie REUSE_ALV_GRID_DISPLAY na podstawie opisu wymaganych kolumn. Wygenerowany polecenie SELECT nadal wymaga sprawdzenia wydajności.

Nie. ALV pozostaje standardowym wyjściem SAP Raporty GUI. Asystenci AI dodają wartość do raportu, podsumowując długą listę, wykrywając wartości odstające i odpowiadając na pytania dotyczące wyświetlanych danych prostym językiem.

Podsumuj ten post następująco: