SAP ABAP-tabellkontroll med eksempler
โก Smart oppsummering
SAP ABAP-tabellkontroll viser en intern tabell som et rullbart rutenett pรฅ en skjerm innebygd i skjermbildet PainterDenne siden forklarer funksjonene, CONTROLS-deklarasjonen, markรธrhรฅndtering, PBO- og PAI-lรธkkene og kolonneattributter.

Hva er en tabellkontroll i SAP ABAP?
Tabellkontroller og trinnlรธkker er objekter for skjermtabellvisning som du legger til en skjerm pรฅ skjermen Painter.
Fra et programmeringssynspunkt er bordkontroller og trinnlรธkker nesten helt like. Tabellkontroller er ganske enkelt forbedrede trinnlรธkker som viser data med utseendet og fรธlelsen assosiert med tabeller i skrivebordsapplikasjoner.
Funksjoner av ABAP Table Control
Med tabellkontroller kan brukeren:
- Bla gjennom tabellen vertikalt og horisontalt
- Endre stรธrrelsen pรฅ bredden pรฅ en kolonne
- Rull i et felt (nรฅr feltinnholdet er bredere enn feltet)
- Velg tabellrader eller kolonner
- Omorganiser rekkefรธlgen av kolonner
- Lagre gjeldende skjerminnstillinger for fremtidig bruk
Tabellkontroller tilbyr ogsรฅ spesielle formateringsfunksjoner (noen automatiske, noen valgfrie) som gjรธr tabeller enklere รฅ se pรฅ og bruke. Bordkontroll gir โ
- automatisk endring av tabellstรธrrelse (vertikal og horisontal) nรฅr brukeren endrer stรธrrelsen pรฅ vinduet
- skillelinjer mellom rader og mellom kolonner (vertikal og horisontal)
- kolonneoverskriftsfelt for alle kolonner
Generelt hรฅndteres mange av funksjonene som tilbys av tabellkontrollen lokalt av systemet ditt SAPgui frontend, sรฅ du trenger ikke รฅ programmere dem selv. Det eneste bemerkelsesverdige unntaket fra dette er vertikal rulling.
Eksempel (Transaksjon TZ60)
Transaksjon TZ60 ovenfor viser det ferdige resultatet: et rutenett med kolonneoverskrifter, skillelinjer og en utvalgskolonne. Forskjellene fra den eldre trinnlรธkken oppsummeres nedenfor.
Tabellkontroll vs. trinnlรธkke
En funksjon ved trinnlรธkker er at tabellradene deres kan strekke seg over mer enn รฉn linje pรฅ skjermen. En rad i en tabellkontroll mรฅ derimot alltid vรฆre pรฅ รฉn linje (selv om det er mulig รฅ bla). Tabellen nedenfor sammenligner de to skjermelementene.
| Kriterier | Tabellkontroll | Steglรธkke |
|---|---|---|
| Radoppsett | รn rad er alltid รฉn skjermlinje | รn rad kan strekke seg over flere skjermlinjer |
| Kolonnehรฅndtering | Kolonner kan endres i stรธrrelse, omorganiseres og skjules av brukeren | Fast kolonneoppsett definert pรฅ skjermen |
| Rulling | Horisontal rulling via frontend, vertikal rulling programmert i PAI | Programmert utelukkende i ABAP-koden |
| Erklรฆring | KONTROLLER โฆ SKRIV TABLEVIEW VED HJELP AV SKJERMEN | Ingen kontrollstruktur i programmet |
| Skjerminnstillinger | Brukeren kan lagre et personlig oppsett | Ikke tilgjengelig |
Fordi tabellkontrollen er det moderne elementet, programmerer resten av denne siden det.
Slik oppretter og programmerer du en tabellkontroll
En tabellkontroll trenger et skjermelement, en kontrollstruktur i programmet og en lรธkke i bรฅde PBO og PAI. Underavsnittene nedenfor fรธlger den rekkefรธlgen.
Erklรฆre kontrollen
For รฅ hรฅndtere tabellkontroller i ABAP-programmer, mรฅ du deklarere en kontroll i deklarasjonsdelen av programmet for hver tabellkontroll ved รฅ bruke fรธlgende setning:
CONTROLS <ctrl> TYPE TABLEVIEW USING SCREEN <scr>
hvor er navnet pรฅ tabellkontrollen pรฅ en skjerm i ABAP-programmet. Kontrollen lar ABAP-programmet lese attributtene til tabellkontrollen og pรฅvirke kontrollen. Her, er skjermnummeret der startverdiene til tabellen er lastet inn.
Innstilling og avlesing av markรธrposisjonen
Markรธrposisjon for en bordkontroll kan angis pรฅ fรธlgende mรฅter:
Pรฅ PBO kan du sette markรธren pรฅ et spesifikt felt i en bestemt rad i en tabellkontroll.
SET CURSOR FIELD <f> LINE <lin> [OFFSET <off>]
Ved รฅ bruke det valgfrie tillegget OFFSET, kan du angi forskyvningen av markรธren i feltet som beskrevet under Stille inn markรธrposisjonen.
Pรฅ PAI kan du lese gjeldende markรธrposisjon.
GET CURSOR FIELD <f> LINE <lin> ...
I tillegg til informasjonen gitt under Finne ut markรธrposisjonen, feltet inneholder informasjon om hvilken rad i tabellkontrollen markรธren befinner seg pรฅ. Du kan ogsรฅ bruke
GET CURSOR LINE <lin>.
for รฅ bestemme raden til tabellkontrollen. SY-SUBRC lar deg sjekke om markรธren er plassert i en rad i en tabellkontroll.
Lese den tilhรธrende interne tabelllinjen
For รฅ fรฅ den tilsvarende linjen av innvendig bord:
GET CURSOR line <lin>. ind = <table_control>-top_line + <lin> - 1. Read table <itab> index ind.
Systemvariabelen stepl โ inneholder gjeldende tabelllinjeindeks i en loop โฆ endloop. Loopc โ inneholder antall linjer som er synlige i tabellen
Opprette kontrollen pรฅ skjermen Painter
For รฅ lage en tabellkontroll
- Legg til et tabellkontrollelement pรฅ skjermen
- Gi tabellkontrollen et navn. I ABAP-programmet deklarerer du en struktur med samme (CONTROLS) skriv TABELLVIEW VED HJELP AV SKJERMEN )
- For รฅ opprette felt, gรฅ til funksjonen Dikt./Programfelt.
- Skriv inn navnet pรฅ strukturen hvis felt du vil ha. (Hvis du vil at den skal velge den fra ordboken til programmet ditt, klikk pรฅ den relevante knappen).
- Velg feltene du รธnsker i feltlisten og velg ok.
- Klikk i tabellkontrollomrรฅdet
Hvis du vil ha en utvalgskolonne, merk av i den aktuelle avmerkingsboksen i attributtene og gi den et navn. Opprett feltet i ABAP-program.
Koding av PBO- og PAI-lรธkkene
I PBO bรธr du ha uttalelsen
LOOP at <itab> USING CONTROL <cntrl_name>. ENDLOOP.
I PAI bรธr du ha.
LOOP at <itab>. ENDLOOP.
Det er innenfor lรธkkene at dataoverfรธringen skjer mellom skjermen og den interne tabellen. Nรฅr du fyller ut den interne tabellen, bruk BESKRIV TABELL LINES -linjer, for รฅ lagre det totale antallet linjer i kontrollen. FIELD-setningen kan brukes til รฅ kontrollere nรฅr dataoverfรธringen skjer
โ ๏ธ Advarsel: PBO-lรธkken mรฅ navngi kontrollen med USING CONTROL. Uten den vet ikke kontrollen hvor mange linjer det finnes, og vertikal rulling slutter รฅ virke.
Endre kolonneattributter under kjรธring
For รฅ endre attributtene til individuelle celler, endre SCREEN-tabellen midlertidig i PBO. Du kan endre attributtene til strukturen som er opprettet av CONTROLS-setningen
<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: Lรธkke over -kolonner i PBO-en for รฅ skjule eller beskytte en kolonne for en gitt brukerrolle, i stedet for รฅ bygge en andre skjerm.

