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.

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:
- Typ: 'H' – koptekst, 'S' – selectie, 'A' – actie
- Toets: alleen als het type 'S' is.
- 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
- Hergebruik_alv_variant_default_get
- Hergebruik_alv_variant_f4
- 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!
