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.

  • Kerndefinitie: Een tabelbesturingselement is een verbeterde staplus die tabelgegevens weergeeft met de look-and-feel van een raster in een desktopapplicatie.
  • 🧰 Ingebouwde functies: Scrollen, het aanpassen van de kolomgrootte, het herschikken van kolommen, het selecteren van rijen en het opslaan van weergave-instellingen worden afgehandeld door de SAPGUI-frontend.
  • 📜 Enkele lijnregel: Een staplusrij kan zich over meerdere schermregels uitstrekken, terwijl een tabelbesturingselementrij altijd op één regel moet passen.
  • Verklaring: BEDIENINGSELEMENTEN TYPE TABLEVIEW USING SCREEN koppelt het schermelement aan het ABAP-programma.
  • 🎯 Cursorafhandeling: SET CURSOR plaatst de cursor op positie PBO, en GET CURSOR leest het veld en de rij op positie PAI.
  • 🔁 Data overdracht: LOOP AT … USING CONTROL wordt uitgevoerd op PBO-niveau en een gewone LOOP AT wordt uitgevoerd op PAI-niveau, en gegevens worden binnen deze lussen tussen het scherm en de interne tabel verplaatst.
  • ???? Dynamische attributen: De SCREEN-tabel en de -cols structuurwijziging kolomzichtbaarheid en -opmaak tijdens runtime.

SAP ABAP-tabelcontrole

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)

SAP ABAP-tabelcontrole

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

  1. Voeg een tabelbesturingselement toe aan je scherm.
  2. Geef de tabelbesturing een naam. Declareer in het ABAP-programma een structuur met dezelfde naam (CONTROLS). type TABLEVIEW USING SCREEN )
  3. 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.

Veelgestelde vragen

De frontend verzorgt horizontaal scrollen, maar verticaal scrollen is gecodeerd in PAI. Evalueer SY-UCOMM voor de scrollfunctiecodes en verplaats het veld top_line van de besturingsstructuur voordat de volgende PBO wordt uitgevoerd.

An ALV-raster Biedt sorteer-, filter-, totaliserings- en exportmogelijkheden zonder extra code, waardoor het geschikt is voor weergavelijsten. Een tabelbesturingselement heeft de voorkeur wanneer het scherm aangepaste invoerlogica en volledige controle over elke cel vereist.

SY-STEPL bevat de index van de rij die momenteel wordt verwerkt binnen de schermlus, en SY-LOOPC bevat het aantal rijen dat zichtbaar is op het scherm. Beide worden alleen gevuld binnen de LOOP … ENDLOOP van de besturing.

Ja. AI-assistenten in ABAP-ontwikkeltools genereren de CONTROLS-declaratie, beide schermloops en de scrolllogica op basis van een beschrijving van de interne tabel. De gegenereerde stroomlogica moet nog worden getest in het scherm. Painter.

AI-analysetools lezen de stroomlogica van een dynpro, geven een lijst van de velden en functiecodes en stellen een equivalent Fiori- of ALV-gebaseerd ontwerp voor. Dit voorstel verkort de analysefase van een moderniseringsproject.

Vat dit bericht samen met: