SAP ABAP intern tabel: Opret, læs, udfyld, kopi & Slet

Indholdsfortegnelse:

Anonim

Hvad er en intern tabel?

INTERN TABEL bruges til at opnå data fra en fast struktur til dynamisk brug i ABAP. Hver linje i den interne tabel har den samme feltstruktur. Hovedanvendelsen til interne tabeller er til lagring og formatering af data fra en databasetabel i et program.

I denne vejledning lærer du:

  • Hvad er en intern tabel?
  • Hvad er et arbejdsområde?
  • Forskellen mellem internt bord og et arbejdsområde?
  • Typer af interne tabeller
  • Oprettelse af interne tabeller
  • Befolker interne tabeller
  • Kopiering af interne tabeller
  • Læsning Internt
  • Sletning af interne tabeller

Hvad er et arbejdsområde?

Arbejdsområder er enkelt rækker med data. De skal have samme format som en hvilken som helst af de interne tabeller. Det bruges til at behandle dataene i en intern tabel en linje ad gangen.

Forskellen mellem internt bord og et arbejdsområde?

Et billede siger tusind ord :-)

Typer af interne tabeller

Der er to typer interne tabeller.

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

Interne tabeller med headerlinje

  • Her opretter systemet automatisk arbejdsområdet.
  • Arbejdsområdet har den samme datatype som den interne tabel.
  • Dette arbejdsområde kaldes HEADER-linjen.
  • Det er her, at alle ændringer eller handlinger på indholdet af tabellen er udført. Som et resultat af dette kan poster indsættes direkte i tabellen eller få adgang til dem direkte fra den interne tabel.

Interne tabeller uden overskriftslinje :

  • Her er der ikke noget arbejdsområde forbundet med tabellen.
  • Arbejdsområde skal specifikt specificeres, når vi har brug for adgang til sådanne tabeller.
  • Derfor er der ikke adgang til disse tabeller direkte.

Oprettelse af interne tabeller

Der er mange måder at oprette en intern tabel på. Lad os se på dem en efter en -
1. Ved hjælp af typeforklaringen
Lad os nu oprette en intern tabel itab ved hjælp af TYPE-sætningen.
Syntaksen er -

Typer: start af linje,kolonne1 type I,kolonne2 type I,slutningen af ​​linjen.

Eksempel:

TYPER: start af linje,empno type I,empname (20) type c,slutningen af ​​linjen.

TYPES-sætningen opretter en strukturlinje som defineret.
For at oprette en intern tabel itab skal du bruge følgende kommando-

Data itab-typelinje forekommer 10.

En intern tabel-itab oprettes med linjestrukturen. Udover at erklære strukturen for en intern tabel definerer OCCURS-klausulen også, hvor mange tabelindgange der opretholdes i hovedlageret (i dette tilfælde 10). Ekstra poster skrives ud til personsøgningsområdet og kan påvirke ydeevne
2. Ved at henvise til en anden tabel
Du kan oprette en intern tabel ved at henvise til en eksisterende tabel. Den eksisterende tabel kunne være en standard SAP-tabel, en Z-tabel eller en anden intern tabel.
Syntaks-

Data   [med overskriftlinje].

Eksempel-

DATA itab TYPE linje OCCURS 10 med header line.

Her oprettes en intern tabel itab af typelinjen med en headerlinje. Bemærk "med overskriftslinje" er valgfri
3.By henvise til eksisterende struktur
syntaks-

Data  LIKE  forekommer n [med headerlinje].

Eksempel-

DATA itab LIKE sline OPSTÅR 10.

Her oprettes en tabel itab, der har den samme struktur som sline
4. Ved at oprette en ny struktur
Lad os nu oprette en intern tabel med en egen struktur. Her oprettes tabellen med en overskriftslinje som standard .
Syntaks -

Data: Begynd med  forekommer ,,…,Slut på .

Eksempel -

Data: Start af itab forekommer 10,kolonne1 type I,kolonne2 (4) type C,kolonne3 som mara-ernam,Slutningen af ​​itab.

Intern tabel itab oprettes

Befolker interne tabeller

Nu hvor vi med succes har oprettet nogle interne tabeller, lad os se, hvordan vi udfylder dem med nogle poster. Der findes forskellige metoder til at udfylde tabeller 1.Føj data linje for linje Den første tilgængelige metode er brugen af ​​APPEND-erklæringen.
Ved hjælp af APPEND-udsagnet kan vi enten tilføje en linje fra et andet arbejdsområde til den interne tabel, eller vi kan tilføje en indledende linje til den interne tabel ...
Syntaks -
APPEND [ TO / INITIAL LINE TO] .
Her arbejdsområde eller den oprindelige linje føjes til den interne tabel .
Systemvariablen SY-TABIX indeholder indekset for den vedhæftede linje.
Eksempel:
Data: Start af itab forekommer 10,col1 type C,col2 type I,slutningen af ​​itab.Føj den oprindelige linje til itab.

Resultater: '' '0'
Indledende linjer tilføjer en linje initialiseret med den korrekte værdi for sin type til tabellen. Her er col1 et tegn, og col2 er et heltal. Derefter APPEND initial line, tilføjer en linje initialiseret med hensyn til datatypen i kolonnerne, dvs. plads til col1 og 0 for col2. 2. Brug af COLLECT-sætningCOLLECT er en anden form for sætning, der bruges til at udfylde de interne tabeller. Generelt bruges COLLECT, mens linjer indsættes i en intern tabel med unik standardnøgle.
Syntaks-
COLLECT [ INTO] .

I tilfælde af tabeller med overskriftlinje, INTO-indstillingen er udeladt. Antag, at der allerede er en post, der har en nøgle, der er den samme som den, du prøver at tilføje, så tilføjes der ikke en ny linje til tabellen, men de numeriske felter for begge poster tilføjes, og der er kun én post, der svarer til nøglen, til stede . Værdien af ​​SY-TABIX ændres til rækken i den oprindelige post. Else COLLECT fungerer svarende til APPEND, og ​​SY-TABIX indeholder indekset for den behandlede linje. 3 . Brug af INSERT-sætningINSERT-sætning tilføjer en linje / arbejdsområde til den interne tabel. Du kan specificere den position, hvor den nye linje skal tilføjes, ved hjælp af INDEX-klausulen med INSERT-sætningen.
Syntaks
INDSÆT [ INTO / INITIAL LINE INTO]  [index ].
Her indsættes arbejdsområdet eller INITIAL LINE i den interne tabel ved indeks .

Kopiering af interne tabeller

Indholdet af en intern tabel kan kopieres til en anden ved hjælp af sætningen APPEND LINES eller INSERT LINES. En mere enkel måde er at bruge en række af følgende syntakser.
FLYT  Til .ELLER = .

Disse kopierer indholdet af ITAB1 til ITAB2. I tilfælde af interne tabeller med overskrift skal vi bruge [] for at skelne fra arbejdsområdet. Så for at kopiere indholdet af interne tabeller med overskriftlinje bliver syntaksen,
itab1 [] = itab2 [].

Læs interne tabeller

Vi kender nu oprettelsen af ​​interne tabeller og udfylder dem med data. Vi ser nu, hvordan bruger vi faktisk dataene eller henter dataene fra de interne tabeller. 1. Brug af Loop -EndloopEn af måderne til at få adgang til eller læse den interne tabel er ved at bruge LOOP-ENDLOOP.
Syntaks
LOOP PÅ  [INTO ] ... ENDLOOP.

Her når du siger LOOP AT ITABLE, læses den interne tabel ITABLE linje for linje. Du kan få adgang til værdierne for kolonnerne for denne linje under en hvilken som helst del af LOOP-ENDLOOP-strukturen. Værdien af ​​SY-SUBRC er indstillet til 0 , selvom kun en post læses. 2. Brug af READDen anden metode til at læse den interne tabel er ved hjælp af READ-sætningen.
Syntaks-
LÆS TABEL  [IN ] INDEKS .

Denne erklæring læser den aktuelle linje eller linje som specificeret af indeks . Værdien af ​​SY-TABIX er indekset for den læste linje. Hvis der findes en post med det angivne indeks, er SY-SUBRC indstillet til 0. Hvis det angivne indeks er mindre end 0, opstår der en kørselstidsfejl. Hvis det angivne indeks overstiger tabelstørrelsen, er SY-SUBRC indstillet til 4.

Sletning af interne tabeller

Der er mange måder at slette linjer fra en intern tabel. 1. slette linjer i en løkke.
Dette er den enkleste måde at slette linjer på.
Sytax
SLET .

Denne erklæring fungerer kun inden for en løkke. Den sletter den aktuelle linje. Du kan slette linjerne i en løkke betinget ved at tilføje WHERE-klausulen. 2.Sletning af linjer ved hjælp af indekset.
Dette bruges til at slette en linje fra den interne tabel ved ethvert kendningsindeks.
Syntaks
SLET  INDEX .
Linjen med indekset slettes. Indekset for den følgende linje reduceres med 1.