ABAP Anweisungen Beispiele

Aus MattWiki

Grundlegende ABAP-Anweisungen

Achtung: Klammern und Operatoren müssen durch mind. ein Leerzeichen getrennt werden.

MOVE TO
MOVE-CORRESPONDING
CLEAR
Arithmetische Ausdrücke (+, -, *, /, **, DIV, MOD)
STRLEN(…)

SY-Anweisungen

SY-DATU: Systemdatum 
SY-INDEX: Aktueller Schleifendurchlauf 
SY-SUBRC: Rückgabewert aus vorherigem Aufruf

Nachrichten / Messages

MESSAGE t (message class) [WITH v1 [v2] …]

Interne Tabelle bearbeiten

APPEND (Anhängen einer Struktur): APPEND ls_struktur TO lt_table => nur Standardtabellen!
INSERT (Struktur in Tab. Einfügen): INSERT ls_struktur INTO TABLE lt_table <condition>
READ (kopiert Inhalt Zeile in Struktur): READ TABLE lt_table INTO ls_struktur <condition>
MODIFY (überschreibt Zeile mit Struktur): MODIFY TABLE lt_table FROM ls_struktur [<condition>]
DELETE (löscht Zeile(n) interner Tabelle): DELETE itab <condition>
COLLECT (akkummuliert Inhalt einer Struktur zur schlüsselgleichen Zeile einer internen Tabelle)
Addition von Nicht-Schlüsselfeldern (numerisch)
COLLECT ls_struktur INTO lt_table

Verarbeitung mehrerer Datensätze

DELETE
INSERT LINES OF lt_table INTO lt_table2
APPEND LINES OF lt_table INTO lt_table2

Schleifen

LOOP AT lt_table INTO ls_struktur…ENDLOOP.
SY-TABIX (Zeilennummer in Schleife)
FROM…TO…
INDEX OF…
WHERE…
WITH TABLE KEY…

Sortieren

SORT-Befehl 
BY
ASCENDING/DESCENDING
AS TEXT

Löschen lokaler Tabellen

REFRESH (Löscht Inhalt)
CLEAR (Löscht Inhalt + Kopfzeile)
FREE (Löscht Inhalt + Kopfzeile + Gibt Arbeitsspeicher frei)

Interne Tabellen

  • Datenobjekte, mit denen Datenmengen einer festen Struktur im Arbeitsspeicher gehalten werden
  • Datenmengen in feste Struktur im Arbeitsspeicher schreiben
  • Zeilenweise, Spalten sind „Komponenten“
  • Datentyp vollständig spezifiziert durch Zeilentyp, Schlüsseldefinition und Zugriffsart
  • Tabellenarten
    • Standardtabellen (Index/Schlüssel/NON-UNIQUE) &rarr; vorwiegend über Index
    • Sortierte Tabellen (Index/Schlüssel /UNIQUE/NON-UNIQUE) &rarr; vorwiegend über Schlüssel
    • Hash-Tabelle (Schlüssel/UNIQUE) è nur über Schlüssel

Standard-Definition einer internen Tabelle

DATA lt_table TYPE [STANDARD] TABLE OF ls_struktur [WITH NON-UNIQUE DEFAULT KEY]

(Beliebig anpassbar)

Zugriff per Schleifendurchlauf

  • Zeilen per Schlüsselzugriff hinzufügen über INSERT… INTO TABLE…
  • Unterscheidung der Tabllenart
    • Anhängen über APPEND bei Standardtabellen
    • Eindeutiger Schlüssel bei Sorted Tables => Insert nur bei nicht vorhandenem Schlüsselsatz
    • Datensatz angehängt + Eintrag Hash-Index bei Hashtabellen (Sy-Tabix zeigt auf Index-Feld)
  • Rückgabewert (sy-subrc) 4 wenn Satz schon vorhanden
  • COLLECT…INTO TABLE… wenn alle Nichtschlüsselfelder numerisch (Summation)
  • Rangliste über APPEND… INTO… SORTED BY…
  • Zugriff auf gesamte interne Tabelle über READ
  • Ergebnis schreiben in Zielstruktur (immer 1 Satz), Check ob vorhanden durch TRANSPORTING NO FIELDS
  • Inhalte Ändern/Löschen per Schlüsselzugiff (MODIFY)
  • Schlüsselangabe über WHERE, möglich für Einzelsätze oder ganze Tabellen

SQL Zugriff

Datenbeschaffung über SQL

Unterschiedliche Native-SQL-Anweisungen für unterschiedliche DBMS

OPENSQL (DB-unabhängig)

Lesen von DBs

SELECT-Statement

SELECT SINGLE für einzelnen Satz

INTO schreibt Ergebnissatz/-sätze in Zielstruktur bzw. Zieltabelle (INTO TABLE)

Feste Zielstruktur oder dynamisch über INTO CORRESPONDING FIELDS OF

APPENDING wenn Inhalt an (Standard-)Tabelle angehängt werden soll

Lesen mehrerer Zeilen durch SELECT-Schleife, wenn Manipulation erforderlich

Inperformant

SELECT…ENDSELECT.

Sy-subrc = 0, wenn mind. 1 Zeile gelesen

Sy-dbcnt = Anzahl gelesener Zeilen

Selbstprogrammieren der Lesezugriffe über Joins

Join-Tabellen/-Bedingungen/-Spalten

Mehrere Möglichkeiten zur Realisierungen (View im Dictionary oder direkt als ABAP Befehl)