ALV Rapporterar in SAP Handledning – ABAP List Viewer
⚡ Smart sammanfattning
ALV Rapporterar in SAP, producerad av ABAP List Viewer, levererar kolumnjustering, sortering, filtrering, totaler och delsummor utan anpassad kodning. Den här sidan förklarar de enkla listtyperna, blocklistorna och hierarkiska listtyperna, deras ÅTERANVÄNDNINGSfunktionsmoduler och visningsvarianter.

Vad är ALV i SAP ABAP?
De vanligaste funktionerna i en rapport är "kolumnjustering", sortering, filtrering, delsummor, totaler etc. För att implementera dessa från grunden krävs mycket kodningsarbete. För att undvika detta kan vi använda ett koncept som kallas ABAP List Viewer (ALV).
Var och en av dessa rapporter ger funktionsmoduler som hjälper till att producera önskad produktion utan större ansträngning. Låt oss titta på dem i detalj -
Den klassiska ALV erbjuder tre listtyper, och var och en har sin egen uppsättning REUSE-funktionsmoduler:
- Enkel rapport: en intern tabell som visas som en lista eller ett rutnät.
- Blockrapport: flera interna tabeller visas under varandra som separata block.
- Hierarkisk rapport: en rubriktabell och en objekttabell länkade med en delad nyckel.
Enkel rapport
Viktiga funktionsmoduler i dessa rapport är -
- Reuse_alv_fieldcatalog_merge
- Reuse_alv_list_display
- Reuse_alv_events_get
- Återanvänd_alv_grid_display
- Reuse_alv_commentary_write
REUSE_ALV_FIELDCATALOG_MERGE
Denna funktionsmodul används för att fylla i en fältkatalog som är nödvändig för att visa data i ALV.
Om utdata kommer från en enda ordbokstabell och alla kolumner är valda, behöver vi inte enbart skapa fältkatalogen. Det räcker med att nämna tabellnamnet som en parameter (I_structure_name) i REUSE_ALV_LIST_DISPLAY. Men i andra fall måste vi skapa det.
Obs: Fältkatalog kan fyllas i manuellt också genom att fylla i alla nödvändiga detaljer i den interna tabellen
Viktiga parametrar i är:
1. Exportera:
- I_program_name : rapport-id
- I_internal_tabname : den interna utdatatabellen
- I_inclname : inkludera eller rapportnamnet där alla dynamiska formulär hanteras.
2. Förändring
- ct_fieldcat : an inre bord med typen SLIS_T_FIELDCAT_ALV som deklareras i typpoolen SLIS.
REUSE_ALV_LIST_DISPLAY
Detta är funktionsmodulen som skriver ut data.
De viktiga parametrarna är:
1. Exportera:
- I_callback_program : rapport-id
- I_bypassing_buffer : 'X'
- I_buffer_active : ' '
- I_callback_pf_status_set : rutin där en användare kan ställa in sin egen pf-status eller ändra funktionaliteten för den befintliga pf-statusen.
- I_callback_user_command : rutin där funktionskoderna hanteras.
- I_structure name : namnet på ordbokstabellen
- Is_Layout : struktur för att ställa in layouten för rapporten
- It_fieldcat : intern tabell med listan över alla fält och deras attribut som ska skrivas ut (denna tabell kan fyllas i automatiskt av funktionen)
- It_events : intern tabell med en lista över alla möjliga händelser för ALV och deras motsvarande formulärnamn.
2. Tabeller:
- a. t_outtab : intern tabell med data som ska matas ut
ÅTERANVÄND_ALV_HÄNDELSER_HÄMTAS
Returnerar tabell över möjliga händelser för en listtyp
1. Importera:
Et_Events :Händelsetabellen returneras med alla möjliga CALLBACK-händelser för den angivna listtypen (kolumn 'NAME'). För att händelser ska behandlas av återuppringningen måste deras "FORM"-fält fyllas i. Om fältet initieras ignoreras händelsen. Posten kan läsas från händelsetabellen, fältet 'FORM' fylls i och posten kan ändras med hjälp av konstanter från typpoolen SLIS.
2. Exportera:
I_list_type: 0 = enkel lista REUSE_ALV_LIST_DISPLAY
1 = hierarkisk-sekventiell lista REUSE_ALV_HIERSEQ_LIST_DISPLAY
2 = enkel blockeringslista REUSE_ALV_BLOCK_LIST_APPEND
3 = hierarkisk-sekventiell blocklista REUSE_ALV_BLOCK_LIST_HS_APPEND
REUSE_ALV_GRID_DISPLAY
En ny funktion från ABAP4.6 version, för att visa resultaten i rutnät snarare än en förhandsvisning.
Parametrar: samma som reuse_alv_list_display
Obs: Rutnät kan inte hantera stora volymer. Funktioner som sortering och nedåtgående scrollning förbrukar mycket resurser/tid om datamängden som ska visas är hög. Det finns ingen tydlig definition som säger att om datamängden är X, ska man välja lista eller rutnät, men utvecklaren måste fatta ett beslut baserat på sin erfarenhet. Om du är osäker är lista det bättre alternativet.
REUSE_ALV_COMMENTARY_WRITE
Detta används i Top-of-page-händelsen för att skriva ut rubriker och andra kommentarer för listan.
Viktiga parametrar
- It_list_commentary : Intern tabell med rubrikerna av typen slis_t_listheader.
Den här interna tabellen har tre fält:
- Typ : 'H' – rubrik, 'S' – urval, 'A' – åtgärd
- Nyckel: endast när typ är 'S'.
- Info: texten som ska skrivas ut
Exempel: En enkel ALV-rutnätsrapport
Programmet nedan omvandlar funktionsmodulerna ovan till en arbetsrapport. Det läser flygschematabellen SPFLI, bygger fältkatalogen automatiskt och visar resultatet i ett rutnät.
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.
Tre parametrar utför det mesta av arbetet. I_STRUCTURE_NAME låter fältkatalogen härledas från ordboken, så ingen kolumn beskrivs manuellt. IS_LAYOUT aktiverar randiga rader och optimerade kolumnbredder. I_SAVE = 'A' tillåter att både användarspecifika och standardvisningsvarianter sparas från den färdiga listan.
Blockera rapport
Detta ser ut som en enkel rapport, men den här rapporten har bara funktionerna sortering och filtrering. Den här rapporten används om du måste visa mer än en rapport på resultatet. Tekniskt sett om du har flera interna tabeller med data som ska visas som separata block så går vi till blockrapport av ALV.
De viktiga funktionerna som används för att skapa denna rapport är:
- REUSE_ALV_BLOCK_LIST_INIT
- REUSE_ALV_BLOCK_LIST_APPEND
- REUSE_ALV_BLOCK_LIST_DISPLAY
REUSE_ALV_BLOCK_LIST_INIT
Denna funktionsmodul används för att ställa in standard gui-status etc. Parametrarna liknar den som används i reuse_alv_list_display eller reuse_alv_grid_display
REUSE_ALV_BLOCK_LIST_APPEND
Denna funktionsmodul lägger till data till blocket.
Viktiga parametrar
1.Exportera:
- is_layout : layoutinställningar för block
- it_fieldcat : fältkatalog
- I_tabname : internt tabellnamn med alla möjliga händelser
2. Tabeller:
- t_outtab : intern tabell med utdata.
REUSE_ALV_BLOCK_LIST_DISPLAY
Denna funktionsmodul visar listan med data som läggs till av ovanstående funktion.
Parametrar: Alla parametrar är valfria.
Hierarkiska rapporter
Hierarkisk visning används för att visa data som är relaterade. Som försäljningsorder och artikeldetaljer. Här kan försäljningsorderdetaljer vara rubrikdata medan dessa artiklar i försäljningsordern kan vara artikeldata
Funktionsmodulen som används för detta är
REUSE_ALV_HIERSEQ_LIST_DISPLAY
Exportera:
- I_CALLBACK_PROGRAM
- I_CALLBACK_PF_STATUS_SET
- I_CALLBACK_USER_COMMAND
- IS_LAYOUT
- It_fieldcat
- Det_händelser
- I_tabname_header : Namnet på den interna tabellen i programmet som innehåller utdata från den högsta hierarkinivån.
- I_tabname_item : Namnet på den interna tabellen i programmet som innehåller utdata från den lägsta hierarkinivån.
- Is_keyinfo : Den här strukturen innehåller rubrik- och objekttabellfältnamnen som länkar de två tabellerna (delad nyckel).
Bord
- t_outtab_header : Rubriktabell med data som ska matas ut
- t_outtab_item : Namnet på den interna tabellen i programmet som innehåller utdata från den lägsta hierarkinivån.
Alla definitioner av interna tabeller, strukturer och konstanter deklareras i en typpool som kallas SLIS. Denna interna tabell kan fyllas i automatiskt genom att använda REUSE_ALV_FIELDCATALOG_MERGE'.
Visa varianter
- Visningsvarianter används för att ställa in standardegenskaperna för en alv-utdata som sorteringskriterier, filtreringskriterier, summering och subtotalering etc.
- Visningsvarianter kan vara användarspecifika och standard (standardvarianter kan användas av alla användare)
- Vilka visningsvarianter som kan sparas styrs av parametern i_save som skickas i funktionsmodulerna reuse_alv_list_display / reuse_alv_grid_display
- Du kan ge ett alternativ på urvalsskärmen för att välja vilken visningsvariant som ska användas
De vanliga funktionsmodulerna relaterade till val/validering av displayvarianter är
- Reuse_alv_variant_default_get
- Återanvänd_alv_variant_f4
- Reuse_alv_variant_existence
💡 Tips: Skicka I_SAVE = 'U' för att endast tillåta användarspecifika varianter, 'X' för endast standardvarianter och 'A' för båda. Ett tomt värde blockerar sparning helt och hållet.
Det är allt ABAP – ALV-programmering!
