Vad är en intern tabell?
INTERN TABELL används för att erhålla data från en fast struktur för dynamisk användning i ABAP. Varje rad i den interna tabellen har samma fältstruktur. Huvudanvändningen för interna tabeller är för lagring och formatering av data från en databastabell i ett program.
I denna handledning lär du dig:
- Vad är en intern tabell?
- Vad är ett arbetsområde?
- Skillnad mellan internt bord och ett arbetsområde?
- Typer av interna tabeller
- Skapa interna tabeller
- Populära interna tabeller
- Kopiera interna tabeller
- Läser internt
- Radera interna tabeller
Vad är ett arbetsområde?
Arbetsområden är enstaka datarader. De ska ha samma format som någon av de interna tabellerna. Den används för att bearbeta data i en intern tabell en rad i taget.
Skillnad mellan internt bord och ett arbetsområde?
En bild säger tusen ord :-)
Typer av interna tabeller
Det finns två typer av interna tabeller.
- Interna bord med HEADER-linje
- Interna bord utan HEADER-linje.
Interna tabeller med rubriklinje
- Här skapar systemet automatiskt arbetsområdet.
- Arbetsområdet har samma datatyp som den interna tabellen.
- Detta arbetsområde kallas HEADER-linjen.
- Det är här som alla ändringar eller någon av åtgärderna på innehållet i tabellen görs. Som ett resultat av detta kan poster infogas direkt i tabellen eller nås direkt från den interna tabellen.
Interna tabeller utan rubrik :
- Här finns inget arbetsområde associerat med tabellen.
- Arbetsområdet ska uttryckligen anges när vi behöver komma åt sådana tabeller.
- Därför kan dessa tabeller inte nås direkt.
Skapa interna tabeller
Det finns många sätt att skapa en intern tabell. Låt oss titta på dem en efter en -
1. Genom att använda typuttrycket
Låt oss nu skapa en intern tabell med hjälp av TYPE-satsen.
Syntaksen är -
Typer: radens början,kolumn 1 typ I,kolumn2 typ I,slutet av raden.
Exempel:
TYPER: radens början,empno typ I,empname (20) typ c,slutet av raden.
TYPES-uttalandet skapar en strukturlinje som definierad.
För att faktiskt skapa en intern tabell använder du följande kommando-
Dataintretypslinjen förekommer 10.
En intern tabell-itab skapas med linjens struktur. Förutom att deklarera strukturen för en intern tabell, definierar OCCURS-klausulen också hur många tabellposter som behålls i huvudlagringen (i det här fallet 10). Extra poster skrivs ut till sökningsområdet och kan påverka prestanda
2. Genom att hänvisa till en annan tabell
Du kan skapa en intern tabell genom att hänvisa till en befintlig tabell. Den befintliga tabellen kan vara en standard SAP-tabell, en Z-tabell eller en annan intern tabell.
Syntax-
Data[med rubrikraden].
Exempel-
DATA itab TYP-rad OCCURS 10 med rubrikrad.
Här skapas en intern tabell itab av typraden med en rubrikrad. Observera "med rubrikrad" är valfri
3.By hänvisar till befintlig struktur
Syntax-
DataSOM förekommer n [med rubrikraden].
Exempel-
DATA itab LIKE sline OCCURS 10.
Här skapas en tabell-itab med samma struktur som sline 4.
Genom att skapa en ny struktur
Låt oss nu skapa en intern tabell med en egen struktur. Här skapas tabellen med en rubrikrad som standard .
Syntax -
Data: Början avförekommer , ,…,Slut på .
Exempel -
Data: Start av itab förekommer 10,kolumn 1 typ I,kolumn2 (4) typ C,kolumn 3 som mara-ernam,Slutet på itab.
Intern tabell itab skapas
Populära interna tabeller
Nu när vi framgångsrikt har skapat några interna tabeller, låt oss se hur vi fyller dem med några poster. Det finns olika metoder för att fylla i tabeller 1. Lägg till data rad för rad Den första tillgängliga metoden är användningen av APPEND-uttalandet.Med hjälp av APPEND-uttalandet kan vi antingen lägga till en rad från ett annat arbetsområde till den interna tabellen eller så kan vi lägga till en första rad i den interna tabellen ...
Syntax -
BILAGA [Här läggs arbetsområdetTILL / INLEDNINGSRAD TILL] .
Systemvariabeln SY-TABIX innehåller index för den bifogade raden.
Exempel:
Data: Start av itab förekommer 10,kol1 typ C,col2 typ I,slutet av itab.Lägg till första raden till itab.
Resultat: '' '0'
Initiala rader lägger till en rad initialiserad med rätt värde för sin typ i tabellen. Här är col1 ett tecken och col2 är ett heltal. APPEND sedan initialrad, lägger till en rad initialiserad med avseende på datatypen för kolumnerna, dvs. utrymme för col1 och 0 för col2. 2.Använda COLLECT-uttalandeCOLLECT är en annan form av uttalande som används för att fylla i interna tabeller. Generellt används COLLECT när du sätter in rader i en intern tabell med unik standardnyckel.
Syntax-
SAMLAR [IN] .
Fall av tabeller med rubrikrad, INTO-alternativet utelämnas. Anta att det redan finns en post med samma nyckel som den du försöker lägga till, då läggs inte en ny rad till i tabellen, men de numeriska fälten i båda posterna läggs till och endast en post motsvarande nyckeln finns . Värdet på SY-TABIX ändras till raden i den ursprungliga posten. Else COLLECT agerar liknande APPEND och SY-TABIX innehåller indexet för den bearbetade raden. 3 . Använda INSERT-uttalandeINSERT-uttalande lägger till en rad / arbetsområde i den interna tabellen. Du kan ange positionen där den nya raden ska läggas till genom att använda INDEX-satsen med INSERT-satsen.
Syntax
INSET [Här infogas arbetsområdetINTO / INITIAL LINE INTO] [index ].
Kopiera interna tabeller
Innehållet i en intern tabell kan kopieras till en annan med hjälp av uttalandet APPEND LINES eller INSERT LINES. Ett enklare sätt är att använda flera av följande syntaxer.FLYTTATill .ELLER = .
Dessa kopierar innehållet i ITAB1 till ITAB2. I fall av interna tabeller med rubrikraden måste vi använda [] för att skilja från arbetsområdet. Så, för att kopiera innehållet i interna tabeller med rubrikraden blir syntaxen,
itab1 [] = itab2 [].
Läs interna tabeller
Vi är nu bekanta med skapandet av interna tabeller och fyller dem med data. Vi kommer nu att se hur vi faktiskt använder data eller hämtar data från de interna tabellerna. 1. Använda Loop -EndloopEtt av sätten att komma åt eller läsa den interna tabellen är att använda LOOP-ENDLOOP.Syntax
LOOP AT[IN ] ... ENDLOOP.
Här när du säger LOOP AT ITABLE läses den interna tabellen ITABLE rad för rad. Du kan komma åt värdena för kolumnerna för den raden under vilken del som helst av LOOP-ENDLOOP-strukturen. Värdet på SY-SUBRC är inställt på 0 , även om endast en post läses. 2. Använda READDen andra metoden för att läsa den interna tabellen är att använda READ-uttalandet.
Syntax-
LÄS TABELL[IN ] INDEX .
Detta uttalande läser den aktuella raden eller raden enligt vad som anges av index
Radera interna tabeller
Det finns många sätt att radera rader från en intern tabell. 1. Radera linjer i en slinga.Detta är det enklaste sättet att radera rader.
Sytax
RADERA.
Detta uttalande fungerar bara inom en slinga. Den raderar den aktuella raden. Du kan radera raderna i en slinga villkorligt genom att lägga till WHERE-satsen. 2. Radera rader med indexet.
Detta används för att radera en rad från den interna tabellen i vilket kända index som helst.
Syntax
RADERARaden med indexINDEX .