Ansicht
Dokumentation

ABENABAP_MANAGED_DB_OBJECTS_NSQL - ABAP MANAGED DB OBJECTS NSQL

ABENABAP_MANAGED_DB_OBJECTS_NSQL - ABAP MANAGED DB OBJECTS NSQL

rdisp/max_wprun_time - Maximum work process run time   rdisp/max_wprun_time - Maximum work process run time  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Native-SQL-Zugriff auf ABAP-verwaltete Datenbankobjekte

Bezüglich des Zugriffs auf ABAP-verwaltete Datenbankobjekte sind zwei Arten von Native-SQL-Zugriffen zu unterscheiden.

Zugriff über von ABAP verwaltetes Native SQL

ABAP-verwaltetes Native SQL ist das Native SQL, über das in ABAP-Programmen über die Native-SQL-Schnittstelle des AS ABAP auf die Datenbank zugegriffen werden kann. Dazu gehören:

Die Native-SQL-Schnittstelle übergibt herstellerspezifische SQL-Anweisungen unverändert an das Datenbanksystem. Daneben gibt es SAP-spezifisches Native SQL, das in plattformabhängigen Anteilen (Client Libraries) der Schnittstelle bearbeitet wird.

Mit Native SQL kann wie folgt auf ABAP-verwaltete Datenbankobjekte zugegriffen werden:

  • Lesende und schreibende Zugriffe auf folgende ABAP-verwaltete Datenbankobjekte mit datenbankspezifischem SQL:

  • SQL-Views von in ABAP-CDS definierten CDS-Views.

  • Aufrufe folgender ABAP-verwalteter Datenbankprozeduren oder Datenbankfunktionen:

Die wesentlichen Eigenschaften von Native SQL sind:

  • Native SQL ist plattformabhängig.
  • In Native SQL sind im ABAP Dictionary definierte Datentypen und deren eventuelle Erweiterungen nicht bekannt.
  • Native SQL berücksichtigt nicht die im ABAP Dictionary definierte Reihenfolge von Feldern, die unterschiedlich zur Datenbank sein kann.

  • Die plattformabhängige Anteile (Client Libraries) der Native-SQL-Schnittstelle unterstützen ein Mapping zwischen ABAP-Typen und passenden Typen der Datenbank für angebundene Parameter in ADBC und Hostvariablen hinter EXEC SQL. Bei nicht passenden Typen werden dagegen plattformabhängige Konvertierungen durchgeführt, die leicht zu unerwarteten Ergebnissen und Fehlern führen können.

  • Null-Werte, die über die Native-SQL-Schnittstelle an ABAP-Datenobjekte übergeben werden, werden in deren typabhängige Initialwerte verwandelt. Bei schreibenden Zugriffen wird die Erzeugung von Null-Werten aber nicht verhindert.

  • Für den Aufruf von Prozeduren stehen in Native SQL zusätzlich zu den plattformabhängigen SQL-Anweisungen spezielle Mittel zur Verfügung:

  • Beim Aufruf von AMDP-Prozeduren und AMDP-Funktionen ist nicht garantiert, dass die Datenbankobjekte vorhanden oder inhaltlich aktuell sind. Dies ist nur bei Aufrufen aus ABAP und beim Zugriff über der Fall. Vor einem Zugriff über Native SQL können Methoden der dokumentierten Klasse CL_AMDP_RUNTIME_SERVICES verwendet werden, um die Datenbankobjekte zu erzeugen. Dies gilt sowohl für direkte Aufrufe, als auch für indirekte Verwendungen, beispielsweise wenn auf SQL-Views von CDS-Views zugegriffen wird, in deren DDL-Quelltext CDS-Tabellenfunktionen als Datenquelle verwendet werden.
  • Native SQL unterstützt nicht folgende im ABAP Dictionary und in ABAP CDS vorgesehene Funktionen:
  • Native SQL hat keine implizite Mandantenbehandlung. Die Mandantenkennung muss immer explizit angegeben werden. Dafür muss in ADBC ein Parameter angebunden oder hinter EXEC SQL eine Hostvariable verwendet werden. Auf der SAP-HANA-Datenbank kann auf die ABAP-spezifischen Sitzungsvariablen CLIENT und CDS_CLIENT zugegriffen werden. Dabei ist zu beachten, dass der Wert der Sitzungsvariablen CDS_CLIENT bei der Verwendung von Native SQL nicht über ABAP-Mittel auf einen anderen Wert gesetzt werden kann.

  • Native SQL greift direkt auf die Datenbankobjekte von CDS-Entitäten zu und berücksichtigt nicht die sonstigen Eigenschaften der CDS-Entitäten:
  • Bei einem Zugriff auf die CDS-verwaltete DDIC-View einer CDS-View muss deren datenbankspezifische Ausprägung bekannt sein. Dies betrifft insbesondere CDS-Views mit Eingabeparametern.

  • Bei einem Zugriff auf die Ausprägung einer CDS-Tabellenfunktion muss deren AMDP-Tabellenfunktion aufgerufen werden.

  • Es ist darauf zu achten, dass alle in einer CDS-View-Entität oder benutzten Sitzungsvariablen den richtigen Wert haben. Das betrifft insbesondere die Sitzungsvariable client, der die HANA-Sitzungsvariable CDS_CLIENT und nicht CLIENT zugeordnet ist.

  • Die ABAP-verwalteten Datenbankobjekte, auf die in Native SQL zugegriffen wird, werden nicht vom Verwendungsnachweis erfasst. Ein Verwendungsnachweis kann nur indirekt stattfinden, wenn passende Parameter und Hostvariablen durch Bezug auf die Dictionary-Typen der Datenbankobjekte deklariert werden. Eine weitere Möglichkeit besteht noch durch eine Volltextsuche in den ABAP-Quelltexten eines AS ABAP.
  • In Native SQL sind DDL-Anweisungen erlaubt.
  • Native SQL ist bei Verwendung von ADBC entweder vollständig dynamisch oder bei der Verwendung von EXEC SQL vollständig statisch.

Zugriff über nicht von ABAP verwaltetes Native SQL

Nicht von ABAP verwaltetes Native SQL sind SQL-Anweisungen, die nicht über die Native-SQL-Schnittstelle des AS ABAP sondern über andere Schnittstellen an die Datenbank übergeben werden oder ohne Kontrolle des AS ABAP in der Datenbank ausgeführt werden. Beispiele sind von der SAP Web IDE for SAP HANA erzeugte Datenbankobjekte der SAP-HANA-Datenbank, die auf ABAP-verwaltete Datenbankobjekte zugreifen, wie Views, die auf Datenbanktabellen des ABAP Dictionary zugreifen, oder Datenbankprozeduren, die AMDP-Prozeduren oder -Funktionen aufrufen.

Für den Zugriff über nicht von ABAP verwaltetes Native SQL gilt im Wesentlichen das Gleiche, wie für den Zugriff über von ABAP verwaltetes Native SQL. Darüber hinaus bestehen folgende zusätzliche Restriktionen:

  • Die genaue Ausprägung und auch der Name eines ABAP-verwalteten Datenbankobjekts ist nicht definiert und kann sich von Release zu Release zu ändern. Nur die Datenbankschnittstelle des AS ABAP kann auf solche Änderungen reagieren und diese für den Verwender transparent machen.
  • Die Implementierung und Funktion der von ABAP verwalteten Datenbankobjekte kann von ABAP-spezifischen Kontextinformationen abhängen, die nur dann gegeben sind, wenn die Datenbank als Standarddatenbank eines AS ABAP fungiert und über dessen Datenbankschnittstelle angesprochen wird. Insbesondere sind die Inhalte der ABAP-spezifischen Sitzungsvariablen der SAP-HANA-Datenbank nur bei einem Zugriff aus ABAP richtig gesetzt. Auf anderen Datenbankplattformen werden sogar nur CDS-Sitzungsvariablen bei einem -Zugriff auf CDS-Entitäten gesetzt.
  • Es ist nur bei einem Zugriff aus dem AS ABAP garantiert, dass ein von ABAP verwaltetes Datenbankobjekt auch vorhanden sowie inhaltlich aktuell ist. Der Zeitpunkt der tatsächlichen Instanziierung oder Aktualisierung steht nicht fest und seine Existenz bzw. Konsistenz ist für Zugriffe von außerhalb des AS ABAP nicht garantiert. Dies gilt insbesondere für AMDP-Prozeduren und AMDP-Funktionen, deren Existenz und Konsistenz nur durch das AMDP-Framework des AS ABAP gewährleistet ist.
  • Ein Verwendungsnachweis für ABAP-verwaltete Datenbankobjekte hat keinerlei Möglichkeit, eine Verwendung durch nicht von ABAP verwaltetes Native SQL zu finden.

Hinweis

Eine für eine Datenbanktabelle definierte Abhängigkeitsregel wird auch von nicht von ABAP verwaltetem Native SQL berücksichtigt, da diese vom Optimizer der SAP-HANA-Datenbank ausgewertet wird.






BAL_S_LOG - Application Log: Log header data   RFUMSV00 - Advance Return for Tax on Sales/Purchases  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 17227 Date: 20240523 Time: 172810     sap01-206 ( 187 ms )