Anfang des Inhaltsbereichs

ABAP-Sprachelemente Dokument im Navigationsbaum lokalisieren

Der Quelltext eines ABAP-Programms besteht aus Kommentaren und ABAP-Anweisungen.

Kommentare unterscheiden sich durch die voranstehenden Zeichen * (am Zeilenanfang) und " (an beliebiger Zeilenposition) von den ABAP-Anweisungen.

ABAP-Anweisungen beginnen immer mit einem ABAP-Schlüsselwort und werden durch einen Punkt (.) abgeschlossen. Anweisungen können sich über mehrere Programmzeilen erstrecken und es können mehrere Anweisungen in einer Zeile stehen.

ABAP-Anweisungen arbeiten mit ABAP-Datentypen und -objekten.

Anweisungen und Schlüsselwörter

Die erste Position einer ABAP-Anweisung nimmt ein ABAP-Schlüsselwort ein. Dieses bestimmt die Kategorie der Anweisungen. Wir unterscheiden folgende Kategorien von Anweisungen:

Deklarative Anweisungen

Diese Anweisungen definieren Datentypen oder deklarieren Datenobjekte, mit denen die anderen Anweisungen eines Programms oder einer Routine arbeiten. Die Gesamtheit aller deklarativen Anweisungen eines Programms oder einer Routine bilden den Deklarationsteil des Programms oder der Routine.

Beispiele für Schlüsselwörter deklarativer Anweisungen sind:

TYPES, DATA, TABLES

Modularisierungs-Anweisungen

Diese Anweisungen definieren Verarbeitungsblöcke in einem ABAP-Programm.

Schlüsselwörter für Modularisierungs-Anweisungen teilen sich auf in:

· Zeitpunkt-Schlüsselwörter

Anweisungen mit diesen Schlüsselwörtern definieren Ereignisblöcke. Ereignisblöcke werden nicht durch spezielle Anweisungen beendet, sondern durch die Modularisierungs-Anweisung des nächsten Verarbeitungsblocks.

Beispiele für Zeitpunkt-Schlüsselwörter sind:

AT SELECTION SCREEN, START-OF-SELECTION, AT USER-COMMAND

· Definierende Schlüsselwörter

Anweisungen mit diesen Schlüsselwörter definieren Unterprogramme, Funktionsbausteine, Dialogmodule und Methoden. Diese Verarbeitungsblöcke werden durch entsprechende END-Anweisungen abgeschlossen.

Beispiele für definierende Schlüsselwörter:

FORM ... ENDFORM, FUNCTION ... ENDFUNCTION,
MODULE ... ENDMODULE.

Steuernde Anweisungen

Diese Anweisungen steuern den Ablauf eines ABAP-Programms innerhalb eines Verarbeitungsblocks abhängig von bestimmten Bedingungen.

Beispiele für Schlüsselwörter steuernder Anweisungen sind:

IF, WHILE, CASE

Aufrufende Anweisungen

Diese Anweisungen rufen Verarbeitungsblöcke (durch Modularisierungs-Anweisungen definiert) im gleichen oder einem externen ABAP-Programm auf oder verzweigen vollständig in andere Programme.

Beispiele für Schlüsselwörter aufrufender Anweisungen sind:

PERFORM, CALL, SET USER-COMMAND, SUBMIT, LEAVE TO

Operationale Anweisungen

Diese Anweisungen bearbeiten die Daten, die durch deklarative Anweisungen definiert werden.

Beispiele für Schlüsselwörter operationaler Anweisungen sind:

WRITE, MOVE, ADD

Datenbank-Anweisungen

Diese Anweisungen greifen über die Datenbankschnittstelle auf Datenbanktabellen des zentralen Datenbanksystems zu. In ABAP hat der Programmierer Zugriff auf zwei Arten von Anweisungen, nämlich Open SQL und Native SQL.

Open SQL

Open SQL ist eine Teilmenge von Standard SQL92 und beschränkt sich auf DML-Anweisungen (Data Manipulation Language), wie z.B. SELECT, INSERT und DELETE. DDL-Anweisungen (Data Definitionion Language), wie z.B. CREATE TABLE oder CREATE INDEX, sind nicht in Open SQL enthalten, sondern in dem Werkzeug ABAP Dictionary der ABAP Workbench verborgen. Open SQL stellt die Schnittmenge der DML-Funktionalität von SQL92 zur Verfügung, für die alle von SAP unterstützten Datenbanksystemen eine gemeinsame Programmierschnittstelle haben. Weiterhin enthält Open SQL einige SAP-spezifische Erweiterungen. ABAP-Programme, die ausschließlich Open SQL-Befehle für Datenbankzugriffe verwenden, sind unabhängig vom Datenbanksystem. Die Open SQL-Befehle werden in der Datenbankschnittstelle in herstellerspezifisches Standard SQL umgesetzt.

Native SQL

Native SQL-Anbweisungen werden in der Datenbankschnittstelle ohne Umsetzung direkt an die Datenbank übergeben. Über Native SQL können ABAP-Programme alle Eigenschaften der verwendeten Datenbank nutzen. Insbesondere erlauben Native SQL-Anweisungen auch DDL (Data Definition Language) Operationen. Das Werkzeug ABAP Dictionary verwendet solche Native SQL-Anweisungen z.B. zum Anlegen von Datenbanktabellen. In ABAP-Programmen selbst sind DDL-Anweisungen dagegen nicht sinnvoll, da dann die zentrale Verwaltung der angelegten Objekte durch das ABAP-Dictionary nicht gegeben ist. Wegen der mangelnden Standardisierung der Programmierschnittstellen von SQL92, sind ABAP-Programme, die Native SQL-Anweisungen enthalten, datenbankabhängig.

Datentypen und -objekte

Die physikalischen Einheiten, mit denen ABAP-Anweisungen zur Laufzeit arbeiten, nennen wir programmlokale Datenobjekte. Der Inhalt von Datenobjekten belegt Platz im Speicher des Programms. ABAP-Anweisungen greifen über den Namen der Datenobjekte auf diesen Inhalt zu. Beispielsweise schreiben Anweisungen den Inhalt von Datenobjekten auf Listen oder in Datenbanken, übergeben ihn an Routinen, verändern ihn durch Zuweisungen oder vergleichen ihn in logischen Ausdrücken.

Jedes ABAP-Datenobjekt hat bestimmte technische Eigenschaften, die zu jedem Zeitpunkt der Laufzeit eines ABAP-Programms vollständig spezifiziert sind. Die technischen Eigenschaften eines Datenobjekts sind: Datentyp, Feldlänge und Anzahl der Nachkommastellen.

Der Datentyp bestimmt wie der Inhalt eines Datenobjekts von ABAP-Anweisungen interpretiert wird. Datentypen treten in ABAP zum einen als Attribute von Datenobjekten auf, zum anderen können sie eigenständig definiert werden für eine spätere Verwendung mit einem Datenobjekt. Die Definition von eigenständigen Datentypen kann programmintern im Deklarationsteil mit der Anweisung TYPES oder programmübergreifend im ABAP-Dictionary erfolgen.

Die Verwendung bestimmter Datentypen richtet sich nach der Verwendung der Datenobjekte im Programm. Die Aufgaben von ABAP-Programmen reichen von der Weitergabe einzelner Eingabedaten an Datenbanken bis zur Verarbeitung und Ausgabe strukturierter Massendaten aus Datenbanken. Für diesen Zweck bietet die Sprache ABAP folgende Datentypen an:

Vordefinierte und benutzerdefinierte elementare Datentypen

Es gibt fünf vordefinierte nichtnumerische Typen:

Zeichenketten (C), numerische Zeichenketten (N), Datumsfelder (D), Zeitfelder (T) und Hexadezimalfelder (X)

und drei vordefinierte numerische Typen:

Integer (I), Gleitpunktzahlen (F) und gepackte Zahlen (P).

Mit den Datentypen D, F, I, und T ist die Feldlänge fest vorgegeben. Die Feldlänge gibt den Speicherplatz in Bytes wieder, die von einem Datenobjekt im Speicher belegt wird. Bei den übrigen Datentypen C, N, X und P ist die Feldlänge nicht implizit durch den Typ festgelegt, sondern wird bei der Deklaration eines Datenobjekts im Programm definiert.

Der Datentyp P ist von besonderer Bedeutung für exakte Berechnungen, z.B. im kaufmännischen Bereich. Hierfür wird bei der Deklaration eines Datenobjekts vom Typ P die Anzahl der Nachkommastellen definiert.

ABAP erlaubt mit der Anweisung TYPES die Definition von benutzerdefinierten elementaren Datentypen, die auf den vordefinierten elementaren Datentypen beruhen. Dabei werden sämtliche technischen Merkmale des neuen Datentyps festgeschrieben. Beispielsweise kann man basierend auf dem vordefinierten Typ P einen neuen Typ P_2 definieren, der zwei Nachkommastellen hat, und diesen verwenden, um entsprechende Datenobjekte zu deklarieren.

Elementare Datentypen verwendet man zur Definition einzelner elementarer Datenobjekte. Solche Objekte dienen z.B. dem Transfer von einzelnen Ein- und Ausgabewerten, als Hilfsfelder für Berechnungen oder zum Speichern von Zwischenergebnissen. Die im folgenden beschriebenen aggregierten Datentypen werden aus den elementaren Datentypen aufgebaut.

Bei den aggregierten Datentypen unterscheiden wir zwischen Strukturen (auch Feldleisten genannt) und internen Tabellen.

Strukturen (Feldleisten)

Strukturen bestehen aus einer Folge beliebiger Datentypen und spezifizieren ein Datenobjekt technisch vollständig. Auf solche Datenobjekte kann sowohl komponentenweise als auch insgesamt zugegriffen werden. Es gibt in ABAP keine Strukturen. Der Aufbau einer Struktur muß entweder in ABAP-Programmen selbst oder im ABAP-Dictionary definiert werden.

Strukturen dienen in ABAP-Programmen zur Zusammenfassung von logisch zusammengehörigen Arbeitsbereichen. Da die Einzelelemente von Strukturen beliebige Datentypen haben können, also wiederum Strukturen oder interne Tabellen sein können, sind die Einsatzmöglichkeiten von Strukturen sehr umfassend. Beispielsweise dienen Strukturen mit elementaren Elementen der programminternen Darstellung von Zeilen aus Datenbanktabellen und Strukturen mit aggregierten Elementen werden eingesetzt, um alle Eigenschaften eines Bildschirms oder Controls in einem Datenobjekt zusammenzufassen.

Interne Tabellen

Interne Tabellen bestehen aus einer Folge von Zeilen gleichen Datentyps.

Interne Tabellen sind charakterisiert durch

· einen Zeilentyp.

Der Zeilentyp einer internen Tabelle kann ein beliebiger ABAP-Datentyp sein, also ein elementarer Typ, eine Struktur oder eine interne Tabelle.

· einen Schlüssel

Der Schlüssel von internen Tabellen dient der Identifikation von Tabellenzeilen. Er läßt sich aus den elementaren Feldern der Zeilen aufbauen. Wir können weiterhin zwischen eindeutigen und nichteindeutigen Schlüsseln unterscheiden.

· die Zugriffsart

Die Zugriffsart definiert, wie ABAP auf die interne Tabelle zugreift. Bei der Zugriffsart lassen sich unsortierte und sortierte Indextabellen sowie Hash-Tabellen unterscheiden.
Bei Index-Tabellen wird intern ein linearer Index geführt, so daß der Zugriff auf Tabellenzeilen sowohl über Indexangabe als auch über den Schlüssel erfolgen kann.
Bei Hash-Tabellen wird kein linearer Index geführt. Der Zugriff auf Tabellenzeile erfolgt ausschließlich unter Angabe des Schlüssels. Hierbei führt das System intern einen Hash-Algorithmus aus.

Interne Tabellen werden immer dann eingesetzt, wenn mehrfache Daten einer festen Struktur programmintern verwendet werden. Ein wichtiges Einsatzgebiet ist z.B. die programminterne Speicherung von Daten aus der Datenbank.

Datentyp für Referenzen

Referenzen dienen zur Zeit ausschließlich als Objektreferenzen in ABAP Objects. Referenzen liegen in Referenzvariablen und der Datentyp der Referenzvariablen bestimmt, wie das Programm die Referenz behandelt. Wir unterscheiden zwischen Datentypen für Klassen- und Interfacereferenzen.

Referenzvariablen werden in ABAP wie andere Datenobjekte mit elementarem Datentyp behandelt. Das bedeuted, daß eine Referenzvariable nicht nur als Einzelfeld, sondern auch als kleinste unteilbare Einheit komplexer Datenobjekte wie Strukturen oder interne Tabellen definiert werden kann.

Deklaration von Datenobjekten

Abgesehen von Schnittstellenparametern von Routinen werden alle Datenobjekte eines ABAP-Programms oder einer Routine mit deklarativen Anweisungen in deren Deklarationsteil. Diese deklarativen Anweisungen legen den Datentyp und gegebenenfalls die noch fehlenden technischen Eigenschaften nämlich Feldlänge und Nachkommastellen vor der eigentlichen Programmausführung fest. Eine Ausnahme bilden die internen Tabellen.

Bei der Deklaration eines Datenobjekts als interne Tabelle werden genau alle technischen Eigenschaften festgelegt mit Ausnahme der Feldlänge des Datenobjekts. Bei internen Tabellen liegt nur die Länge einer Zeile fest, während die Anzahl der Zeilen also die eigentliche Länge des Datenobjekts im Speicher dynamisch während des Programmablaufs angepaßt wird. Interne Tabellen sind somit dynamisch erweiterbare Datenobjekte einer festen Struktur.

Schnittstellenparameter von Routinen werden dagegen erst beim Aufruf der Routine als lokale Datenobjekte erzeugt. Die technischen Eigenschaften eines Schnittstellenparameters können entweder in der Routine selbst festgelegt werden oder sie werden beim Aufruf der Routine von den Übergabeparametern übernommen.

Ende des Inhaltsbereichs