SAP ABAP-tabellkontroll med eksempler

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

En funksjon ved trinnløkker er at tabellradene deres kan spenne over mer enn én linje på skjermen. En rad med en tabellkontroll, på den annen side, må alltid inneholde en enkelt linje (selv om rulling er mulig).

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)

SAP ABAP bordkontroll

syntax

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.

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 i tabellkontrollen. SY-SUBRC lar deg sjekke om markøren er plassert i en rad i en tabellkontroll.

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

For å lage en tabellkontroll

1.Legg til et bordkontrollelement på skjermen

2. Gi et navn til tabellkontrollen. I ABAP-programmet erklærer en struktur med det samme ( CONTROLS skriv TABELLVISNING MED SKJERM )

3.For å opprette felt, gå til funksjonen Dict./Program fields.

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

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øring skjer mellom skjermen og den interne tabellen. Når du fyller ut den interne tabellen, bruker du DESCRIBE TABLE LINJER -linjer, for å lagre det totale antallet linjer i kontrollen. FIELD-setningen kan brukes til å kontrollere når dataoverføringen skjer

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.