SAP ABAP-i sisetabel: looge, lugege, sisestage, kopeerige ja kustutage
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.
Mis on tööpiirkond?
Tööpiirkonnad on üksikud andmeread. Neil peaks olema sama vorming kui kõigil sisemistel tabelitel. Seda kasutatakse sisemise tabeli andmete töötlemiseks üks rida korraga.
Erinevus sisemise laua ja tööpiirkonna vahel?
Pilt ütleb rohkem kui tuhat sõna
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.
Sisemiste tabelite loomine
Sisemise tabeli loomiseks on palju võimalusi. Vaatame neid ükshaaval -
1. Tüübi avalduse abil
Loome nüüd sisemise tabeli ittab kasutades TYPE avaldus.
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 saate luua olemasolevale tabelile viidates. Olemasolev tabel võiks olla standard 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 tabel ittab, 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
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'
Algread lisab tabelisse selle tüübi õige väärtusega lähtestatud rea. Siin on col1 märk ja col2 täisarv. Seejärel lisab algrida APPEND, lisab veergude andmetüübi järgi lähtestatud rea, st ruumi col1 ja 0 jaoks col2.
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 tööala või INITIAL LINE sisestatakse sisemisse tabelisse indeksi juures .
Sisemiste tabelite kopeerimine
Ühe sisemise tabeli sisu saab kopeerida teise, kasutades käsku APPEND LINES või INSERT LINES. Lihtsam viis on kasutada mõnda järgmistest süntaksitest.
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
Oleme nüüd tuttavad sisemiste tabelite loomise ja andmetega täitmisega. Nüüd näeme, kuidas me andmeid tegelikult kasutame või sisetabelitest 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 avaldus loeb praegust rida või rida, nagu indeks määrab . 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, ilmneb käitusaegne tõrge. Kui määratud indeks ületab tabeli suurust, määratakse SY-SUBRC väärtuseks 4.
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.