SAP ABAP-i sisetabel: looge, lugege, sisestage, kopeerige ja kustutage
โก Nutikas kokkuvรตte
SAP ABAP-i sisemised tabeliobjektid hoiavad fikseeritud struktuurist pรคrit andmeid programmi dรผnaamiliseks kasutamiseks. See leht selgitab tรถรถalasid, pรคiseridu, nelja loomise meetodit ning lauseid, mis tรคidavad, kopeerivad, loevad ja kustutavad tabeli ridu.
Mis on sisemine tabel?
SISEMINE kasutatakse andmete hankimiseks fikseeritud struktuurist dรผnaamiliseks kasutamiseks ABAP-is. Igal sisetabeli real on sama vรคlja struktuur. Sisemiste tabelite peamine kasutusala on andmebaasi tabeli andmete salvestamine ja vormindamine programmi sees.
Sisemine laud tรถรถtab alati koos tรถรถalaga, seega on see kontseptsioon jรคrgmine.
Mis on tรถรถala?
Tรถรถalad on รผksikud andmeread. Neil peaks olema sama vorming kui kรตigil sisemistel tabelitel. Neid kasutatakse sisemise tabeli andmete tรถรถtlemiseks ridahaaval.
Sisemise laua ja tรถรถala erinevus?
Pilt รผtleb rohkem kui tuhat sรตna
Diagrammil on tabel, mis sisaldab paljusid ridu, samas kui tรถรถala sisaldab ainult parasjagu tรถรถdeldavat rida. See, kas tรถรถala loob sรผsteem vรตi arendaja, sรตltub allpool kirjeldatud tabeli tรผรผbist.
Sisemiste tabelite tรผรผbid
Sisemisi tabeleid on kahte tรผรผpi.
- Sisemised tabelid HEADER joonega
- Sisemised tabelid ilma HEADER-reata.
Sisemised tabelid pรคisereaga
- Siin loob sรผsteem automaatselt tรถรถala.
- Tรถรถalal on sisemise tabeliga sama tรผรผpi andmetรผรผp.
- Seda tรถรถpiirkonda nimetatakse HEADERI jooneks.
- Siin tehakse kรตik tabeli sisuga seotud muudatused vรตi toimingud. Selle tulemusena saab kirjeid otse tabelisse sisestada vรตi siseneda otse sisemisest tabelist.
Sisemised tabelid ilma pรคisereata :
- Siin pole tabeliga seotud tรถรถala.
- Tรถรถala tuleb selgelt mรครคratleda, kui meil on vaja sellistele tabelitele juurde pรครคseda.
- Seetรตttu ei pรครคse nendele tabelitele otse juurde.
๐ก Nรคpunรคide: Pรคisereaga tabelil on sama nimi nii tabelil kui ka selle tรถรถpiirkonnal, mis muudab koodi mitmetรคhenduslikuks. Uued programmid peaksid deklareerima tabeli ilma pรคisereata ja edastama selgesรตnalise tรถรถpiirkonna.
Standardsed, sorteeritud ja rรคsitud sisemised tabelid
Lisaks pรคiserea eristusele on igal sisemisel tabelil ka tabeli tรผรผp, mis mรครคrab, kuidas rida leitakse. Tรผรผp valitakse lisandiga TYPE STANDARD TABLE, TYPE SORTED TABLE vรตi TYPE HASHED TABLE ning sellel on otsene mรตju kรคitusajale.
| Laua liik | Juurdepรครคsumeetod | Vรตti | Parim kasutada |
|---|---|---|---|
| Standard | Indeks ja vรตti, lineaarse otsinguga vรตtmel | Mitte ainulaadne | Jรคrjestikune tรถรถtlemine ja vรคikesed tabelid, mida loetakse indeksiga |
| Sorteeritud | Indeks ja vรตti, vรตtme binaarotsinguga | Unikaalne vรตi mitteunikaalne, sorteeritakse automaatselt | Suuremad tabelid loevad korduvalt lรคbi juhtivad vรตtmevรคljad |
| Rรคsitud | Ainult vรตti, rรคsialgoritmiga | Ainulaadne | Vรคga suured tabelid, mida alati loetakse tรคisvรตtmega, nรคiteks andmebaasikirjete puhver |
Standardtabel on vaikevรครคrtus ja sobib jรคrjestikuseks tรถรถtlemiseks. Rรคsitud tabel hoiab juurdepรครคsuaja konstantsena olenemata sellest, mitu rida on salvestatud, mistรตttu jรตudlusreeglid Avatud SQL Soovitan seda kirjete puhverdamiseks.
Sisemiste tabelite loomine
Sisemise tabeli loomiseks on palju vรตimalusi. Vaatame neid รผkshaaval -
1. Tรผรผbi avalduse abil
Loome nรผรผd TYPE-lause abil sisemise itab-tabeli.
Sรผntaks on -
Types : begin of line, column1 type I, column2 type I, end of line.
Nรคide:
TYPES : begin of line, empno type I, empname(20) type c , end of line.
Avaldus TYPES loob defineeritud struktuurirea.
Sisemise tabeli ittab loomiseks kasutage jรคrgmist kรคsku-
Data itab type line occurs 10.
Sisemine tabel ittab luuakse rea struktuuriga. Lisaks sisemise tabeli struktuuri deklareerimisele mรครคrab klausel OCCURS ka, mitu tabelikirjet pรตhimรคlus sรคilitatakse (antud juhul 10). Tรคiendavad kirjed kirjutatakse vรคlja otsingualale ja need vรตivad jรตudlust mรตjutada
2. Viidates teisele tabelile
Sisemise tabeli loomiseks vรตite viidata olemasolevale tabelile. Olemasolev tabel vรตib olla standardne. SAP laud, Z-laud vรตi mรตni muu sisemine laud.
sรผntaks-
Data <f> <type> [with header line].
Nรคide-
DATA itab TYPE line OCCURS 10 with header line.
Siin luuakse sisemine tabeli ittab tรผรผbireast koos pรคisereaga. Pange tรคhele, et "pรคisereaga" on valikuline.
3. Viidates olemasolevale struktuurile
sรผntaks-
Data <f> LIKE <struct> occurs n [with header line].
Nรคide-
DATA itab LIKE sline OCCURS 10.
Siin luuakse itab-tabel, mille struktuur on sama mis sline'il.
4. Uue struktuuri loomisega
Loome nรผรผd oma struktuuriga sisetabeli. Siin luuakse tabel pรคisereaga, vaikimisi.
Sรผntaks โ
Data : Begin of <f> occurs <n>, <component declaration>, ................................, End of <f>.
Nรคide -
Data : Begin of itab occurs 10, column1 type I, column2(4) type C, column3 like mara-ernam, End of itab.
Sisemine tabel ittab luuakse
Tรผhjast tabelist on vรคhe kasu, seega tรคidab jรคrgmine osa selle ridadega.
Sisemiste tabelite tรคitmine
Nรผรผd, kui oleme mรตned sisemised tabelid edukalt loonud, vaatame, kuidas me neid mรตne kirjega tรคita. Tabelite tรคitmiseks on saadaval erinevaid meetodeid
1. Lisa andmed rida-realt
Esimene saadaolev meetod on APPEND lause kasutamine.
Kasutades kรคsku APPEND, saame sisetabelisse lisada รผhe rea teisest tรถรถpiirkonnast vรตi lisada sisetabelisse รผhe algrea.
Sรผntaks โ
APPEND [<wa> TO / INITIAL LINE TO] <itable>.
Siin tรถรถala vรตi sisetabelisse lisatakse esialgne rida .
Sรผsteemi muutuja SY-TABIX sisaldab lisatud rea indeksit.
Nรคide:
Data: Begin of itab occurs 10, col1 type C, col2 type I, end of itab. Append initial line to itab.
Tulemused : ' ' 0'
Kรคsk โInitial linesโ lisab tabelisse rea, mis on initsialiseeritud selle tรผรผbi รตige vรครคrtusega. Siin on col1 mรคrk ja col2 on tรคisarv. Seejรคrel โAPPEND initial lineโ lisab rea, mis on initsialiseeritud veergude andmetรผรผbi suhtes, st. tรผhiku col1 ja 0 col2 jaoks.
2. COLLECT avalduse kasutamine
COLLECT on veel รผks avalduse vorm, mida kasutatakse sisemiste tabelite tรคitmiseks. รldiselt kasutatakse COLLECT-i, kui sisestatakse ridu kordumatu standardvรตtmega sisetabelisse.
sรผntaks-
COLLECT [<wa> INTO] <itable>.
Pรคisereaga tabelite puhul on valik INTO vรคlja jรคetud. Oletame, et juba on kirje, mille vรตti on sama, mida proovite lisada, siis tabelisse uut rida ei lisata, vaid lisatakse mรตlema kirje numbrivรคljad ja ainult รผks vรตtmele vastav kirje on olemas . SY-TABIXi vรครคrtus muudetakse algse kirje reale. Else COLLECT toimib sarnaselt APPENDile ja SY-TABIX sisaldab tรถรถdeldud rea indeksit.
3. INSERT-lause kasutamine
INSERT-lause lisab sisemisele tabelisse rea/tรถรถala. Saate mรครคrata asukoha, kuhu uus rida lisatakse, kasutades INDEX-klauslit koos INSERT-lausega.
Sรผntaks
INSERT [<wa> INTO / INITIAL LINE INTO] <itable> [index <idx>].
Siin on tรถรถala vรตi INITSAALSUS LINE lisatakse sisemisse tabelisse indeksis .
Sisemiste tabelite kopeerimine
รhe sisemise tabeli sisu saab teise kopeerida funktsiooni APPEND abil. LINES vรตi INSERT LINES-lause. Lihtsam viis on kasutada mis tahes jรคrgmist sรผntaksit.
MOVE <itab1> To <itab2>. OR <itab1> = <itab2>.
Need kopeerivad ITAB1 sisu ITAB2-sse. Pรคisereaga sisemiste tabelite puhul peame tรถรถpiirkonnast eristamiseks kasutama []. Nii et sisemiste tabelite sisu kopeerimiseks pรคisereaga muutub sรผntaks
itab1[] = itab2[].
Lugege sisemisi tabeleid
Nรผรผd oleme tuttavad sisemiste tabelite loomise ja andmetega tรคitmisega. Vaatame nรผรผd, kuidas me andmeid tegelikult kasutame vรตi sisemistest tabelitest andmeid hankime.
1. Loop -Endloop kasutamine
รks sisemise tabeli juurde pรครคsemise vรตi lugemise viise on kasutada LOOP-ENDLOOP-i.
Sรผntaks
LOOP AT <itable> [INTO <wa>] ................................... ENDLOOP.
Kui siin รถeldakse LOOP AT ITABLE, siis loetakse sisemist tabelit ITABLE rida-realt. Selle rea veergude vรครคrtustele pรครคsete juurde struktuuri LOOP-ENDLOOP mis tahes osas. SY-SUBRC vรครคrtus on seatud 0, isegi kui loetakse ainult รผks kirje.
2. READ kasutamine
Teine meetod sisemise tabeli lugemiseks on READ-lause kasutamine.
sรผntaks-
READ TABLE <itable> [INTO <wa>] INDEX <idx>.
See lause loeb praeguse rea vรตi rea vastavalt indeksi mรครคrangule SY-TABIX vรครคrtus on loetud rea indeks. Kui leitakse mรครคratud indeksiga kirje, mรครคratakse SY-SUBRC vรครคrtuseks 0. Kui mรครคratud indeks on vรคiksem kui 0, tekib kรคitusaja viga. Kui mรครคratud indeks รผletab tabeli suuruse, mรครคratakse SY-SUBRC vรครคrtuseks 4.
โ ๏ธ Hoiatus: READ TABLE โฆ INDEX 0 tekitab kรคitusaja vea, seega tuleks enne lause kรคivitamist kontrollida kรคitusajal arvutatud indeksit.
Sisemiste tabelite kustutamine
Ridade kustutamiseks sisemisest tabelist on palju vรตimalusi.
1.Readade kustutamine tsรผklis.
See on lihtsaim viis ridade kustutamiseks.
Sรผntaks
DELETE <ITABLE>.
See vรคide tรถรถtab ainult tsรผklis. See kustutab praeguse rea. Saate tsรผkli ridu tingimuslikult kustutada, lisades KUS klausel.
2.Jadade kustutamine indeksi abil.
Seda kasutatakse rea kustutamiseks sisemisest tabelist mis tahes teadaoleva indeksiga.
Sรผntaks
DELETE <ITABLE> INDEX <IDX>.
Indeksiga rida kustutatakse. Jรคrgmise rea indeksit vรคhendatakse 1 vรตrra.
3. Duplikaatridade kustutamine.
Topeltread eemaldatakse pรคrast tabeli sorteerimist vรตtmevรคljade jรคrgi.
SORT itab BY col1. DELETE ADJACENT DUPLICATES FROM itab COMPARING col1.
Vรตrreldakse ainult kรผlgnevaid ridu, mistรตttu tuleb esmalt kรคivitada SORT-lause. Tabeli tรคielikuks tรผhjendamiseks kasutage kรคsku CLEAR itab[] vรตi REFRESH itab.


