Interne SAP ABAP-tabel: maken, lezen, invullen, kopiëren & Verwijderen

Inhoudsopgave:

Anonim

Wat is een interne tafel?

INTERNE TABEL worden gebruikt om gegevens uit een vaste structuur te verkrijgen voor dynamisch gebruik in ABAP. Elke regel in de interne tabel heeft dezelfde veldstructuur. Het belangrijkste gebruik voor interne tabellen is voor het opslaan en opmaken van gegevens uit een databasetabel binnen een programma.

In deze tutorial leer je:

  • Wat is een interne tafel?
  • Wat is een werkgebied?
  • Verschil tussen interne tafel en een werkgebied?
  • Soorten interne tabellen
  • Interne tabellen maken
  • Interne tabellen vullen
  • Interne tabellen kopiëren
  • Intern lezen
  • Interne tabellen verwijderen

Wat is een werkgebied?

Werkgebieden zijn enkele rijen met gegevens. Ze moeten hetzelfde formaat hebben als alle interne tabellen. Het wordt gebruikt om de gegevens in een interne tabel regel voor regel te verwerken.

Verschil tussen interne tafel en een werkgebied?

Een foto zegt meer dan duizend woorden :-)

Soorten interne tabellen

Er zijn twee soorten interne tabellen.

  1. Interne tafels met HEADER-lijn
  2. Interne tafels zonder HEADER-lijn.

Interne tabellen met koptekst

  • Hier creëert het systeem automatisch het werkgebied.
  • Het werkgebied heeft hetzelfde gegevenstype als de interne tabel.
  • Dit werkgebied wordt de HEADER-lijn genoemd.
  • Hier worden alle wijzigingen of acties op de inhoud van de tabel uitgevoerd. Hierdoor kunnen records direct in de tabel worden ingevoegd of direct vanuit de interne tabel worden benaderd.

Interne tabellen zonder kopregel :

  • Hier is geen werkgebied gekoppeld aan de tafel.
  • Het werkgebied moet expliciet worden gespecificeerd wanneer we toegang moeten hebben tot dergelijke tabellen.
  • Daarom zijn deze tabellen niet rechtstreeks toegankelijk.

Interne tabellen maken

Er zijn veel manieren om een ​​interne tabel te maken. Laten we ze een voor een bekijken:
1. Door de Type-instructie te gebruiken
Laten we nu een interne tabel itab maken met behulp van de TYPE-instructie.
De syntaxis is -

Typen: begin van de regel,kolom1 type I,column2 type I,einde van de lijn.

Voorbeeld:

TYPES: begin van de regel,empno type I,empname (20) type c,einde van de lijn.

De TYPES-instructie creëert een structuurlijn zoals gedefinieerd.
Om daadwerkelijk een interne tabel itab te maken, gebruikt u de volgende opdracht:

Datatypelijn komt voor 10.

Een interne tabel itab wordt gemaakt met de structuur van een regel. Naast het declareren van de structuur van een interne tabel, definieert de OCCURS-clausule ook hoeveel tabelitems worden bijgehouden in het hoofdgeheugen (in dit geval 10). Extra records worden weggeschreven naar het paginagebied en kunnen de prestaties beïnvloeden.
2. Door naar een andere tabel te verwijzen
U kunt een interne tabel maken door naar een bestaande tabel te verwijzen. De bestaande tabel kan een standaard SAP-tabel, een Z-tabel of een andere interne tabel zijn.
Syntaxis-

Data   [met kopregel].

Voorbeeld-

DATA itab TYPE regel komt voor 10 met kopregel.

Hier wordt een interne tabel itab gemaakt van het type regel met een kopregel. Let op: "met de kopregel" is optioneel
3.By verwijst naar bestaande structuur
Syntax-

Data  LIKE  komt voor n [met kopregel].

Voorbeeld-

GEGEVENS ITAB ALS Sline VOORKOMT 10.

Hier wordt een tabel itab gemaakt met dezelfde structuur als die van sline
4. Door een nieuwe structuur te maken
Laten we nu een interne tabel maken met een eigen structuur. Hier de tafel is gemaakt met een Header lijn, standaard .
Syntaxis -

Data: Begin van  komt voor ,, ...,Einde van .

Voorbeeld -

Data: Begin van itab vindt plaats 10,kolom1 type I,kolom 2 (4) type C,column3 zoals mara-ernam,Einde van itab.

Interne tabel itab wordt gemaakt

Interne tabellen vullen

Nu we met succes enkele interne tabellen hebben gemaakt, laten we eens kijken hoe we ze kunnen vullen met enkele records. Er zijn verschillende methoden beschikbaar om tabellen te vullen 1. Gegevens regel voor regel toevoegen De eerste beschikbare methode is het gebruik van de instructie APPEND.
Met behulp van de APPEND-instructie kunnen we een regel uit een ander werkgebied aan de interne tabel toevoegen of we kunnen een eerste regel aan de interne tabel toevoegen ...
Syntaxis -
APPEND [ TO / INITIAL LINE TO] .
Hier wordt werkgebied of de eerste regel toegevoegd aan de interne tabel .
De systeemvariabele SY-TABIX bevat de index van de toegevoegde regel.
Voorbeeld:
Data: Begin van itab vindt plaats 10,col1 type C,col2 type I,einde van itab.Voeg de eerste regel toe aan itab.

Resultaten: '' '0'
Initiële regels voegt een regel toe die is geïnitialiseerd met de juiste waarde voor het type aan de tabel. Hier is col1 een teken en is col2 een geheel getal. Voeg vervolgens de eerste regel toe, voegt een regel toe die is geïnitialiseerd met betrekking tot het datatype van de kolommen, dwz ruimte voor col1 en 0 voor col2. 2. COLLECT-instructie gebruikenCOLLECT is een andere vorm van instructie die wordt gebruikt voor het vullen van de interne tabellen. Over het algemeen wordt COLLECT gebruikt bij het invoegen van regels in een interne tabel met een unieke standaardsleutel.
Syntaxis-
VERZAMEL [ IN] .

In het geval van tabellen met koptekst is de optie INTO weggelaten. Stel dat er al een invoer is met dezelfde sleutel als degene die u probeert toe te voegen, dan wordt er geen nieuwe regel aan de tabel toegevoegd, maar worden de numerieke velden van beide vermeldingen toegevoegd en is er slechts één vermelding die overeenkomt met de sleutel aanwezig . De waarde van SY-TABIX wordt gewijzigd in de rij van de oorspronkelijke invoer. Anders werkt COLLECT vergelijkbaar met APPEND en SY-TABIX bevat de index van de verwerkte regel. 3 . INSERT-instructie gebruikenINSERT-instructie voegt een lijn / werkgebied toe aan de interne tabel. U kunt de positie waarop de nieuwe regel moet worden toegevoegd, specificeren door de INDEX-clausule te gebruiken met de INSERT-instructie.
Syntaxis
INSERT [ IN / INITIAL LINE IN]  [index ].
Hier wordt het werkgebied of INITIAL LINE ingevoegd in de interne tabel bij index .

Interne tabellen kopiëren

De inhoud van de ene interne tabel kan naar de andere worden gekopieerd met behulp van de instructie APPEND LINES of INSERT LINES. Een eenvoudigere manier is om een ​​van de volgende syntaxis te gebruiken.
VERPLAATS  naar .OF = .

Deze kopiëren de inhoud van ITAB1 naar ITAB2. In het geval van interne tabellen met kopregel moeten we [] gebruiken om onderscheid te maken van het werkgebied. Dus om de inhoud van interne tabellen met de koptekstregel te kopiëren, wordt de syntaxis,
itab1 [] = itab2 [].

Lees interne tabellen

We zijn nu vertrouwd met het maken van interne tabellen en het vullen ervan met gegevens. We zullen nu zien hoe we de gegevens daadwerkelijk gebruiken of de gegevens uit de interne tabellen halen. 1. Loop -Endloop gebruikenEen van de manieren om de interne tabel te openen of te lezen, is door LOOP-ENDLOOP te gebruiken.
Syntaxis
LUS OP  [IN ]… ENDLOOP.

Als je hier LOOP AT ITABLE zegt, wordt de interne tabel ITABLE regel voor regel gelezen. Je hebt toegang tot de waarden van de kolommen voor die regel tijdens elk deel van de LOOP-ENDLOOP-structuur. De waarde van de SY-SUBRC wordt op 0 gezet , zelfs als er maar één record wordt gelezen. 2. READ gebruikenDe andere methode om de interne tabel te lezen is door het READ-statement te gebruiken.
Syntaxis-
LEES TABEL  [IN ] INDEX .

Deze instructie leest de huidige regel of regel zoals gespecificeerd door index . De waarde van SY-TABIX is de index van de gelezen regel. Als een item met de opgegeven index wordt gevonden, wordt SY-SUBRC ingesteld op 0. Als de opgegeven index kleiner is dan 0, treedt een runtime-fout op. Als de opgegeven index groter is dan de tabelgrootte, wordt SY-SUBRC ingesteld op 4.

Interne tabellen verwijderen

Er zijn veel manieren om regels uit een interne tabel te verwijderen. 1. lijnen in een lus verwijderen.
Dit is de eenvoudigste manier om regels te verwijderen.
Sytax
VERWIJDER .

Deze verklaring werkt alleen binnen een lus. Het verwijdert de huidige regel. U kunt de regels in een lus voorwaardelijk verwijderen door de WHERE-component toe te voegen. 2. regels verwijderen met behulp van de index.
Dit wordt gebruikt om een ​​regel uit de interne tabel te verwijderen bij elke bekende index.
Syntaxis
VERWIJDER  INDEX .
De regel met de index wordt verwijderd. De index van de volgende regel wordt verlaagd met 1.