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.

  • ๐Ÿ–ฅ๏ธ Kjernedefinisjon: En tabellkontroll er en forbedret trinnlรธkke som viser tabelldata med utseendet og fรธlelsen av et rutenett for skrivebordsprogrammer.
  • ๐Ÿงฐ Innebygde funksjoner: Blaing, endring av kolonnestรธrrelse, omorganisering av kolonner, radvalg og lagrede visningsinnstillinger hรฅndteres av SAPGUI-grensesnitt.
  • ๐Ÿ“œ Regel for รฉn linje: En trinnlรธkkerad kan strekke seg over flere skjermlinjer, mens en tabellkontrollrad alltid mรฅ passe pรฅ รฉn linje.
  • โŒจ๏ธ Erklรฆring: KONTROLLER SKRIV TABELLVIEW VED HJELP AV SKJERMEN kobler skjermelementet til ABAP-programmet.
  • ๐ŸŽฏ Markรธrhรฅndtering: SET CURSOR plasserer markรธren ved PBO, og GET CURSOR leser feltet og raden ved PAI.
  • ๐Ÿ” Data overfรธring: LOOP AT โ€ฆ USING CONTROL kjรธrer ved PBO og en vanlig LOOP AT kjรธrer ved PAI, og data flyttes mellom skjermen og den interne tabellen inne i disse lรธkkene.
  • ๐ŸŽจ Dynamiske attributter: SKJERM-tabellen og -cols struktur endrer kolonnesynlighet og formatering under kjรธretid.

SAP ABAP bordkontroll

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)

SAP ABAP bordkontroll

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

  1. Legg til et tabellkontrollelement pรฅ skjermen
  2. Gi tabellkontrollen et navn. I ABAP-programmet deklarerer du en struktur med samme (CONTROLS) skriv TABELLVIEW VED HJELP AV SKJERMEN )
  3. 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.

Spรธrsmรฅl og svar

Frontend-systemet hรฅndterer horisontal rulling, men vertikal rulling er kodet i PAI. Evaluer SY-UCOMM for kodene for rullefunksjonen og flytt top_line-feltet i kontrollstrukturen fรธr neste PBO kjรธres.

An ALV-rutenett tilbyr sortering, filtrering, totaler og eksport uten ekstra kode, slik at den passer til visningslister. En tabellkontroll foretrekkes nรฅr skjermen trenger tilpasset inputlogikk og full kontroll over hver celle.

SY-STEPL inneholder indeksen til raden som for รธyeblikket behandles i skjermlรธkken, og SY-LOOPC inneholder antall rader som er synlige pรฅ skjermen. Begge fylles kun inn i LOOP โ€ฆ ENDLOOP til kontrollen.

Ja. AI-assistenter i ABAP-utviklingsverktรธy utarbeider CONTROLS-deklarasjonen, begge skjermlรธkker og rullelogikken fra en beskrivelse av den interne tabellen. Den genererte flytlogikken trenger fortsatt testing i skjermbildet. Painter.

AI-analyseverktรธy leser flytlogikken til en dynpro, lister opp feltene og funksjonskodene, og foreslรฅr et tilsvarende Fiori- eller ALV-basert design. Forslaget forkorter analysefasen i et moderniseringsprosjekt.

Oppsummer dette innlegget med: