SAP ABAP belső táblázat: létrehozás, olvasás, feltöltés, másolás és törlés
Mi az a belső asztal?
BELSŐ TÁBLÁZAT arra szolgálnak, hogy adatokat nyerjenek egy rögzített struktúrából dinamikus használatra az ABAP-ban. A belső táblázat minden sora azonos mezőszerkezettel rendelkezik. A belső táblák fő felhasználási területe egy programon belüli adatbázistáblázatból származó adatok tárolása és formázása.
Mi az a munkaterület?
A munkaterületek egysoros adatsorok. Ugyanolyan formátumúnak kell lenniük, mint bármelyik belső tábla. Egy belső tábla adatainak soronkénti feldolgozására szolgál.
Mi a különbség a belső asztal és a munkaterület között?
Egy kép többet mond ezer szónál
A belső táblázatok típusai
Kétféle belső tábla létezik.
- Belső táblázatok HEADER sorral
- Belső táblázatok HEADER sor nélkül.
Belső táblázatok fejlécsorral
- Itt a rendszer automatikusan létrehozza a munkaterületet.
- A munkaterület adattípusa megegyezik a belső táblával.
- Ezt a munkaterületet HEADER vonalnak nevezik.
- Itt hajtják végre a táblázat tartalmával kapcsolatos összes módosítást vagy bármely műveletet. Ennek eredményeként a rekordok közvetlenül beilleszthetők a táblába, vagy közvetlenül elérhetők a belső táblából.
Belső táblázatok fejléc nélkül :
- Itt nincs a táblázathoz társított munkaterület.
- A munkaterületet kifejezetten meg kell adni, amikor ilyen táblákhoz kell hozzáférnünk.
- Ezért ezek a táblázatok nem érhetők el közvetlenül.
Belső táblázatok létrehozása
Számos módja van a belső táblázat létrehozásának. Nézzük őket egyenként...
1.A Típusutasítás használatával
Most hozzunk létre egy belső táblázatot az ittab segítségével TYPE utasítás.
A szintaxis:
Types : begin of line, column1 type I, column2 type I, end of line.
Példa:
TYPES : begin of line, empno type I, empname(20) type c , end of line.
A TYPES utasítás a meghatározott struktúrasort hoz létre.
Egy belső tábla ittab létrehozásához használja a következő parancsot-
Data itab type line occurs 10.
Létrejön egy belső tábla itab a line szerkezetével. A belső tábla szerkezetének deklarálása mellett az OCCURS záradék azt is meghatározza, hogy hány táblabejegyzés kerül tárolásra a fő tárolóban (jelen esetben 10). A további rekordok a lapozási területre íródnak ki, és hatással lehetnek a teljesítményre
2. Egy másik táblázatra hivatkozva
Létrehozhat egy belső táblát egy meglévő táblára hivatkozva. A meglévő táblázat lehet szabvány SAP táblázat, egy Z tábla vagy egy másik belső tábla.
Szintaxis-
Data <f> <type> [with header line].
Példa-
DATA itab TYPE line OCCURS 10 with header line.
Itt egy belső táblázat ittab jön létre a típussorból fejlécsorral. Kérjük, vegye figyelembe, hogy a „fejlécsorral” nem kötelező.
3. A meglévő Struktúrára hivatkozva
Szintaxis-
Data <f> LIKE <struct> occurs n [with header line].
Példa-
DATA itab LIKE sline OCCURS 10.
Itt egy ittab táblázat jön létre, amelynek szerkezete megegyezik a sline-éval
4. Új struktúra létrehozásával
Most készítsünk egy belső táblát saját struktúrával. Itt a táblázat egy fejlécsorral jön létre, alapértelmezés szerint.
Szintaxis –
Data : Begin of <f> occurs <n>, <component declaration>, ................................., End of <f>.
Példa -
Data : Begin of itab occurs 10, column1 type I, column2(4) type C, column3 like mara-ernam, End of itab.
A belső tábla ittab létrejön
Belső táblázatok feltöltése
Most, hogy sikeresen létrehoztunk néhány belső táblát, nézzük meg, hogyan tölthetjük fel azokat néhány rekorddal. Különféle módszerek állnak rendelkezésre a táblák feltöltésére
1.Adatok hozzáfűzése soronként
Az első elérhető módszer az APPEND utasítás használata.
Az APPEND utasítás használatával vagy hozzáadhatunk egy sort egy másik munkaterületről a belső táblázathoz, vagy hozzáadhatunk egy kezdő sort a belső táblához.
Szintaxis –
APPEND [<wa> TO / INITIAL LINE TO] <itable>.
Itt a munkaterület vagy az Initial Line hozzá van fűzve a belső táblához .
A SY-TABIX rendszerváltozó tartalmazza a hozzáfűzött sor indexét.
Példa:
Data: Begin of itab occurs 10, col1 type C, col2 type I, end of itab. Append initial line to itab.
Eredmények: ' ' 0'
Az Initial lines a típusának megfelelő értékkel inicializált sort ad a táblázathoz. Itt a col1 egy karakter, a col2 pedig egy egész szám. Ezután APPEND kezdősor, hozzáad egy sort, amely az oszlopok adattípusának megfelelően inicializálódik, azaz szóköz az 1. oszlopnak és 0 a 2. oszlopnak.
2. A COLLECT utasítás használata
A COLLECT egy másik utasítás, amelyet a belső táblák feltöltésére használnak. Általában a COLLECT használatos, amikor sorokat szúr be egy belső táblázatba egyedi szabványos kulccsal.
Szintaxis-
COLLECT [<wa> INTO] <itable>.
Fejléc sorral rendelkező táblák esetén az INTO opció kimarad. Tegyük fel, hogy már van egy bejegyzés, amelynek kulcsa megegyezik azzal, amelyet hozzá akarsz fűzni, akkor nem kerül új sor a táblázatba, hanem mindkét bejegyzés numerikus mezői hozzáadódnak, és csak egy, a kulcsnak megfelelő bejegyzés található. . A SY-TABIX értéke az eredeti bejegyzés sorára módosul. Az Else COLLECT az APPEND-hez hasonlóan működik, és a SY-TABIX tartalmazza a feldolgozott sor indexét.
3.INSERT utasítás használatával
Az INSERT utasítás egy sort/munkaterületet ad a belső táblához. Megadhatja azt a pozíciót, ahol az új sort hozzá kell adni, az INDEX záradék használatával az INSERT utasítással.
Szintaxis
INSERT [<wa> INTO / INITIAL LINE INTO] <itable> [index <idx>].
Itt a munkaterület vagy INICIAL LINE beszúrásra kerül a belső táblázatba indexnél .
Belső táblázatok másolása
Egy belső tábla tartalma átmásolható egy másikba az APPEND LINES vagy INSERT LINES utasítás használatával. Egy egyszerűbb módszer az alábbi szintaxisok bármelyikének használata.
MOVE <itab1> To <itab2>. OR <itab1> = <itab2>.
Ezek átmásolják az ITAB1 tartalmát az ITAB2-be. A fejlécsort tartalmazó belső táblák esetében a []-t kell használnunk, hogy megkülönböztessük a munkaterülettől. Tehát a fejlécsorral rendelkező belső táblázatok tartalmának másolásához a szintaxis a következő lesz:
itab1[] = itab2[].
Olvassa el a belső táblázatokat
Ma már ismerjük a belső táblák létrehozását és adatokkal való feltöltését. Most meglátjuk, hogy ténylegesen hogyan használjuk fel az adatokat, vagy hogyan kérhetjük le az adatokat a belső táblákból.
1. A Loop -Endloop használata
A belső tábla elérésének vagy olvasásának egyik módja a LOOP-ENDLOOP használata.
Szintaxis
LOOP AT <itable> [INTO <wa>] ................................... ENDLOOP.
Ha itt azt mondod, hogy LOOP AT ITABLE, akkor a belső ITABLE tábla soronként beolvasásra kerül. Az adott sor oszlopainak értékeit a LOOP-ENDLOOP struktúra bármely részében elérheti. Az SY-SUBRC értéke a következőre van állítva 0, még akkor is, ha csak egy rekordot olvasnak be.
2. A READ használata
A belső tábla olvasásának másik módja a READ utasítás használata.
Szintaxis-
READ TABLE <itable> [INTO <wa>] INDEX <idx>.
Ez az utasítás beolvassa az aktuális sort vagy sort az index által meghatározottak szerint . A SY-TABIX értéke a beolvasott sor indexe. Ha a rendszer a megadott indexű bejegyzést találja, akkor az SY-SUBRC értéke 0. Ha a megadott index kisebb, mint 0, akkor futásidejű hiba lép fel. Ha a megadott index meghaladja a táblázat méretét, akkor az SY-SUBRC értéke 4.
Belső táblák törlése
Számos módja van a sorok törlésének egy belső táblából.
1. Sorok törlése hurokban.
Ez a legegyszerűbb módja a sorok törlésének.
Szintaxis
DELETE <ITABLE>.
Ez az állítás csak cikluson belül működik. Törli az aktuális sort. A hurokban lévő sorokat feltételesen törölheti, ha hozzáadja a WHERE záradék.
2.Sorok törlése az index segítségével.
Ez egy sor törlésére szolgál a belső táblából bármely ismert indexnél.
Szintaxis
DELETE <ITABLE> INDEX <IDX>.
A sor az indexszel törlésre kerül. A következő sor indexe 1-gyel csökken.