SAP ABAP intern tabell: Opprett, les, fyll inn, kopier og slett

Hva er en intern tabell?

INTERN BORD brukes til รฅ hente data fra en fast struktur for dynamisk bruk i ABAP. Hver linje i den interne tabellen har samme feltstruktur. Hovedbruken for interne tabeller er for lagring og formatering av data fra en databasetabell i et program.

Hva er et arbeidsomrรฅde?

Arbeidsomrรฅder er enkeltrader med data. De skal ha samme format som alle de interne tabellene. Den brukes til รฅ behandle dataene i en intern tabell รฉn linje om gangen.

Forskjellen mellom internt bord og et arbeidsomrรฅde?

Et bilde sier mer enn tusen ord

Forskjellen mellom internt bord og et arbeidsomrรฅde

Typer interne tabeller

Det finnes to typer interne tabeller.

  1. Interne tabeller med HEADER-linje
  2. Interne tabeller uten HEADER-linje.

Interne tabeller med overskriftslinje

  • Her oppretter systemet automatisk arbeidsomrรฅdet.
  • Arbeidsomrรฅdet har samme datatype som intern tabell.
  • Dette arbeidsomrรฅdet kalles HEADER-linjen.
  • Det er her alle endringene eller handlingene pรฅ innholdet i tabellen gjรธres. Som et resultat av dette kan poster settes inn direkte i tabellen eller รฅpnes direkte fra den interne tabellen.

Interne tabeller uten topplinje :

  • Her er det ikke noe arbeidsomrรฅde knyttet til bordet.
  • Arbeidsomrรฅde skal spesifiseres eksplisitt nรฅr vi trenger tilgang til slike tabeller.
  • Derfor kan ikke disse tabellene nรฅs direkte.

Opprette interne tabeller

Det er mange mรฅter รฅ lage en intern tabell pรฅ. La oss se pรฅ dem en etter en-

1.Ved รฅ bruke typeerklรฆringen

La oss nรฅ lage en intern tabell ved รฅ bruke TYPE-uttalelse.

Syntaksen er -

Types : begin of line,

column1 type I,

column2 type I,

end of line.

Eksempel:

TYPES : begin of line,

empno		type I,

empname(20)   	type c	,

end of line.

TYPES-setningen oppretter en strukturlinje som definert.

For รฅ faktisk lage en intern tabell, bruk fรธlgende kommando-

Data itab type line occurs 10.

En intern tabell-itab opprettes med strukturen til linje. Foruten รฅ deklarere strukturen til en intern tabell, definerer OCCURS-leddet ogsรฅ hvor mange tabelloppfรธringer som opprettholdes i hovedlageret (i dette tilfellet 10). Ekstra poster skrives ut til personsรธkeromrรฅdet og kan pรฅvirke ytelsen

2. Ved รฅ henvise til en annen tabell

Du kan opprette en intern tabell ved รฅ referere til en eksisterende tabell. Det eksisterende bordet kan vรฆre en standard SAP bord, et Z-bord eller et annet internt bord.

Syntaks-

Data <f> <type> [with header line].

Eksempel-

DATA itab TYPE line OCCURS 10 with header line.

Her lages en intern tabell-itab av typen linje med en overskriftslinje. Vรฆr oppmerksom pรฅ at "med overskrift" er valgfritt.

3. Ved รฅ referere til eksisterende struktur

Syntaks-

Data	<f> LIKE <struct> occurs n [with header line].

Eksempel-

DATA itab LIKE sline OCCURS 10.

Her lages en tabell itab med samme struktur som sline

4. Ved รฅ opprette en ny struktur

La oss nรฅ lage en intern tabell med en egen struktur. Her er tabellen opprettet med en overskriftslinje, som standard.

Syntaks โ€“

Data : Begin of <f> occurs <n>,

<component declaration>,

.................................,

End of <f>.

Eksempel -

Data : Begin of itab occurs 10,

column1       type I,

column2(4)  type C,

column3      like  mara-ernam,

End of itab.

Intern tabell itab er opprettet

Fylle inn interne tabeller

Nรฅ som vi har opprettet noen interne tabeller, la oss se hvordan vi fyller dem med noen poster. Det finnes ulike metoder tilgjengelig for รฅ fylle ut tabeller

1. Legg til data linje for linje

Den fรธrste tilgjengelige metoden er bruken av APPEND-setningen.

Ved รฅ bruke APPEND-setningen kan vi enten legge til en linje fra et annet arbeidsomrรฅde til den interne tabellen, eller vi kan legge til en innledende linje i den interne tabellen.

Syntaks โ€“

APPEND [<wa> TO / INITIAL LINE TO] <itable>.

Her arbeidsomrรฅde eller den fรธrste linjen er lagt til den interne tabellen .

Systemvariabelen SY-TABIX inneholder indeksen til den vedlagte linjen.

Eksempel:

Data: Begin of itab occurs 10,

col1 type C,

col2 type I,

end of itab.

Append initial line to itab.

Resultater: ' ' '0'

Innledende linjer legger til en linje initialisert med riktig verdi for typen til tabellen. Her er col1 et tegn og col2 er et heltall. Deretter APPEND initial line, legger til en linje initialisert med hensyn til datatypen til kolonnene, dvs. plass for col1 og 0 for col2.

2.Bruke COLLECT-setning

COLLECT er en annen form for uttalelse som brukes for รฅ fylle de interne tabellene. Generelt brukes COLLECT mens du setter inn linjer i en intern tabell med unik standardnรธkkel.

Syntaks-

COLLECT [<wa> INTO] <itable>.

I tilfelle av tabeller med overskriftslinje, er INTO-alternativet utelatt. Anta at det allerede er en oppfรธring som har en nรธkkel som er den samme som den du prรธver รฅ legge til, sรฅ legges ikke en ny linje til i tabellen, men de numeriske feltene til begge oppfรธringene er lagt til og bare รฉn oppfรธring som tilsvarer nรธkkelen er tilstede . Verdien av SY-TABIX endres til raden til den opprinnelige oppfรธringen. Ellers virker COLLECT lik APPEND og SY-TABIX inneholder indeksen til den behandlede linjen.

3.Bruker INSERT-setning

INSERT-setningen legger til en linje/arbeidsomrรฅde til den interne tabellen. Du kan spesifisere posisjonen der den nye linjen skal legges til ved รฅ bruke INDEX-leddet med INSERT-setningen.

syntax

INSERT [<wa> INTO / INITIAL LINE INTO] <itable> [index <idx>].

Her, arbeidsomrรฅdet eller INITIALER LINE er satt inn i den interne tabellen ved indeksen .

Kopiering av interne tabeller

Innholdet i รฉn intern tabell kan kopieres til en annen ved รฅ bruke APPEND LINES eller INNSETT LINES-setning. En enklere mรฅte er รฅ bruke en av fรธlgende syntakser.

MOVE  <itab1> To <itab2>.

OR

<itab1> = <itab2>.

Disse kopierer innholdet i ITAB1 til ITAB2. I tilfelle interne tabeller med overskriftslinje mรฅ vi bruke [] for รฅ skille fra arbeidsomrรฅdet. Sรฅ for รฅ kopiere innholdet i interne tabeller med overskriftslinje blir syntaksen,

itab1[] = itab2[].

Les interne tabeller

Vi er nรฅ kjent med รฅ lage interne tabeller og fylle dem med data. Vi skal nรฅ se hvordan vi faktisk bruker dataene eller henter dataene fra de interne tabellene.

1. Bruke Loop -Endloop

En av mรฅtene รฅ fรฅ tilgang til eller lese den interne tabellen pรฅ er รฅ bruke LOOP-ENDLOOP.

syntax

LOOP AT <itable> [INTO <wa>]

...................................

ENDLOOP.

Her nรฅr du sier LOOP AT ITABLE, sรฅ leses den interne tabellen ITABLE linje for linje. Du kan fรฅ tilgang til verdiene til kolonnene for den linjen under hvilken som helst del av LOOP-ENDLOOP-strukturen. Verdien til SY-SUBRC er satt til 0, selv om bare รฉn post leses.

2. Ved hjelp av READ

Den andre metoden for รฅ lese den interne tabellen er ved รฅ bruke READ-setningen.

Syntaks-

READ TABLE <itable> [INTO <wa>] INDEX <idx>.

Denne setningen leser gjeldende linje eller linje som spesifisert av indeksen . Verdien til SY-TABIX er indeksen til den leste linjen. Hvis en oppfรธring med den spesifiserte indeksen blir funnet, settes SY-SUBRC til 0. Hvis den spesifiserte indeksen er mindre enn 0, oppstรฅr en kjรธretidsfeil. Hvis den angitte indeksen overskrider tabellstรธrrelsen, er SY-SUBRC satt til 4.

Sletting av interne tabeller

Det er mange mรฅter รฅ slette linjer fra en intern tabell pรฅ.

1.Slette linjer i en loop.

Dette er den enkleste mรฅten รฅ slette linjer pรฅ.

syntax

DELETE <ITABLE>.

Denne uttalelsen fungerer bare innenfor en loop. Den sletter gjeldende linje. Du kan slette linjene i en loop betinget ved รฅ legge til HVOR klausul.

2.Slette linjer ved hjelp av indeksen.

Dette brukes til รฅ slette en linje fra intern tabell ved hvilken som helst kjent indeks.

syntax

DELETE <ITABLE> INDEX <IDX>.

Linjen med indeksen er slettet. Indeksen for fรธlgende linje reduseres med 1.

Oppsummer dette innlegget med: