SAP ABAP-tabellkontroll med exempel

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

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, å andra sidan, måste alltid finnas på en enda rad (även om rullning är möjlig).

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

syntax

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.

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 i tabellkontrollen. SY-SUBRC låter dig kontrollera om markören är placerad i en rad av en tabellkontroll.

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

För att skapa en tabellkontroll

1.Lägg till ett tabellkontrollelement på skärmen

2.Ge ett namn till tabellkontrollen. I ABAP-programmet deklarera en struktur med samma ( CONTROLS skriv TABELLVY MED SKÄRM )

3. För att skapa fält, gå till funktionen Dict./Program fields.

  • 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.

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 DESCRIBE TABLE RADER -rader, 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

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.