Ce este un tabel intern?
TABELUL INTERN este utilizat pentru a obține date dintr-o structură fixă pentru utilizare dinamică în ABAP. Fiecare linie din tabelul intern are aceeași structură de câmp. Utilizarea principală pentru tabelele interne este pentru stocarea și formatarea datelor dintr-un tabel de baze de date în cadrul unui program.
În acest tutorial veți învăța:
- Ce este un tabel intern?
- Ce este o zonă de lucru?
- Diferența dintre masa internă și o zonă de lucru?
- Tipuri de tabele interne
- Crearea tabelelor interne
- Popularea tabelelor interne
- Copierea tabelelor interne
- Citirea internă
- Ștergerea tabelelor interne
Ce este o zonă de lucru?
Zonele de lucru sunt rânduri unice de date. Acestea ar trebui să aibă același format ca oricare dintre tabelele interne. Se folosește pentru a procesa datele într-un tabel intern rând pe rând.
Diferența dintre masa internă și o zonă de lucru?
O imagine spune o mie de cuvinte :-)
Tipuri de tabele interne
Există două tipuri de tabele interne.
- Mese interne cu linie HEADER
- Mese interne fără linie HEADER.
Mese interne cu linie antet
- Aici sistemul creează automat zona de lucru.
- Zona de lucru are același tip de date ca tabelul intern.
- Această zonă de lucru se numește linia HEADER.
- Aici se fac toate modificările sau orice acțiune asupra conținutului tabelului. Ca urmare, înregistrările pot fi inserate direct în tabel sau accesate direct din tabelul intern.
Mese interne fără linie antet :
- Aici nu există o zonă de lucru asociată tabelului.
- Zona de lucru trebuie specificată în mod explicit atunci când trebuie să accesăm astfel de tabele.
- Prin urmare, aceste tabele nu pot fi accesate direct.
Crearea tabelelor interne
Există multe modalități de a crea un tabel intern. Să ne uităm la ei unul câte unul -
1. Prin utilizarea instrucțiunii de tip
Să creăm acum o tabelă internă itab folosind instrucțiunea TYPE.
Sintaxa este -
Tipuri: început de linie,coloana 1 tip I,coloana 2 tip I,sfârșitul liniei.
Exemplu:
TIPURI: începutul liniei,empno tip I,empname (20) tip c,sfârșitul liniei.
Instrucțiunea TYPES creează o linie de structură definită.
Pentru a crea de fapt un tabel intern itab utilizați următoarea comandă-
Data itab tip linie apare 10.
O tabelă internă itab este creată cu structura liniei. Pe lângă declararea structurii unei tabele interne, clauza OCCURS definește, de asemenea, câte intrări de tabel sunt menținute în stocarea principală (în acest caz 10). Înregistrările suplimentare sunt scrise în zona de paginare și pot afecta performanța
2. Referindu-vă la un alt tabel
Puteți crea un tabel intern referindu-vă la un tabel existent. Tabelul existent ar putea fi un tabel SAP standard, un tabel Z sau un alt tabel intern.
Sintaxă-
Date[cu linia de antet].
Exemplu-
DATA itab TIP linia APARE 10 cu linia antet.
Aici se creează o tabelă internă itab din linia de tip cu o linie de antet. Vă rugăm să rețineți că „cu linia de antet” este opțional
3. Referindu-ne la
sintaxa structurii existente-
DateleLIKE apar n [cu linia de antet].
Exemplu-
DATA itab LIKE sline APARE 10.
Aici este creat un tabel itab având o structură identică cu cea a liniei
4. Prin crearea unei noi structuri
Să creăm acum un tabel intern cu o structură proprie. Aici tabelul este creat cu o linie antet, în mod implicit .
Sintaxă -
Date: Începutul luiare loc , , ...,Sfârșitul lui .
Exemplu -
Date: începutul itab are loc 10,coloana 1 tip I,coloana 2 (4) tip C,coloana 3 ca mara-ernam,Sfârșitul itab.
Se creează tabelul intern
Popularea tabelelor interne
Acum că am creat cu succes câteva tabele interne, să vedem cum le populăm cu unele înregistrări. Există diverse metode disponibile pentru completarea tabelelor 1. Adăugați date rând cu rând Prima metodă disponibilă este utilizarea declarației APPEND.Folosind declarația APPEND putem adăuga fie o linie dintr-o altă zonă de lucru în tabelul intern, fie putem adăuga o linie inițială în tabelul intern ...
Sintaxă -
APPEND [Aici zona de lucruTO / INITIAL LINE TO] .
Variabila de sistem SY-TABIX conține indexul liniei anexate.
Exemplu:
Date: începutul itab are loc 10,col1 tip C,col2 tip I,sfârșitul itab.Adăugați linia inițială la itab.
Rezultate: '' '0'
Liniile inițiale adaugă o linie inițializată cu valoarea corectă pentru tipul său în tabel. Aici, col1 este un caracter și col2 este un număr întreg. Apoi APPEND linia inițială, adaugă o linie inițializată în raport cu tipul de date al coloanelor, adică spațiu pentru col1 și 0 pentru col2. 2. Utilizarea instrucțiuniiCOLLECT COLLECT este o altă formă de instrucțiune utilizată pentru popularea tabelelor interne. În general, COLLECT este utilizat în timp ce introduceți linii într-un tabel intern cu cheie standard unică.
Sintaxă-
COLECTEAZĂ [INTO] .
În cazul tabelelor cu linia Header, opțiunea INTO este omisă. Să presupunem că există deja o intrare cu o cheie identică cu cea pe care încercați să o adăugați, atunci o linie nouă nu este adăugată la tabel, dar sunt adăugate câmpurile numerice ale ambelor intrări și este prezentă o singură intrare corespunzătoare cheii. . Valoarea SY-TABIX este modificată la rândul intrării originale. Altfel COLLECT acționează similar cu APPEND și SY-TABIX conține indexul liniei procesate. 3 . Utilizarea instrucțiunii INSERT InstrucțiuneaINSERT adaugă o linie / zonă de lucru la tabelul intern. Puteți specifica poziția în care noua linie urmează să fie adăugată utilizând clauza INDEX cu instrucțiunea INSERT.
Sintaxă
INSERT [Aici, zona de lucruINTO / INITIAL LINE INTO] [index ].
Copierea tabelelor interne
Conținutul unui tabel intern poate fi copiat pe altul folosind declarația APPEND LINES sau INSERT LINES. O modalitate mai simplă este de a utiliza oricare dintre sintaxele următoare.MUTAREÎn .SAU = .
Acestea copiază conținutul ITAB1 în ITAB2. În cazul tabelelor interne cu linia de antet trebuie să folosim [] în ordine pentru a distinge de zona de lucru. Deci, pentru a copia conținutul tabelelor interne cu linia de antet, sintaxa devine,
itab1 [] = itab2 [].
Citiți tabelele interne
Acum suntem familiarizați cu crearea de tabele interne și popularea acestora cu date. Vom vedea acum cum folosim de fapt datele sau preluăm datele din tabelele interne. 1. Utilizarea Loop -EndloopUna dintre modalitățile de accesare sau citire a tabelului intern este folosirea LOOP-ENDLOOP.Sintaxă
LOOP AT[INTO ] ... ENDLOOP.
Aici, când spui LOOP AT ITABLE, atunci tabelul intern ITABLE este citit rând cu rând. Puteți accesa valorile coloanelor pentru acea linie în orice parte a structurii LOOP-ENDLOOP. Valoarea SY-SUBRC este setată la 0 , chiar dacă este citită o singură înregistrare. 2. Utilizarea READCealaltă metodă de citire a tabelului intern este folosirea instrucțiunii READ.
Sintaxă-
CITIȚI TABELUL[ÎN ] INDEX .
Această declarație citește linia sau linia curentă așa cum este specificat de index
Ștergerea tabelelor interne
Există multe modalități de ștergere a liniilor dintr-un tabel intern. 1. Ștergerea liniilor într-o buclă.Acesta este cel mai simplu mod de ștergere a liniilor.
Sintaxă
ȘTERGEȚI.
Această declarație funcționează numai într-o buclă. Șterge linia curentă. Puteți șterge liniile într-o buclă condiționat adăugând clauza WHERE. 2. Ștergerea liniilor folosind indexul.
Acesta este utilizat pentru a șterge o linie din tabelul intern la orice index de cunoștințe.
Sintaxă
ȘTERGEȚILinia cu indexulINDEX .