SAP ABAP interna tablica: Stvaranje, čitanje, popunjavanje, kopiranje i brisanje
Što je interna tablica?
UNUTARNJI STOL koriste se za dobivanje podataka iz fiksne strukture za dinamičku upotrebu u ABAP-u. Svaki redak u internoj tablici ima istu strukturu polja. Glavna upotreba internih tablica je pohranjivanje i oblikovanje podataka iz tablice baze podataka unutar programa.
Što je radno područje?
Radna područja su pojedinačni redovi podataka. Trebale bi imati isti format kao bilo koja interna tablica. Koristi se za obradu podataka u internoj tablici redak po redak.
Razlika između unutarnjeg stola i radnog područja?
Slika govori tisuću riječi
Vrste internih tablica
Postoje dvije vrste internih tablica.
- Interne tablice s linijom HEADER
- Interne tablice bez retka HEADER.
Interne tablice s retkom zaglavlja
- Ovdje sustav automatski stvara radno područje.
- Radno područje ima isti tip podataka kao interna tablica.
- Ovo radno područje naziva se linija ZAGLAVLJA.
- Ovdje se obavljaju sve promjene ili radnje na sadržaju tablice. Kao rezultat toga, zapisi se mogu izravno umetnuti u tablicu ili im se izravno može pristupiti iz interne tablice.
Interne tablice bez retka zaglavlja :
- Ovdje nema radnog područja povezanog sa stolom.
- Radno područje treba eksplicitno odrediti kada trebamo pristupiti takvim tablicama.
- Stoga se ovim tablicama ne može izravno pristupiti.
Stvaranje internih tablica
Postoji mnogo načina za stvaranje interne tablice. Pogledajmo ih jednog po jednog-
1. Korištenjem naredbe tipa
Kreirajmo sada Internu tablicu itab koristeći izjava TYPE.
Sintaksa je –
Types : begin of line, column1 type I, column2 type I, end of line.
Primjer:
TYPES : begin of line, empno type I, empname(20) type c , end of line.
Izjava TYPES stvara liniju strukture kako je definirano.
Za stvarno stvaranje interne tablice itab upotrijebite sljedeću naredbu-
Data itab type line occurs 10.
Interna tablica itab kreirana je sa strukturom line. Osim deklariranja strukture interne tablice, klauzula OCCURS također definira koliko se unosa tablice održava u glavnoj pohrani (u ovom slučaju 10). Dodatni zapisi ispisuju se u područje straničenja i mogu utjecati na performanse
2.Pozivajući se na drugu tablicu
Internu tablicu možete izraditi pozivanjem na postojeću tablicu. Postojeća tablica bi mogla biti standardna SAP stol, Z stol ili neki drugi interni stol.
Sintaksa-
Data <f> <type> [with header line].
Primjer-
DATA itab TYPE line OCCURS 10 with header line.
Ovdje se stvara interna tablica itab tipa linija s linijom zaglavlja. Napominjemo da "s retkom zaglavlja" nije obavezan.
3.Pozivajući se na postojeću strukturu
Sintaksa-
Data <f> LIKE <struct> occurs n [with header line].
Primjer-
DATA itab LIKE sline OCCURS 10.
Ovdje je stvorena tablica itab koja ima istu strukturu kao i linija
4. Stvaranjem nove strukture
Kreirajmo sada internu tablicu s vlastitom strukturom. Ovdje se tablica stvara s linijom zaglavlja, po defaultu.
Sintaksa –
Data : Begin of <f> occurs <n>, <component declaration>, ................................., End of <f>.
Primjer -
Data : Begin of itab occurs 10, column1 type I, column2(4) type C, column3 like mara-ernam, End of itab.
Stvorena je interna tablica itab
Popunjavanje internih tablica
Sada kada smo uspješno kreirali neke interne tablice, pogledajmo kako ih popuniti nekim zapisima. Postoje različite metode za popunjavanje tablica
1.Dodajte podatke redak po redak
Prva dostupna metoda je korištenje naredbe APPEND.
Korištenjem naredbe APPEND možemo ili dodati jedan redak iz drugog radnog područja u internu tablicu ili možemo dodati jedan početni redak u internu tablicu.
Sintaksa –
APPEND [<wa> TO / INITIAL LINE TO] <itable>.
Ovdje radno područje ili se početni redak dodaje internoj tablici .
Sistemska varijabla SY-TABIX sadrži indeks dodane linije.
Primjer:
Data: Begin of itab occurs 10, col1 type C, col2 type I, end of itab. Append initial line to itab.
Rezultati : ' ' '0'
Initial lines dodaje redak inicijaliziran s ispravnom vrijednošću za svoj tip u tablicu. Ovdje je col1 znak, a col2 cijeli broj. Zatim APPEND početni redak, dodaje redak inicijaliziran s obzirom na vrstu podataka stupaca, tj. prostor za col1 i 0 za col2.
2. Korištenje naredbe COLLECT
COLLECT je još jedan oblik iskaza koji se koristi za popunjavanje internih tablica. COLLECT se općenito koristi za umetanje redaka u internu tablicu s jedinstvenim standardnim ključem.
Sintaksa-
COLLECT [<wa> INTO] <itable>.
U slučaju tablica s retkom zaglavlja, opcija INTO je izostavljena. Pretpostavimo da već postoji unos koji ima ključ isti kao onaj koji pokušavate dodati, tada se novi red ne dodaje u tablicu, ali se dodaju numerička polja oba unosa i prisutan je samo jedan unos koji odgovara ključu . Vrijednost SY-TABIX mijenja se u redak izvornog unosa. Inače COLLECT djeluje slično kao APPEND, a SY-TABIX sadrži indeks obrađene linije.
3.Korištenje izjave INSERT
INSERT izjava dodaje liniju/radno područje u internu tablicu. Možete navesti poziciju na kojoj će se dodati novi red pomoću klauzule INDEX s naredbom INSERT.
Sintaksa
INSERT [<wa> INTO / INITIAL LINE INTO] <itable> [index <idx>].
Ovdje, radno područje ili se INICIJALNI REDAK umeće u internu tablicu na indeksu .
Kopiranje internih tablica
Sadržaj jedne interne tablice može se kopirati u drugu pomoću izraza APPEND LINES ili INSERT LINES. Jednostavniji način je korištenje bilo koje od sljedećih sintaksi.
MOVE <itab1> To <itab2>. OR <itab1> = <itab2>.
Oni kopiraju sadržaj ITAB1 u ITAB2. U slučaju internih tablica s linijom zaglavlja moramo koristiti [] kako bismo ih razlikovali od radnog područja. Dakle, za kopiranje sadržaja internih tablica s linijom zaglavlja sintaksa postaje,
itab1[] = itab2[].
Pročitajte interne tablice
Sada smo upoznati s izradom internih tablica i njihovim popunjavanjem podacima. Sada ćemo vidjeti kako zapravo koristimo podatke ili dohvaćamo podatke iz internih tablica.
1. Korištenje Loop -Endloop
Jedan od načina pristupa ili čitanja interne tablice je korištenje LOOP-ENDLOOP.
Sintaksa
LOOP AT <itable> [INTO <wa>] ................................... ENDLOOP.
Ovdje kada kažete LOOP AT ITABLE, tada se interna tablica ITABLE čita red po red. Možete pristupiti vrijednostima stupaca za tu liniju tijekom bilo kojeg dijela strukture LOOP-ENDLOOP. Vrijednost SY-SUBRC postavljena je na 0, čak i ako se čita samo jedan zapis.
2. Korištenje READ
Druga metoda čitanja interne tablice je korištenje naredbe READ.
Sintaksa-
READ TABLE <itable> [INTO <wa>] INDEX <idx>.
Ova izjava čita trenutni redak ili redak kako je određeno indeksom . Vrijednost SY-TABIX je indeks pročitanog retka. Ako je pronađen unos s navedenim indeksom, tada je SY-SUBRC postavljen na 0. Ako je navedeni indeks manji od 0, tada se pojavljuje greška u vremenu izvođenja. Ako navedeni indeks premašuje veličinu tablice tada je SY-SUBRC postavljen na 4.
Brisanje internih tablica
Postoji mnogo načina za brisanje redaka iz interne tablice.
1.Brisanje redaka u petlji.
Ovo je najjednostavniji način za brisanje linija.
Sintaksa
DELETE <ITABLE>.
Ova izjava radi samo unutar petlje. Briše trenutni redak. Možete uvjetno izbrisati retke u petlji dodavanjem WHERE klauzula.
2.Brisanje redaka pomoću indeksa.
Ovo se koristi za brisanje retka iz interne tablice na bilo kojem poznatom indeksu.
Sintaksa
DELETE <ITABLE> INDEX <IDX>.
Crta s indeksom se briše. Indeks sljedećeg retka smanjuje se za 1.