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.

  • 🖥️ Kärndefinition: En tabellkontroll är en förbättrad stegslinga som visar tabelldata med utseendet och känslan av ett skrivbordsrutnät.
  • 🧰 Inbyggda funktioner: Rullning, kolumnstorleksändring, kolumnordningsändring, radval och sparade visningsinställningar hanteras av SAPGUI-gränssnitt.
  • 📜 Regel för en rad: En stegslingrad kan sträcka sig över flera skärmrader, medan en tabellkontrollrad alltid måste få plats på en rad.
  • ⌨️ Deklaration: KONTROLLER SKRIV TABLEVIEW MED SKÄRMEN länkar skärmelementet till ABAP-programmet.
  • 🎯 Markörhantering: SET CURSOR placerar markören vid PBO, och GET CURSOR läser fältet och raden vid PAI.
  • 🔁 Dataöverföring: LOOP AT … USING CONTROL körs vid PBO och en vanlig LOOP AT körs vid PAI, och data flyttas mellan skärmen och den interna tabellen inuti dessa loopar.
  • 🎨 Dynamiska attribut: SCREEN-tabellen och -cols struktur ändrar kolumnens synlighet och formatering vid körning.

SAP ABAP bordskontroll

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)

SAP ABAP bordskontroll

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

  1. Lägg till ett tabellkontrollelement på din skärm
  2. Ge tabellkontrollen ett namn. I ABAP-programmet deklarera en struktur med samma (CONTROLS) skriv TABELLVIEW MED HJÄLP AV SKÄRMEN )
  3. 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.

Vanliga frågor

Frontend-systemet hanterar horisontell rullning, men vertikal rullning är kodad i PAI. Utvärdera SY-UCOMM för rullningsfunktionskoderna och flytta fältet top_line i kontrollstrukturen innan nästa PBO körs.

An ALV-rutnät tillhandahåller sortering, filtrering, summeringar och export utan extra kod, så det passar för visningslistor. En tabellkontroll är att föredra när skärmen behöver anpassad inmatningslogik och fullständig kontroll över varje cell.

SY-STEPL innehåller indexet för den rad som för närvarande bearbetas i skärmloopen, och SY-LOOPC innehåller antalet rader som syns på skärmen. Båda fylls endast i kontrollens LOOP … ENDLOOP.

Ja. AI-assistenter i ABAP-utvecklingsverktyg utarbetar CONTROLS-deklarationen, både skärmloopar och rullningslogiken från en beskrivning av den interna tabellen. Den genererade flödeslogiken behöver fortfarande testas i skärmen. Painter.

AI-analysverktyg läser flödeslogiken i en dynpro, listar fält och funktionskoder och föreslår en motsvarande Fiori- eller ALV-baserad design. Förslaget förkortar analysfasen i ett moderniseringsprojekt.

Sammanfatta detta inlägg med: