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.

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:
- Typ: „H” – nagłówek, „S” – wybór, „A” – akcja
- Klucz: tylko wtedy, gdy typem jest „S”.
- 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ą
- Użyj ponownie_alv_variant_default_get
- Użyj ponownie_alv_variant_f4
- 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!
