SAP ABAP-tabelcontrole met voorbeelden
⚡ Slimme samenvatting
SAP ABAP Table Control geeft een interne tabel weer als een scrollbaar raster op een scherm dat is ingebouwd in de Screen-module. PainterDeze pagina legt de functies uit, de CONTROLS-declaratie, cursorverwerking, de PBO- en PAI-lussen en kolomkenmerken.
Wat is een tabelbesturingselement in SAP ABAP?
Tabelbesturingselementen en staplussen zijn objecten voor schermtabelweergave die u toevoegt aan een scherm in het scherm Painter.
Vanuit programmeeroogpunt zijn tafelbedieningen en staplussen vrijwel precies hetzelfde. Tabelbesturingselementen zijn eenvoudigweg verbeterde staplussen die gegevens weergeven met de look en feel die hoort bij tabellen in desktoptoepassingen.
Kenmerken van ABAP-tabelbeheer
Met tabelbesturingselementen kan de gebruiker:
- Blader verticaal en horizontaal door de tabel
- Pas de breedte van een kolom aan
- Bladeren binnen een veld (wanneer de veldinhoud breder is dan het veld)
- Selecteer tabelrijen of -kolommen
- Herschik de volgorde van de kolommen
- Bewaar de huidige weergave-instellingen voor toekomstig gebruik
Tabelbesturingselementen bieden ook speciale opmaakfuncties (sommige automatisch, sommige optioneel) waardoor tabellen gemakkelijker te bekijken en te gebruiken zijn. Tabelcontrole biedt –
- automatisch formaat van de tabel (verticaal en horizontaal) wanneer de gebruiker het formaat van het venster wijzigt
- scheidingslijnen tussen rijen en tussen kolommen (verticaal en horizontaal)
- kolomkopvelden voor alle kolommen
Over het algemeen worden veel van de functies van het tabelbesturingselement lokaal afgehandeld door uw systeem SAPgui frontend, dus je hoeft ze niet zelf te programmeren. De enige opmerkelijke uitzondering hierop is verticaal scrollen.
Voorbeeld (transactie TZ60)
Transactie TZ60 hierboven toont het eindresultaat: een raster met kolomkoppen, scheidingslijnen en een selectiekolom. De verschillen met de oudere staplus worden hieronder samengevat.
Tabelbesturing versus stappenlus
Een kenmerk van staplussen is dat hun tabelrijen zich over meerdere regels op het scherm kunnen uitstrekken. Een rij van een tabelbesturingselement daarentegen moet altijd binnen één regel vallen (hoewel scrollen wel mogelijk is). De onderstaande tabel vergelijkt de twee schermelementen.
| criteria | Tabelbesturing | Staplus |
|---|---|---|
| Rij-indeling | Eén regel is altijd één schermregel. | Eén regel kan meerdere schermregels beslaan. |
| Kolomverwerking | Kolommen kunnen door de gebruiker worden aangepast qua grootte, volgorde en verborgen. | Vaste kolomindeling gedefinieerd op het scherm |
| Scrollen | Horizontaal scrollen via de frontend, verticaal scrollen geprogrammeerd in PAI. | Volledig geprogrammeerd in ABAP-code. |
| Verklaring | CONTROLS … TYPE TABLEVIEW USING SCREEN | Geen controlestructuur in het programma |
| Weergave-instellingen | De gebruiker kan een persoonlijke lay-out opslaan. | Niet beschikbaar |
Omdat de tabelbesturing het moderne element is, is de rest van deze pagina daarop gebaseerd.
Hoe maak en programmeer je een tabelbesturingselement?
Een tabelbesturingselement vereist een schermelement, een besturingsstructuur in het programma en een lus in zowel PBO als PAI. De onderstaande subsecties volgen die volgorde.
De controle verklaren
Om tabelbesturingselementen in ABAP-programma's te verwerken, moet u een besturingselement in het declaratiegedeelte van het programma voor elk tabelbesturingselement declareren met behulp van de volgende instructie:
CONTROLS <ctrl> TYPE TABLEVIEW USING SCREEN <scr>
waar is de naam van het tabelbesturingselement op een scherm in het ABAP-programma. Met de besturing kan het ABAP-programma de attributen van de tabelbesturing lezen en de besturing beïnvloeden. Hier, is het schermnummer waar de initiële waarden van de tabel worden geladen.
De cursorpositie instellen en uitlezen
De cursorpositie voor een tabelbesturingselement kan op de volgende manieren worden ingesteld:
Bij PBO kunt u de cursor op een specifiek veld van een specifieke rij van een tabelbesturingselement plaatsen.
SET CURSOR FIELD <f> LINE <lin> [OFFSET <off>]
Met behulp van de optionele toevoeging OFFSET kunt u de offset van de cursor in het veld invoeren, zoals beschreven onder De cursorpositie instellen.
Bij PAI kunt u de huidige cursorpositie aflezen.
GET CURSOR FIELD <f> LINE <lin> ...
In aanvulling op de informatie onder De cursorpositie vinden, veld bevat informatie over op welke rij van het tabelbesturingselement de cursor zich momenteel bevindt. Je kan ook gebruiken
GET CURSOR LINE <lin>.
Om de rij van het tabelbesturingselement te bepalen. Met SY-SUBRC kunt u controleren of de cursor zich in een rij van een tabelbesturingselement bevindt.
Het lezen van de bijbehorende interne tabelregel
Voor het verkrijgen van de overeenkomstige regel van de interne tafel:
GET CURSOR line <lin>. ind = <table_control>-top_line + <lin> - 1. Read table <itab> index ind.
De systeemvariabele stepl – bevat de huidige tabelregelindex in een lus … endloop. Loopc – bevat het aantal regels dat zichtbaar is in de tabel
Het besturingselement op het scherm maken Painter
Om een tabelbesturingselement te maken
- Voeg een tabelbesturingselement toe aan je scherm.
- Geef de tabelbesturing een naam. Declareer in het ABAP-programma een structuur met dezelfde naam (CONTROLS). type TABLEVIEW USING SCREEN )
- Om velden aan te maken, ga naar de functie Dict./Program fields.
- Voer de naam in van de structuur waarvan u de velden wilt. (Als u wilt dat het uit het woordenboek van uw programma wordt gehaald, klikt u op de betreffende knop).
- Kies in de veldenlijst de gewenste velden en kies ok.
- Klik in het tabelcontrolegebied
Als u een selectiekolom wilt, vinkt u het juiste selectievakje in de kenmerken aan en geeft u het een naam. Maak het veld in de ABAP-programma.
Het coderen van de PBO- en PAI-loops
In het PBO moet u de verklaring hebben
LOOP at <itab> USING CONTROL <cntrl_name>. ENDLOOP.
In de PAI zou je dat moeten hebben.
LOOP at <itab>. ENDLOOP.
Binnen de lussen vindt de gegevensoverdracht tussen het scherm en de interne tabel plaats. Gebruik DESCRIBE TABLE om de interne tabel te vullen. LINES -regels, om het totale aantal regels in de besturing op te slaan. De FIELD-instructie kan worden gebruikt om te bepalen wanneer de gegevensoverdracht plaatsvindt.
⚠️ Waarschuwing: De PBO-lus moet de besturing benoemen met USING CONTROL. Zonder dit weet de besturing niet hoeveel regels er zijn en werkt verticaal scrollen niet meer.
Kolomkenmerken wijzigen tijdens de uitvoering
Om de attributen van individuele cellen te wijzigen, wijzigt u tijdelijk de SCREEN-tabel in de PBO. U kunt de attributen wijzigen van de structuur die door de CONTROLS-instructie is gemaakt
<cntrl>-fixed_cols etc are the attributes of the control <cntrl>-cols-index etc are the attributes of the columns. <cntrl>-cols-screen-invisible etc are the screen attributes of each column.
💡Tip: Loop over -cols in de PBO om een kolom te verbergen of te beveiligen voor een bepaalde gebruikersrol, in plaats van een tweede scherm te bouwen.


