Open SQL besteht aus einer Menge von ABAP-Anweisungen, die Operationen auf der zentralen Datenbank des SAP Web AS ABAP durchführen. Das Ergebnis dieser Operationen und etwaige Fehlermeldungen sind vom jeweils verwendeten Datenbanksystem unabhängig. Open SQL bietet also eine einheitliche Syntax und Semantik für alle von SAP unterstützten Datenbanksysteme. Ein ABAP-Programm, das ausschließlich Open SQL-Anweisungen verwendet, ist ohne Anpassung in jedem SAP-System lauffähig. Open SQL-Anweisungen können nur mit Datenbanktabellen arbeiten, die mit dem Werkzeug ABAP Dictionary der ABAP Workbench angelegt wurden.
Im ABAP Dictionary können die Spalten Datenbanktabellen zu einem Datenbank-View oder kurz View zusammengefasst werden. In Open SQL-Anweisungen werden Views genau wie Datenbanktabellen behandelt. Wenn in den folgenden Abschnitten Datenbanktabellen genannt werden, sind entsprechend auch Views gemeint.
Open SQL umfasst folgende Schlüsselwörter:
Schlüsselwort |
Funktion |
SELECT |
Daten von Datenbanktabellen lesen |
INSERT |
Zeilen in Datenbanktabellen einfügen |
UPDATE |
Zeileninhalte in Datenbanktabellen ändern |
MODIFY |
Zeilen in Datenbanktabellen einfügen oder Zeileninhalte ändern |
DELETE |
Zeilen aus Datenbanktabellen löschen |
OPEN
CURSOR, |
Zeilen von Datenbanktabellen über den Cursor lesen |
Alle Open SQL-Anweisungen versorgen die beiden folgenden Systemfelder mit Rückgabewerten:
· sy-subrc
Der Inhalt des Systemfelds sy-subrc enthält nach jeder erfolgreichen Open SQL-Anweisung den Wert 0, ansonsten einen Wert ungleich 0.
· sy-dbcnt
Der Inhalt des Systemfelds sy-dbcnt enthält nach einer SQL-Anweisung die Anzahl der bearbeiteten Tabellenzeilen.
Ein einziges SAP-System kann die Anwendungsdaten mehrerer abgeschlossener Geschäftsbereiche, z.B. Filialen verwalten. Jeder solcher wirtschaftlich unabhängige Bereiche heißt Mandant (englisch Client) und hat eine Mandatennummer. Beim Anmelden eines Benutzers an den SAP Web AS ABAP wird der aktuelle Mandant festgelegt. Die Struktur jeder Datenbanktabelle für Anwendungsdaten enthält als erste Spalte und erstes Schlüsselfeld die Mandantennummer (Feld MANDT). Nur Bereichsübergreifende Systemtabellen sind mandantenunabhängig und haben keine Mandantenummer.
Open SQL-Anweisungen arbeiten standardmäßig mit einer automatischen Mandantenbehandlung. Anweisungen die auf mandantenabhängige Anwendungstabellen zugreifen, lesen und bearbeiten nur die Daten des aktuellen Mandanten. Es ist nicht möglich in der WHERE-Klausel von Open SQL-Anweisungen eine Bedingung für den Mandanten anzugeben. Das System meldet dann einen Fehler während der Syntaxüberprüfung oder es kommt zu einem Laufzeitfehler. Die Spalte MANDT einer Datenbanktabelle kann nicht mit Open SQL-Anweisungen modifiziert werden. Wenn bei ändernden Anweisungen ein anderer Mandant in einem Arbeitsbereich angegeben wird, überschreibt die ABAP-Laufzeitumgebung diesen automatisch mit dem aktuellen Mandanten, bevor die Open SQL-Anweisung weitergegeben wird.
Falls es notwendig sein sollte, den Mandanten in einer Open SQL-Anweisung explizit zu spezifizieren, da auf die Daten eines anderen Geschäftsbereichs des gleichen SAP-Systems zugegriffen werden soll, muss folgender Zusatz
... CLIENT SPECIFIED ....
direkt hinter dem Namen der Datenbanktabelle angegeben werden. Dieser Zusatz schaltet die automatische Mandantenbehandlung ab. Das Mandantenfeld kann sowohl in der WHERE-Klausel als auch im Tabellenarbeitsbereich verwendet werden.