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

Erinevus sisemise laua ja tööala vahel

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.

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.