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.

  • ???? Pรตhidefinitsioon: Sisemine tabel salvestab pรตhimรคllu identse struktuuriga ridu, enamasti andmebaasitabelist loetud andmete vormindamiseks.
  • ๐Ÿงพ Tรถรถala roll: Tรถรถala on รผks rida, millel on sama vorming kui tabelil ja mis tรถรถtleb tabelit ridahaaval.
  • ???? ๏ธ Pรคise rida: Pรคisereaga tabel saab kaudse tรถรถala, seega saab ridu otse lisada vรตi lugeda ilma nimetamata.
  • ๐Ÿ› ๏ธ Neli loomise meetodit: TYPES-lause, viide olemasolevale tabelile, viide olemasolevale struktuurile vรตi OCCURS-iga deklareeritud uus struktuur.
  • โž• Asustamine: APPEND lisab รผhe rea, COLLECT koondab numbrilised vรคljad duplikaatvรตtme leidmiseks ja INSERT lisab rea valitud indeksisse.
  • ๐Ÿ” Loe ja kopeeri: LOOP AT loeb iga rea, READ TABLE loeb รผhe rea indeksi kaupa ja MOVE vรตi vรตrdusmรคrk kopeerib terve tabeli.
  • ๐Ÿ—‘๏ธ Kustuta: TSรœKKLI sees olev DELETE eemaldab praeguse rea ja DELETE โ€ฆ INDEX eemaldab rea teadaolevast positsioonist.

SAP ABAP-i sisemised tabelid

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

Erinevus sisemise laua ja tรถรถala vahel

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.

  1. Sisemised tabelid HEADER joonega
  2. 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.

KKK

CLEAR itab tรผhjendab ainult pรคiserea ja CLEAR itab[] tรผhjendab sisu. REFRESH tรผhjendab alati sisu, kuid hoiab mรคlu reserveerituna. FREE tรผhjendab sisu ja vabastab samuti mรคlu.

SY-TABIX sisaldab hetkel tรถรถdeldava sisemise tabeli reanumbrit. SY-INDEX sisaldab DO- vรตi WHILE-tsรผkli lรคbimise numbrit. Rรคsistatud tabel jรคtab SY-TABIXi nulli, kuna sellel puudub indeks.

TSรœKKEL ITAB-IL Vรคljasรผmboli Mร„ร„RAMINE vรคldib iga rea โ€‹โ€‹kopeerimist tรถรถpiirkonda, seega tรถรถtab see suurte tabelite puhul kiiremini ja vรตimaldab rida kohapeal muuta ilma MODIFY-lauseta.

Jah. ABAP-i arendustรถรถriistade tehisintellekti assistendid kirjutavad OCCURS-i ja pรคiserea deklaratsioonid รผmber TYPE STANDARD TABLE OF-iks selgesรตnalise tรถรถalaga ning mรคrgistavad laused, mis katkevad pรคiserea kadumise korral.

Tehisintellekti jรตudlusnรตustajad kontrollivad, kuidas tabelit tรคidetakse ja loetakse, ning soovitavad seejรคrel sorteeritud vรตi rรคsitud tabelit, kui lineaarne otsing domineerib kรคitusajas. Soovitus kinnitatakse a-ga trace tehingus SAT.

Vรตta see postitus kokku jรคrgmiselt: