Ansicht
Dokumentation

ABENDATABASE_ACCESS_GUIDL - DATABASE ACCESS GUIDL

ABENDATABASE_ACCESS_GUIDL - DATABASE ACCESS GUIDL

CL_GUI_FRONTEND_SERVICES - Frontend Services   CPI1466 during Backup  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Datenbankzugriffe

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

ist eine durch ABAP-Anweisungen realisierte Untermenge der Structured Query Language (SQL), die den DML-Anteil (Data Manipulation Language) umfasst. Die Anweisungen von greifen in großen Teilen plattformunabhängig über die-Schnittstelle auf die Datenbanktabellen der Standarddatenbank eines AS ABAP zu, die im ABAP Dictionary definiert und im ABAP-Datenbankschema ausgeprägt sind.
  • AMDP
Das AMDP-Framework dient der Verwaltung und dem Aufruf von ABAP Managed Database Procedures. Dies sind Stored Procedures bzw. Datenbankprozeduren, die als AMDP-Prozeduren in einer AMDP-Methode einer AMDP-Klasse implementiert und von dort ins Datenbanksystem repliziert werden.
  • Native SQL
Datenbankspezifische SQL-Anweisungen, die neben DML- auch DDL-Anweisungen (Data Definition Language) umfassen und wie folgt an die Native-SQL-Schnittstelle der Datenbank übergeben werden können:
  • Die Methoden von ADBC ermöglichen es, dynamische SQL-Anweisungen an ein Datenbanksystem abzusetzen und das Ergebnis zu verarbeiten. ADBC (ABAP Database Connectivity) ist eine klassenbasierte API, die einen objektorientierten Zugriff auf die Native-SQL-Schnittstelle ermöglicht.

  • Native-SQL-Anweisungen können in ABAP-Programmen zwischen den Anweisungen EXEC SQL und ENDEXEC eingebettet werden. Solche statischen Native-SQL-Anweisungen werden von der Syntaxprüfung nicht vollständig überprüft und von der Native-SQL-Schnittstelle fast unverändert an die Datenbank eines AS ABAP weitergegeben.

Alle Zugriffsarten außer AMDP erlauben außer dem Zugriff auf das ABAP-Datenbankschema der Standarddatenbank eines AS ABAP über zusätzliche Datenbankverbindungen auch den Zugriff auf andere Datenbanken und andere Datenbankschemata.

verwenden

Verwenden Sie für allgemeine Datenbankzugriffe so weit wie möglich . AMDP und Native SQL sind nur für Aufgaben zu verwenden, für die nicht geeignet ist.

Nur ist garantiert unabhängig von der verwendeten Datenbankplattform. Aus diesem Grund umfasst 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 bearbeitbaren Datenbanktabellen können in ABAP direkt als strukturierte Typen für die Deklaration passender Arbeitsbereiche verwendet werden. Nur unterstützt die Tabellenpufferung von Tabelleninhalten im Shared Memory.

AMDP und Native SQL sollten nur dann eingesetzt werden, wenn die Aufgabe tatsächlich nicht mit gelöst werden kann. Services, die mit AMDP und 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-Schnittstelle notwendig ist, sollten AMDP oder ADBC verwendet werden.

  • AMDP, welches momentan nur für eine SAP-HANA-Datenbank als Standarddatenbank eines AS ABAP zur Verfügung steht, ist für alle Aufgaben sinnvoll, bei denen Code aus ABAP-Programmen in diese SAP-HANA-Datenbank ausgelagert werden soll, um dort performanter ausgeführt zu werden.
  • ADBC ist eine moderne objektorientierte API, die besser zur zeitgemäßen ABAP-Programmierung passt als EXEC SQL. Erweiterungen der Native-SQL-Schnittstelle, wie z.B. Mengenzugriffe über interne Tabellen, werden nur noch über ADBC zur Verfügung gestellt. ADBC ermöglicht auch dynamische Zugriffe, während eingebettetes Native SQL rein statisch ist. Neuere SQL-Anweisungen wie z.B. WITH für Common Table Expressions (CTE) werden von EXEC SQL nicht vollständig unterstützt.

Hinweise

  • Die Regel, solange wie möglich zu verwenden, gilt ganz besonders auch für AMDP. Es ist nicht sinnvoll, SQL-Anweisungen in Datenbankprozeduren auszulagern, wenn diese auch über oder ABAP CDS verwirklicht werden können. In diesem Fall sind in aller Regel keinerlei Performancegewinne zu erwarten, da die -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 AS ABAP umgangen werden kann.
  • Zugriffe auf von ABAP verwaltete Datenbankobjekte, die nicht in ABAP-Programmen erfolgen, werden nicht empfohlen.

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

Siehe das ausführbare Beispiel Währungskonvertierung mit SQLScript. In diesem Fall wird eine spezifische eingebaute Funktion von HANA SQL verwendet, die ansonsten in ABAP SQL nicht zur Verfügung stand. Die Funktion currency_conversion steht aber in ABAP SQL zur Verfügung und kann die Verwendung von AMDP ersetzen.






Fill RESBD Structure from EBP Component Structure   ABAP Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 7820 Date: 20240523 Time: 152547     sap01-206 ( 138 ms )