Ansicht
Dokumentation
ABENFROM_ADBC_TO_AMDP_ABEXA - FROM ADBC TO AMDP ABEXA
General Material Data General Material DataDiese Dokumentation steht unter dem Copyright der SAP AG.
SAP HANA, von ADBC zu AMDP
Das Beispiel demonstriert, wie eine Aufgabe mit HANA-spezifischen Sprachelementen ausgeführt werden kann.
Quelltext
Beschreibung
Die Aufgabe besteht darin, aus der Datenbanktabelle SFLIGHT alle Zeilen auszulesen, deren Schlüsselfelder MANDT, CARRID und CONNID in einer vorgegebenen dreispaltigen internen Tabelle vorkommen. Das Beispielprogramm ruft hierfür verschiedene Methoden der Klasse CL_DEMO_FROM_ADBC_TO_AMDP auf, in deren Instanzkonstruktor die interne Tabelle connection_tab gemäß einer Benutzereingabe gefüllt wird.
Hinweis
Die in den Methoden gezeigten Beispiele zur Verwendung HANA-spezifischer Sprachelemente sind reine Syntaxbeispiele. Die hier gestellte Aufgabe kann genauso gut mit gelöst werden, weshalb gemäß der zugehörigen Programmierrichtlinie hier auch das Mittel der Wahl wäre.
Referenzimplementierung mit
Die Methode ASQL zeigt, wie die Aufgabe in einfach mit dem Zusatz FOR ALL ENTRIES gelöst wird. Das Ergebnis der Methode dient als Referenz für die HANA-spezifischen Implementierungen.
Verwendung von Native SQL über ADBC
Die Methode ADBC löst die Aufgabe über HANA-spezifische Native-SQL-Anweisungen, die über ADBC an die SAP-HANA-Datenbank übergeben werden. Die Tabelle mit den Schlüsselwerten wird hinter dem Zusatz exists in einer Subquery einer select-Anweisung ausgewertet. Hierfür wird eine temporäre Tabelle DEMO_ADBC_CONNECTIONS auf der Datenbank angelegt und mit der Anweisung insert mit dem Inhalt der internen Tabelle connection_tab gefüllt. Um auf das Ergebnis der select-Anweisung zugreifen zu können, muss eine Standardtabelle std_flights als lokale interne Tabelle der Methode deklariert werden, da der Rückgabewert flights eine sortierte Tabelle ist, die nicht für ADBC verwendet werden kann. Die temporäre Tabelle DEMO_ADBC_CONNECTIONS wird nach dem Auslesen von SPFLI wieder entfernt.
Aufruf einer Datenbankprozedur über ein Datenbankprozedur-Proxy
Die Methode CDBP löst die Aufgabe dadurch, dass die HANA-spezifische select-Anweisung in einer Datenbankprozedur implementiert wird, die über die Angabe eines Datenbankprozedur-Proxy in der Anweisung CALL DATABASE PROCEDURE aufgerufen wird. In einem realistischeren Beispiel wären die Datenbankprozedur DEMO_ADBC_GET_FLIGHTS und das Datenbankprozedur-Proxy DEMO_ADBC_GET_FLIGHTS_PROXY bereits vorhanden und die Implementierung der Methode wäre im Wesentlichen auf den Aufruf CALL DATABASE PROCEDURE beschränkt (vergleiche das ausführbare Beispiel zum Prozeduraufruf). In diesem Beispiel werden die Datenbankprozedur und das Datenbankprozedur-Proxy mit Mitteln von ADBC und dem zugehörigen API temporär erzeugt und wieder gelöscht. Der Eingabeparameter connections der Prozedur bezieht sich auf einen ebenfalls temporär erzeugten HANA-Tabellentyp DEMO_ADBC_CONNECTIONS_TYPE. Da HANA keinen eigenen Typ für numerischen Text unterstützt, muss für die Spalte CONNID der Typ NVARCHAR(4) verwendet werden. Deshalb muss auch die interne Tabelle connection_tab vor dem Aufruf der Prozedur erst an eine temporäre Tabelle connections zugewiesen werden, die den richtigen Zeilentyp hat. Für das Ergebnis muss keine Hilfstabelle eingeführt werden, da der Zeilentyp durch einen Typ im ABAP Dictionary beschrieben wird, für den über die Mapping-Tabelle params ein entsprechendes Mapping ausgeführt werden kann. Alternativ zur Hilfstabelle für connection_tab könnte deren Datentyp auch im ABAP Dictionary deklariert und ein solches Mapping durchgeführt werden.
Die Anweisung CALL DATABASE PROCEDURE ist auf einer SAP-HANA-Cloud-Datenbank nicht möglich.
Aufruf einer AMDP-Prozedur
Die Methode AMDP löst die Aufgabe auf die einfachst mögliche Weise, indem sie eine AMDP-Methode AMDP_METH aufruft, in der die HANA-spezifische select-Anweisung in einer AMDP-Prozedur implementiert ist. Der große Vorteil der AMDP-Methode ist der, dass sie wie jede ABAP-Methode aufgerufen werden kann und dass keinerlei Hilfstabellen eingeführt werden müssen, wie es in den vorhergehenden Beispielen der Fall war.
Fill RESBD Structure from EBP Component Structure General Material Data
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 6650 Date: 20240606 Time: 113919 sap01-206 ( 123 ms )