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

Wie schon im vorigen Teil angekündigt: Interne Tabellen haben unter den schlimmsten Umständen das Potential für nachhaltige Vermeiden von ABAP-Code. Das muss aber nicht sein. Aus diesem Grunde habe ich hier die wichtigsten Operationen in Verbindung mit internen Tabellen zusammengefasst.

Interne Tabelle befüllen:

Das befüllen interner Tabellen ist wichtig und im Umgang mit ABAP essentiell. Um eine itab zu mit Werten zu befüllen oder einfach nur bestimmte Zeilen zu manipulieren benötigen wir zunächst einmal eine interne Tabelle:

TYPES: BEGIN OF ls_zeile,
   lv_index like int4 value 1,
   lv_name like char30,
END OF ls_zeile.
TYPES: lt_tabelle TYPE TABLE OF ls_zeile.

Der eigentlich LOOP also das darüberschleifen und einfügen und manipulieren von Einträgen sieht in der Regel immer so aus:

LOOP AT lt_tabelle INTO ls_zeile.
    IF sy-index = 1.
       ls_zeile-lv_index = '0001'.
       ls_zeile-lv_name = 'TestnameEins'.
       MODIFY lt_tabelle FROM ls_zeile.
    ELSEIF sy-index = 2.
       ls_zeile-lv_index = '0002'.
       ls_zeile-lv_name = 'TestnameZwei'.
       MODIFY lt_tabelle FROM ls_zeile.
    ENDIF.
ENDLOOP.

Zur Erklärung: ls_zeile kann jedesmals natürlich nur den Inhalt einer einzigen Zeile haben, durch das MODIFY-Argument wird die aktuell befüllte Zeile oder der Workarea genannte Bereich in die interne Tabelle geschrieben. Um den LOOP zu kontrollieren verwenden wir die Systemvariable “sy-index“. Diese taucht ebenso wie das sy-subrc immer dann auf, wenn eine Operation beendet wurde oder im Falle von sy-index. eine neue Zeile in der Tabelle durch bspw. einen LOOP oder eine ähnliche Tabellenoperation angesprochen wird. Sprich in einem LOOP werden die Durchläufe der Zeilen ohnehin durch sy-index, welcher inkrementiert zählt und bei einem sy-subrc = 0, also dem Ende oder dem nicht Vorhandensein einer internen Tabelle beendet und der Durchlauf aus der Schleife abgebrochen.

Datenbanktabelle und interne Tabellen:

dbtab in itab wie die SAP-Dokumentation sagt, ist als solches wirklich die einfachste Operation. Es reichen einfache SQL-Statements welche auch in der F1-Hilfe der ABAP Workbench zu finden sind. Allerdings ist dies Open-SQL, bzw. SQL nach dem Standard SQL92. Das bedeutet das alle aus MS-SQL und MySQL gewohnten Befehle nicht anders agieren aber syntaktisch etwas anders aufgebaut sind. Und zwar sind so gut wie keine Kommata als Seperatoren vorhanden. Dadurch dass die ABAP-Syntax jedes Leerzeichen und jeden Whitespace ohnehin als Seperator interpretiert ist dies nicht notwendig. Ein einfacher SELECT-Befehl bspw. sieht also so aus:

SELECT * FROM DBTAB TO ITAB WHERE fieldname = "1".

Ob in WebDynpro for ABAP oder einem klitzekleinen Funktionsbaustein, interne Tabellen sind essentiell und eines der wichtigsten Elemente in der ABAP Welt. Wenn Ergänzungen zu Euch offenen Fragen also noch vorhanden sind, lasst es mich wissen. Kontaktmöglichkeiten im Überfluss vorhanden. Apropos Funktionsbausteine: Im nächsten Teil des ABAP Tutorials werden wir Funktionsbausteine erstellen und deren Funktionsweise durchgehen.

Veröffentlicht in: ABAP Schlagworte: , , , , , , , , , ,

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>