ALV meldt zich in SAP Tutorial – ABAP Lijstviewer

⚡ Slimme samenvatting

ALV meldt zich in SAPLijsten die door de ABAP List Viewer worden gegenereerd, bieden kolomuitlijning, sortering, filtering, totalen en subtotalen zonder dat er aangepaste code nodig is. Deze pagina beschrijft de eenvoudige, blok- en hiërarchische lijsttypen, hun REUSE-functiemodules en weergavevarianten.

  • 📋 Kerndoel: De ABAP List Viewer biedt de standaardlijstfuncties via kant-en-klare functiemodules, waardoor deze nooit meer opnieuw geprogrammeerd hoeven te worden.
  • 🗂️ Veldcatalogus: REUSE_ALV_FIELDCATALOG_MERGE bouwt de catalogus op die elke uitvoerkolom beschrijft, en deze kan ook handmatig worden gevuld.
  • Lijst en raster: REUSE_ALV_LIST_DISPLAY print een klassieke lijst, en REUSE_ALV_GRID_DISPLAY toont dezelfde gegevens in een rasterbesturingselement.
  • 🧱 Blokrapport: INIT, APPEND en DISPLAY combineren verschillende interne tabellen tot één uitvoer die bestaat uit afzonderlijke blokken.
  • ???? Hiërarchisch rapport: REUSE_ALV_HIERSEQ_LIST_DISPLAY koppelt een kopteksttabel en een itemtabel via de gedeelde sleutel in IS_KEYINFO.
  • 🧰 Type zwembad SLIS: Elke structuur, tabeltype en constante die door de klassieke ALV wordt gebruikt, is gedeclareerd in de typepool SLIS.
  • 💾 Weergavevarianten: Een variant slaat standaardwaarden op voor sorteren, filteren en totaliseren, en de parameter I_SAVE bepaalt of deze gebruikersspecifiek of standaard zijn.

ALV meldt zich in SAP ABAP

Wat is ALV in SAP ABAP?

De meest voorkomende gewenste functies van elk rapport zijn "kolomuitlijning", sorteren, filteren, subtotalen, totalen, enzovoort. Het implementeren hiervan vanaf nul vereist veel programmeerwerk. Om dit te voorkomen, kunnen we gebruikmaken van een concept genaamd ABAP List Viewer (ALV).

Elk van deze rapporten biedt functie modules die helpen bij het produceren van de gewenste output zonder veel moeite. Laten we ze in detail bekijken –

De klassieke ALV biedt drie lijsttypen, en elk type heeft zijn eigen set REUSE-functiemodules:

  • Eenvoudig rapport: één interne tabel weergegeven als een lijst of een raster.
  • Blokrapport: Verschillende interne tabellen worden onder elkaar weergegeven als afzonderlijke blokken.
  • Hiërarchisch rapport: een kopteksttabel en een itemtabel die met elkaar verbonden zijn door een gedeelde sleutel.

Eenvoudig rapport

Belangrijke functiemodules hierin verslag zijn -

  • Hergebruik_alv_fieldcatalog_merge
  • Hergebruik_alv_list_display
  • Hergebruik_alv_events_get
  • Hergebruik_alv_grid_display
  • Hergebruik_alv_commentary_write

REUSE_ALV_FIELDCATALOG_MERGE

Met dit functieblok wordt een veldcatalogus gevuld die essentieel is voor de weergave van de gegevens in ALV.

Als de uitvoergegevens afkomstig zijn uit één woordenboektabel en alle kolommen zijn geselecteerd, hoeven we niet exclusief de veldcatalogus te maken. Het is voldoende om de tabelnaam als parameter (I_structure_name) in REUSE_ALV_LIST_DISPLAY te vermelden. Maar in andere gevallen moeten we het creëren.

Let op: Fieldcatalog kan ook handmatig worden ingevuld door alle vereiste details in de interne tabel in te vullen

Belangrijke parameters zijn:

1. Uitvoer:

  • I_program_name: rapport-ID
  • I_internal_tabname : de interne uitvoertabel
  • I_inclname: include of de rapportnaam waar alle dynamische formulieren worden afgehandeld.

2. Veranderen

  • ct_fieldcat: een interne tafel met het type SLIS_T_FIELDCAT_ALV dat is gedeclareerd in de typepool SLIS.

REUSE_ALV_LIST_DISPLAY

Dit is de functiemodule die de gegevens afdrukt.

De belangrijke parameters zijn:

1. Uitvoer:

  • I_callback_program: rapport-ID
  • I_bypass_buffer : 'X'
  • I_buffer_actief : ' '
  • I_callback_pf_status_set: routine waarbij een gebruiker zijn eigen pf-status kan instellen of de functionaliteit van de bestaande pf-status kan wijzigen.
  • I_callback_user_command: routine waarin de functiecodes worden afgehandeld.
  • I_structure naam: naam van de woordenboektabel
  • Is_Layout: structuur om de lay-out van het rapport in te stellen
  • It_fieldcat: interne tabel met de lijst van alle velden en hun attributen die moeten worden afgedrukt (deze tabel kan automatisch worden gevuld door de functie)
  • It_events: interne tabel met een lijst van alle mogelijke gebeurtenissen van ALV en de bijbehorende formuliernamen.

2. Tabellen:

  • A. t_outtab: interne tabel met de uit te voeren gegevens

REUSE_ALV_EVENTS_GET

Retourneert een tabel met mogelijke gebeurtenissen voor een lijsttype

1. Importeren:

Et_Events :De gebeurtenissentabel wordt geretourneerd met alle mogelijke CALLBACK-gebeurtenissen voor het opgegeven lijsttype (kolom 'NAAM'). Om gebeurtenissen door de Callback te kunnen verwerken, moet het veld 'FORM' worden ingevuld. Als het veld is geïnitialiseerd, wordt de gebeurtenis genegeerd. De invoer kan uit de gebeurtenissentabel worden gelezen, het veld 'FORM' wordt ingevuld en de invoer kan worden gewijzigd met behulp van constanten uit het type pool SLIS.

2. Uitvoer:

I_list_type: 0 = eenvoudige lijst REUSE_ALV_LIST_DISPLAY

1 = hiërarchisch-sequentiële lijst REUSE_ALV_HIERSEQ_LIST_DISPLAY

2 = eenvoudige blokkeerlijst REUSE_ALV_BLOCK_LIST_APPEND

3 = hiërarchisch-sequentiële bloklijst REUSE_ALV_BLOCK_LIST_HS_APPEND

REUSE_ALV_GRID_DISPLAY

Een nieuwe functie vanaf de ABAP4.6-versie, om de resultaten in een raster weer te geven in plaats van in een voorbeeld.

Parameters: hetzelfde als hergebruik_alv_list_display

Let op: een grid kan geen grote hoeveelheden gegevens verwerken. Functies zoals sorteren en scrollen verbruiken veel resources/tijd als er veel gegevens moeten worden weergegeven. Er is geen eenduidige definitie die aangeeft of je bij een bepaalde hoeveelheid gegevens (X) voor een lijst of een grid moet kiezen; de ontwikkelaar moet dit zelf bepalen op basis van zijn ervaring. Bij twijfel is een lijst de betere optie.

REUSE_ALV_COMMENTARY_WRITE

Dit wordt gebruikt in de Top-of-page-gebeurtenis om de koppen en andere opmerkingen voor de lijst af te drukken.

Belangrijke parameters:

  • It_list_commentary: Interne tabel met de koppen van het type slis_t_listheader.

Deze interne tabel heeft drie velden:

  1. Typ: 'H' – koptekst, 'S' – selectie, 'A' – actie
  2. Toets: alleen als het type 'S' is.
  3. Info: de af te drukken tekst

Voorbeeld: Een eenvoudig ALV-rasterrapport

Het onderstaande programma zet de bovenstaande functiemodules om in een werkend rapport. Het leest de vluchtschematabel SPFLI, bouwt automatisch de veldcatalogus op en toont het resultaat in een raster.

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.

Drie parameters verrichten het meeste werk. I_STRUCTURE_NAME zorgt ervoor dat de veldcatalogus wordt afgeleid van het woordenboek, waardoor er geen kolommen handmatig hoeven te worden beschreven. IS_LAYOUT schakelt gestreepte rijen en geoptimaliseerde kolombreedtes in. I_SAVE = 'A' maakt het mogelijk om zowel gebruikersspecifieke als standaard weergavevarianten op te slaan vanuit de voltooide lijst.

Rapport blokkeren

Dit lijkt een eenvoudig rapport, maar dit rapport heeft alleen de functies van sorteren en filteren. Dit rapport wordt gebruikt als u meer dan één rapport op de uitvoer moet weergeven. Technisch gesproken, als u meerdere interne tabellen hebt met gegevens die als afzonderlijke blokken moeten worden weergegeven, dan gaan we voor een blokrapport van ALV.

De belangrijke functies die worden gebruikt voor het maken van dit rapport zijn:

  • REUSE_ALV_BLOCK_LIST_INIT
  • REUSE_ALV_BLOCK_LIST_APPEND
  • REUSE_ALV_BLOCK_LIST_DISPLAY

REUSE_ALV_BLOCK_LIST_INIT

Deze functiemodule wordt gebruikt om de standaard gui-status enz. in te stellen. De parameters zijn vergelijkbaar met degene die worden gebruikt in hergebruik_alv_list_display of hergebruik_alv_grid_display

REUSE_ALV_BLOCK_LIST_APPEND

Deze functiemodule voegt de gegevens toe aan het blok.

Belangrijke parameters:

1.Exporteren:

  • is_layout: lay-outinstellingen voor blok
  • it_fieldcat: veldcatalogus
  • I_tabname : interne tabelnaam met alle mogelijke gebeurtenissen

2.Tabellen:

  • t_outtab: interne tabel met uitvoergegevens.

REUSE_ALV_BLOCK_LIST_DISPLAY

Deze functiemodule geeft de lijst weer met gegevens toegevoegd door de bovenstaande functie.

Parameters: Alle parameters zijn optioneel.

Hiërarchische rapporten

Hiërarchische weergave wordt gebruikt voor het weergeven van gegevens die gerelateerd zijn. Zoals verkooporder- en artikelgegevens. Hier kunnen verkoopordergegevens de headergegevens zijn, terwijl de items in de verkooporder de artikelgegevens kunnen zijn.

De functiemodule die hiervoor wordt gebruikt is

REUSE_ALV_HIERSEQ_LIST_DISPLAY

Exporteren:

  • I_CALLBACK_PROGRAM
  • I_CALLBACK_PF_STATUS_SET
  • I_CALLBACK_USER_COMMAND
  • IS_LAYOUT
  • Het_fieldcat
  • Het_evenementen
  • I_tabname_header : Naam van de interne tabel in het programma die de uitvoergegevens van het hoogste hiërarchieniveau bevat.
  • I_tabname_item : Naam van de interne tabel in het programma die de uitvoergegevens van het laagste hiërarchieniveau bevat.
  • Is_keyinfo: deze structuur bevat de veldnamen van de header- en itemtabel die de twee tabellen met elkaar verbinden (gedeelde sleutel).

Tafels

  • t_outtab_header: Koptabel met gegevens die moeten worden uitgevoerd
  • t_outtab_item : Naam van de interne tabel in het programma die de uitvoergegevens van het laagste hiërarchieniveau bevat.

Alle definities van interne tabellen, structuren en constanten worden gedeclareerd in een typepool genaamd SLIS. Deze interne tabel kan automatisch worden gevuld met REUSE_ALV_FIELDCATALOG_MERGE'.

Varianten weergeven

  • Weergavevarianten worden gebruikt om de standaardeigenschappen van een alv-uitvoer in te stellen, zoals sorteercriteria, filtercriteria, optellingen en subtotalen enz.
  • Weergavevarianten kunnen gebruikersspecifiek en standaard zijn (standaardvarianten kunnen door elke gebruiker worden gebruikt)
  • Het type weergavevarianten dat kan worden opgeslagen, wordt bepaald door de parameter i_save die wordt doorgegeven aan de functiemodules reuse_alv_list_display / reuse_alv_grid_display.
  • Op het selectiescherm kunt u een optie opgeven om te selecteren welke displayvariant u wilt gebruiken

De algemene functiemodules met betrekking tot het selecteren/valideren van weergavevarianten zijn

  1. Hergebruik_alv_variant_default_get
  2. Hergebruik_alv_variant_f4
  3. Hergebruik_alv_variant_existence

💡Tip: Geef I_SAVE = 'U' op om alleen gebruikersspecifieke varianten toe te staan, 'X' voor alleen standaardvarianten en 'A' voor beide. Een lege waarde blokkeert het opslaan volledig.

Dat is alles ABAP – ALV-programmering!

Veelgestelde vragen

De REUSE-modules behoren tot de klassieke, functiegebaseerde ALV. CL_GUI_ALV_GRID is de objectgeoriënteerde besturingselement dat is ingebed in een aangepaste container op een dynpro en biedt bewerkbare cellen en gebeurtenisafhandeling via methoden.

Stel DO_SUM in de veldcatalogus in voor de kolom die moet worden opgeteld, en geef een sorteertabel door met SUBTOT ingeschakeld voor de kolom die de rijen groepeert. Er is geen extra berekeningscode nodig.

Geef de naam van een formulier door aan I_CALLBACK_USER_COMMAND. Het formulier ontvangt de functiecode en de geselecteerde rij, zodat het programma de record kan lezen en een detaillijst of een transactie kan openen.

Ja. AI-assistenten in ABAP-ontwikkeltools genereren de SELECT-query, de veldcatalogus en de aanroep van REUSE_ALV_GRID_DISPLAY op basis van een beschrijving van de benodigde kolommen. De gegenereerde SELECT-query moet echter nog wel op prestaties worden gecontroleerd.

Nee. ALV blijft de standaarduitvoer van SAP GUI-rapporten. AI-assistenten voegen daar waarde aan toe door een lange lijst samen te vatten, uitschieters te signaleren en vragen over de weergegeven gegevens in begrijpelijke taal te beantwoorden.

Vat dit bericht samen met: