SAP ABAP-tabellkontroll med exempel
⚡ Smart sammanfattning
SAP ABAP-tabellkontroll visar en intern tabell som ett rullningsbart rutnät på en skärm som är inbyggd i skärmen. PainterDen här sidan förklarar dess funktioner, CONTROLS-deklarationen, markörhantering, PBO- och PAI-looparna samt kolumnattribut.

Vad är en tabellkontroll i SAP ABAP?
Tabellkontroller och stegslingor är objekt för skärmtabellvisning som du lägger till på en skärm på skärmen Painter.
Ur programmeringssynpunkt är bordskontroller och stegslingor nästan exakt samma. Tabellkontroller är helt enkelt förbättrade stegslingor som visar data med det utseende och känsla som associeras med tabeller i skrivbordsapplikationer.
Funktioner hos ABAP Table Control
Med tabellkontroller kan användaren:
- Bläddra genom tabellen vertikalt och horisontellt
- Ändra storlek på bredden på en kolumn
- Rulla inom ett fält (när fältinnehållet är bredare än fältet)
- Välj tabellrader eller kolumner
- Ordna om kolumnsekvensen
- Spara de aktuella skärminställningarna för framtida bruk
Tabellkontroller erbjuder också speciella formateringsfunktioner (vissa automatiska, andra valfria) som gör tabeller lättare att titta på och använda. Bordskontroll ger –
- automatisk tabelländring (vertikal och horisontell) när användaren ändrar storlek på fönstret
- skiljelinjer mellan rader och mellan kolumner (vertikal och horisontell)
- kolumnrubrikfält för alla kolumner
I allmänhet hanteras många av funktionerna som tillhandahålls av tabellkontrollen lokalt av ditt system SAPgui frontend, så du behöver inte programmera dem själv. Det enda anmärkningsvärda undantaget från detta är vertikal rullning.
Exempel (Transaktion TZ60)
Transaktion TZ60 ovan visar det färdiga resultatet: ett rutnät med kolumnrubriker, avgränsningsrader och en markeringskolumn. Skillnaderna från den äldre stegslingan sammanfattas härnäst.
Tabellkontroll kontra stegslinga
En egenskap hos stegslingor är att deras tabellrader kan sträcka sig över mer än en rad på skärmen. En rad i en tabellkontroll måste däremot alltid finnas på en enda rad (även om det är möjligt att skrolla). Tabellen nedan jämför de två skärmelementen.
| Kriterier | Tabellkontroll | Stegslinga |
|---|---|---|
| Radlayout | En rad är alltid en skärmrad | En rad kan sträcka sig över flera skärmrader |
| Kolumnhantering | Kolumner kan ändra storlek, ordnas om och döljas av användaren | Fast kolumnlayout definierad på skärmen |
| Rulla | Horisontell rullning via frontend, vertikal rullning programmerad i PAI | Programmerad helt i ABAP-koden |
| Förklaring | KONTROLLER … SKRIV TABLEVIEW MED SKÄRMEN | Ingen kontrollstruktur i programmet |
| Bildskärmsinställningar | Användaren kan spara en personlig layout | Ej tillgänglig |
Eftersom tabellkontrollen är det moderna elementet programmerar resten av den här sidan det.
Hur man skapar och programmerar en tabellkontroll
En tabellkontroll behöver ett skärmelement, en kontrollstruktur i programmet och en loop i både PBO och PAI. Underavsnitten nedan följer den ordningen.
Deklarera kontrollen
För att hantera tabellkontroller i ABAP-program måste du deklarera en kontroll i deklarationsdelen av programmet för varje tabellkontroll med följande sats:
CONTROLS <ctrl> TYPE TABLEVIEW USING SCREEN <scr>
var är namnet på tabellkontrollen på en skärm i ABAP-programmet. Kontrollen låter ABAP-programmet läsa attributen för tabellkontrollen och påverka kontrollen. Här, är skärmnumret där de initiala värdena för tabellen laddas.
Ställa in och läsa av markörens position
Markörposition för en tabellkontroll kan ställas in på följande sätt:
På PBO kan du ställa in markören på ett specifikt fält i en specifik rad i en tabellkontroll.
SET CURSOR FIELD <f> LINE <lin> [OFFSET <off>]
Med den valfria tilläggsförskjutningen OFFSET kan du ange markörens förskjutning i fältet enligt beskrivningen under Ställa in markörpositionen.
På PAI kan du avläsa den aktuella markörpositionen.
GET CURSOR FIELD <f> LINE <lin> ...
Förutom informationen i fältet Ta reda på markörpositionen innehåller information om vilken rad i tabellkontrollen markören befinner sig på. Du kan också använda
GET CURSOR LINE <lin>.
för att bestämma raden för tabellkontrollen. SY-SUBRC låter dig kontrollera om markören är placerad i en rad i en tabellkontroll.
Läser motsvarande interna tabellrad
För att få motsvarande rad av inre bord:
GET CURSOR line <lin>. ind = <table_control>-top_line + <lin> - 1. Read table <itab> index ind.
Systemvariabeln stepl – innehåller det aktuella tabelllinjeindexet i en loop … endloop. Loopc – innehåller antalet synliga rader i tabellen
Skapa kontrollen på skärmen Painter
För att skapa en tabellkontroll
- Lägg till ett tabellkontrollelement på din skärm
- Ge tabellkontrollen ett namn. I ABAP-programmet deklarera en struktur med samma (CONTROLS) skriv TABELLVIEW MED HJÄLP AV SKÄRMEN )
- För att skapa fält, gå till funktionen Dikt./Programfält.
- Ange namnet på strukturen vars fält du vill ha. (Om du vill att den ska välja den från ordlistan för ditt program klickar du på den relevanta knappen).
- I fältlistan väljer du de fält du vill ha och väljer ok.
- Klicka i tabellkontrollområdet
Om du vill ha en urvalskolumn, markera lämplig kryssruta i attributen och ge den ett namn. Skapa fältet i ABAP-program.
Kodning av PBO- och PAI-slingorna
I PBO bör du ha uttalandet
LOOP at <itab> USING CONTROL <cntrl_name>. ENDLOOP.
I PAI bör du ha.
LOOP at <itab>. ENDLOOP.
Det är inom looparna som dataöverföring sker mellan skärmen och den interna tabellen. När du fyller i den interna tabellen använder du BESKRIV TABELL. LINES -linjer, för att lagra det totala antalet rader i kontrollen. FIELD-satsen kan användas för att styra när dataöverföringen sker
⚠️ Varning: PBO-slingan måste namnge kontrollen med USING CONTROL. Utan den vet kontrollen inte hur många rader som finns, och vertikal rullning slutar fungera.
Ändra kolumnattribut vid körning
För att ändra attributen för enskilda celler, ändra tillfälligt SCREEN-tabellen i PBO. Du kan ändra attributen för strukturen som skapas av CONTROLS-satsen
<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.
💡 Tips: Loop över -kolumner i PBO:en för att dölja eller skydda en kolumn för en given användarroll, snarare än att bygga en andra skärm.

