Sie sind auf Seite 1von 3

ABAP Tutorial Teil 3: Strukturen und interne Tabellen (1)

Mrz 20, 2012 | Der Bereich der internen Tabellen ist immer eine langwierige und vor allen Dingen vielfltige ngelegenheit! ber in meinen ugen fast schon essentieller als das um herschieben von "arametern via Function Modules bzw! Funktionsbausteinen! #or allen Dingen haben interne Tabellen ihre T$c%en und &igenheiten und zwar letztlich so viele dass wir uns die nchsten Teile der 'erie des ABAP-Tutorials ausschlie(lich mit internen Tabellen befassen werden! )n den *rundlagen haben wir die Basis der folgenden Datenelemente und Datent+,en behandelt! -unchst aber brauchen wir ein *rund%onstru%t f$r die erste interne Tabelle! )nterne Tabellen %.nnen aus 'tru%turen abgeleitet werden, aber auch aus Datenbanktabellen und Datent+,en! /as ganz und gar wichtig ist, ist der fachliche 0argon der ebenfalls sehr gut dazu beitragen %ann alles etwas %onfus zu gestalten! 1etztlich ist dies aber recht $bersichtlich2 Eine Tabellenzeile wird in der 3egel mit dem "rfi4 5 a!6 oder 5ls!6! 5 a!6 steht f$r orkarea und 5ls!6 steht f$r localstructure! &ingedeutscht ist es aber das gleiche, nmlich eine einfache Tabellenzeile! /ir beschrn%en uns von den "rfi4en aufgrund der $blichen 7onventionen allerdings auf 5ls6, da 5 a6 zumindest den offiziellen Do%umentationen nach, den nschein macht demnchst obsolet zu werden! uch wenn dies %eine weitreichenden uswir%ungen hat, immerhin %ann man seine #ariablen und Tabellen gerne weiterhin nennen wie man m.chte! Eine interne Tabelle als *anzes betrachtet hat ebenfalls ihre eigenen "on#entionen! 1aut offizieller Do%umentationen e4istieren 5 t!6 und 5lt!6! 5 t!6 steht f$r orkin$table und 5lt!6 steht f$r localtable! /ie schon bei der orkarea entschlie(t man sich hier von 'eiten der SAP wohl dazu es eher bei 5lt6 zu belassen und orkin$table demnchst als veraltet zu de%larieren! 0etzt %ommen wir zu den einzelnen Definitionen und De%larationen einer internen Tabelle2 Mit einer Struktur ird auc% eine Tabellenzeile de%lariert! Dies geht in mehreren #arianten2
Die Tabellenzeile wird von der Objekt INT4 geerbt. Das Objekt kann auch eine vorhandene Struktur oder Datenbanktabelle sein. In jenem all werden !s"mtliche elder welche die Struktur oder Tabelle beinhalten mit all ihren #igenscha$ten vererbt. D%T%& lt't()e T*+# T%,-# O int4 with header line.

#orsicht ist bei dieser internen Tabelle wegen dem -usatz &'(T) )EADE* +(,E- gegeben! ls solches fun%tioniert dieser im allgemeinen noch in a%tuellen '+stemen 8&3" 9!0:, er wird allerdings von der ' " und auch im 'inne von ABAP .b/ects als De,recated also veraltet bezeichnet und fliegt demnchst wohl aus dem 'tandard! Dann gibt es die %lassischste und vermutlich auch lteste #ariante, welche auch eine Struktur mit B&*); <= und &;D <= auszeichnet!

T*+#S&

,#.IN O ls'zeile/ lv'inde0 like int4/ lv'var like int4/ #ND O ls'zeile. T*+#S& lt'tabelle T*+# T%,-# O

ls'zeile.

ber in einer abgewandelten, ebenfalls bald obsoleten =orm gibt es diese De%laration auch2
D%T%& ,#.IN O O1123S / matnr like mara4matnr/ werks like marc4werks/ #ND O .

)m nchsten Teil der 3eihe geht es wie schon ange%$ndigt dann um die weiteren #arianten der De%larationen interner Tabellen und wir werden das erste Mal $ber die Tabelle mit einem +..P schleifen!

ABAP Tutorial Teil 3: Strukturen und interne Tabellen (0)


,ril 11, 2012 | /ie schon im vorigen Teil ange%$ndigt2 )nterne Tabellen haben unter den schlimmsten >mstnden das "otential f$r nachhaltige #ermeiden von B "?@ode! Das muss aber nicht sein! us diesem *runde habe ich hier die wichtigsten <,erationen in #erbindung mit internen Tabellen zusammengefasst! (nterne Tabelle be12llen: Das bef$llen interner Tabellen ist wichtig und im >mgang mit B " essentiell! >m eine itab zu mit /erten zu bef$llen oder einfach nur besti33te 4eilen zu 3ani5ulieren ben.tigen wir zunchst einmal eine interne Tabelle2
T*+#S& ,#.IN O ls'zeile/ lv'inde0 like int4 value 5/ lv'name like char67/ #ND O ls'zeile. T*+#S& lt'tabelle T*+# T%,-# O

ls'zeile.

Der eigentlich 1<<" also das dar$berschleifen und einf$gen und mani,ulieren von &intrgen sieht in der 3egel immer so aus2
-OO+ %T lt'tabelle INTO ls'zeile. I s(4inde0 8 5. ls'zeile4lv'inde0 8 977759. ls'zeile4lv'name 8 9Testname#ins9. :ODI * lt'tabelle 3O: ls'zeile. #-S#I s(4inde0 8 ;. ls'zeile4lv'inde0 8 9777;9.

ls'zeile4lv'name 8 9Testname<wei9. :ODI * lt'tabelle 3O: ls'zeile. #NDI . #ND-OO+.

4ur Erkl6run$: lsAzeile %ann Bedesmals nat$rlich nur den )nhalt einer einzigen -eile haben, durch das M.D(F7? rgument wird die a%tuell bef$llte -eile oder der 'orkarea genannte Bereich in die interne Tabelle geschrieben! >m den +..P zu kontrollieren verwenden wir die '+stemvariable 6s8-inde96! Diese taucht ebenso wie das s8-subrc immer dann auf, wenn eine <,eration beendet wurde oder im =alle von s8-inde9! eine neue -eile in der Tabelle durch bs,w! einen 1<<" oder eine hnliche Tabelleno,eration anges,rochen wird! ',rich in einem 1<<" werden die Durchlufe der -eilen ohnehin durch s8-inde9, welcher in%rementiert zhlt und bei einem s8-subrc : ;, also dem &nde oder dem nicht #orhandensein einer internen Tabelle beendet und der Durchlauf aus der 'chleife abgebrochen! Datenbanktabelle und interne Tabellen: dbtab in itab wie die ' "?Do%umentation sagt, ist als solches wir%lich die einfachste <,eration! &s reichen einfache 'C1?'tatements welche auch in der =1?Dilfe der ABAP 'orkbenc% zu finden sind! llerdings ist dies <,en?'C1, bzw! 'C1 nach dem 'tandard S<+=0! Das bedeutet das alle aus M'?'C1 und M+'C1 gewohnten Befehle nicht anders agieren aber s+nta%tisch etwas anders aufgebaut sind! >nd zwar sind so gut wie %eine 7ommata als 'e,eratoren vorhanden! Dadurch dass die B "?'+nta4 Bedes 1eerzeichen und Beden /hites,ace ohnehin als 'e,erator inter,retiert ist dies nicht notwendig! &in einfacher SE+E>T?Befehl bs,w! sieht also so aus2
S#-#1T = 3O: D,T%, TO IT%, >?#3# $ieldname 8 !5!.

<b in 'ebD8n5ro for B " oder einem %litze%leinen Funktionsbaustein, interne Tabellen sind essentiell und eines der wichtigsten &lemente in der B " /elt! 'enn Er$6nzun$en zu Euc% o11enen Fra$en also noc% #or%anden sind? lasst es 3ic% issen@ 7onta%tm.glich%eiten im Eberfluss vorhanden! ,ro,os =un%tionsbausteine2 )m nchsten Teil des B " Tutorials werden wir =un%tionsbausteine erstellen und deren =un%tionsweise durchgehen!