Ansicht
Dokumentation
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 timeDiese Dokumentation steht unter dem Copyright der SAP AG.
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:
- Ausprägungen der im ABAP Dictionary definierten Datenbanktabellen und Datenbank-Views.
- SQL-Views von in ABAP-CDS definierten CDS-Views.
- Aufrufe folgender ABAP-verwalteter Datenbankprozeduren oder Datenbankfunktionen:
- AMDP-Prozeduren und AMDP-Funktionen, die keine CDS-Tabellenfunktionen implementieren, können aufgerufen werden.
- Die zu einer CDS-Tabellenfunktion gehörige AMDP-Tabellenfunktion kann aufgerufen werden.
- Auf die ABAP-spezifischen Sitzungsvariablen kann auf der SAP-HANA-Datenbank mit der eingebauten HANA-Funktion SESSION_CONTEXT zugegriffen werden.
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:
- Methode EXECUTE_PROCEDURE der Klasse CL_SQL_STATEMENT
- Anweisung EXECUTE PROCEDURE hinter EXEC SQL
- Eine Anbindung interner ABAP-Tabellen an Native SQL ist nur über die Methoden SET_PARAM_TABLE der Klassen CL_SQL_STATEMENT und CL_SQL_RESULT_SET in ADBC möglich. Interne Tabellen können nicht als Hostvariablen hinter EXEC SQL und nicht als Parameter der Methode EXECUTE_PROCEDURE in ADBC verwendet werden.
- 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 unterstützt nicht die Tabellenpufferung.
- Native SQL unterstützt nicht die CDS-Zugriffskontrolle.
- Native SQL kennt nicht die Erweiterungskategorie von DDIC-Strukturen.
- Native SQL unterstützt nicht die Protokollierung von Datenbanktabellen.
- 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.
- Native SQL kennt keine CDS-Assoziationen und CDS-Rollen.
- 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 unterstützt ABAP-verwaltete Sekundärverbindungen und Serviceverbindungen.
- Native SQL berücksichtigt die für eine Datenbank definierten Abhängigkeitsregeln.
- Native SQL berücksichtigt standardmäßig die Datenalterung.
- 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.
- Nicht von ABAP verwaltetes Native SQL unterstützt keine ABAP-verwalteten Sekundärverbindungen und Serviceverbindungen
- Nicht von ABAP verwaltetes Native SQL berücksichtigt nicht die Datenalterung. Wenn es keine passende Abhängigkeitsregel gibt, müssen alle Partitionen in den Hauptspeicher der SAP-HANA-Datenbank gelesen werden.
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 )