ABAP - Schlüsselwortdokumentation →  ABAP - Programmierrichtlinien →  Architektur →  Datenspeicherung → 

Datenbankzugriffe

Hintergrund

Für den Zugriff auf Daten in Datenbanktabellen stehen in ABAP folgende Mittel zur Verfügung:

Alle Zugriffsarten außer AMDP erlauben außer dem Zugriff auf die zentrale Datenbank eines AS ABAP (Standardverbindung) über zusätzliche Verbindungen auch den Zugriff auf andere Datenbanken.

Hinweis

Für den Aufruf von Datenbankprozeduren einer SAP-HANA-Datenbank gibt es zusätzlich auch die Anweisung CALL DATABASE PROCEDURE, die insbesondere für den Zugriff über eine sekundäre Datenbankverbindung geeignet ist.

Regel

Open SQL verwenden

Verwenden Sie für allgemeine Persistenz-Services so weit wie möglich Open SQL. Native SQL ist nur für Aufgaben zu verwenden, für die Open SQL nicht geeignet ist.

Details

Nur Open SQL ist garantiert unabhängig von der verwendeten Datenbankplattform. Aus diesem Grund umfasst Open SQL nicht die Menge aller auf einer speziellen Datenbank möglichen SQL-Anweisungen, sondern nur eine Schnittmenge des DML-Umfangs aller vom AS ABAP unterstützten Datenbanksysteme. Die von Open SQL bearbeitbaren Datenbanktabellen können in ABAP direkt als strukturierte Typen für die Deklaration passender Arbeitsbereiche verwendet werden. Nur Open SQL unterstützt die SAP-Pufferung von Tabelleninhalten im Shared Memory.

Native SQL sollte nur dann eingesetzt werden, wenn die Aufgabe tatsächlich nicht mit Open SQL gelöst werden kann. Services, die mit Native SQL arbeiten, sind in der Regel vom verwendeten Datenbanksystem abhängig und können nicht auf allen AS ABAP ausgeführt werden. Für plattformunabhängige Services sind dann Implementierungen für alle unterstützten Datenbanken vorzusehen.

Wenn ein Datenbankzugriff über die Native- anstatt über die Open-SQL-Schnittstelle notwendig ist, sollten ADBC oder AMDP verwendet werden.

Hinweis

Die Regel, solange wie möglich Open SQL zu verwenden, gilt ganz besonders auch für AMDP. Es ist nicht sinnvoll, SQL-Anweisungen in Datenbankprozeduren auszulagern, wenn diese auch über Open SQL oder ABAP CDS verwirklicht werden können. In diesem Fall sind in aller Regel keinerlei Performancegewinne zu erwarten, da die Open-SQL-Anweisungen von der Datenbankschnittstelle genauso nach Native SQL umgesetzt werden, wie man sie in der Datenbankprozedur schreiben würde. Der Einsatz von AMDP ist nur dann sinnvoll, wenn durch den Aufruf einer Prozedur HANA-spezifische Eigenschaften gewinnbringend ausgenutzt werden können oder der wiederholte Transport großer Datenmengen zwischen Datenbank und Applikationsserver umgangen werden kann.

Schlechtes Beispiel

Siehe das ausführbare Beispiel AMDP, Vergleich mit Open SQL. Ein ungünstig mit Open SQL programmierter Datenbankzugriff kann oft bereits durch eine verbesserte Verwendung von Open SQL optimiert werden, so dass der Einsatz von AMDP in solchen Fällen unnötig ist.

Gutes Beispiel

Siehe das ausführbare Beispiel Währungskonvertierung mit SQLScript. In diesem Fall wird ein spezifischer Operator der Sprache SQLScript verwendet, der ansonsten nicht zur Verfügung steht.