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.

  • 📋 Kärnsyfte: ABAP List Viewer tillhandahåller standardlistfunktionerna genom färdiga funktionsmoduler, så de behöver aldrig programmeras igen.
  • 🗂️ Fältkatalog: REUSE_ALV_FIELDCATALOG_MERGE bygger katalogen som beskriver varje utdatakolumn, och den kan också fyllas i manuellt.
  • 🖥️ Lista och rutnät: REUSE_ALV_LIST_DISPLAY skriver ut en klassisk lista, och REUSE_ALV_GRID_DISPLAY visar samma data i en rutnätskontroll.
  • 🧱 Blockrapport: INIT, APPEND och DISPLAY kombinerar flera interna tabeller till en utdata bestående av separata block.
  • ???? Hierarkisk rapport: REUSE_ALV_HIERSEQ_LIST_DISPLAY länkar en rubriktabell och en objekttabell via den delade nyckeln i IS_KEYINFO.
  • 🧰 Typ Pool SLIS: Varje struktur, tabelltyp och konstant som används av den klassiska ALV deklareras i typpoolen SLIS.
  • 💾 Displayvarianter: En variant lagrar standardvärden för sortering, filtrering och summering, och parametern I_SAVE avgör om den är användarspecifik eller standard.

ALV Rapporterar in SAP ABAP

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:

  1. Typ : 'H' – rubrik, 'S' – urval, 'A' – åtgärd
  2. Nyckel: endast när typ är 'S'.
  3. 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

  1. Reuse_alv_variant_default_get
  2. Återanvänd_alv_variant_f4
  3. 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!

Vanliga frågor

REUSE-modulerna tillhör den klassiska, funktionsbaserade ALV:n. CL_GUI_ALV_GRID är den objektorienterade kontrollen som är inbäddad i en anpassad container på en dynpro, och den erbjuder redigerbara celler och händelsehantering genom metoder.

Sätt DO_SUM i fältkatalogen för den kolumn som måste läggas till och skicka en sorteringstabell med SUBTOT aktiverat för den kolumn som grupperar raderna. Ingen extra beräkningskod behövs.

Skicka namnet på ett formulär till I_CALLBACK_USER_COMMAND. Formuläret tar emot funktionskoden och den valda raden, så att programmet kan läsa posten och öppna en detaljlista eller en transaktion.

Ja. AI-assistenter i ABAP-utvecklingsverktyg producerar SELECT, fältkatalogen och anropet av REUSE_ALV_GRID_DISPLAY från en beskrivning av de obligatoriska kolumnerna. Den genererade SELECT-funktionen behöver fortfarande en prestandakontroll.

Nej. ALV är fortfarande standardutgången för SAP GUI-rapporter. AI-assistenter tillför mervärde genom att sammanfatta en lång lista, identifiera extremvärden och besvara frågor om den visade informationen på ett enkelt språk.

Sammanfatta detta inlägg med: