Ansicht
Dokumentation

ABENFROM_ADBC_TO_AMDP_ABEXA - FROM ADBC TO AMDP ABEXA

ABENFROM_ADBC_TO_AMDP_ABEXA - FROM ADBC TO AMDP ABEXA

General Material Data   General Material Data  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

SAP HANA, von ADBC zu AMDP

Das Beispiel demonstriert, wie eine Aufgabe mit HANA-spezifischen Sprachelementen ausgeführt werden kann.

Quelltext

Ausführen

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 )