ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer...

30
Leseprobe In dieser Leseprobe lernen Sie, wie Sie native HANA-Objekte aus ABAP heraus aufrufen und ABAP-Programme, die native HANA- Objekte nutzen, konsistent in Ihre Systemlandschaft transportieren können. Hermann Gahm, Thorsten Schneider, Christiaan Swanepoel, Eric Westenberger ABAP-Entwicklung für SAP HANA 653 Seiten, gebunden, 2. Auflage 2015 69,90 Euro, ISBN 978-3-8362-3661-4 www.sap-press.de/3773 Kapitel 5: »Einbindung nativer SAP-HANA- Entwicklungsobjekte in ABAP« Inhaltsverzeichnis Index Die Autoren Leseprobe weiterempfehlen Wissen aus erster Hand.

Transcript of ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer...

Page 1: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

LeseprobeIn dieser Leseprobe lernen Sie, wie Sie native HANA-Objekte aus ABAP heraus aufrufen und ABAP-Programme, die native HANA- Objekte nutzen, konsistent in Ihre Systemlandschaft transportieren können.

Hermann Gahm, Thorsten Schneider, Christiaan Swanepoel, Eric Westenberger

ABAP-Entwicklung für SAP HANA653 Seiten, gebunden, 2. Auflage 2015 69,90 Euro, ISBN 978-3-8362-3661-4

www.sap-press.de/3773

Kapitel 5: »Einbindung nativer SAP-HANA- Entwicklungsobjekte in ABAP«

Inhaltsverzeichnis

Index

Die Autoren

Leseprobe weiterempfehlen

Wissen aus erster Hand.

Page 2: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

241

Kapitel 5

ABAP-Entwickler möchten über das SAP HANA Studio ange-legte Views und Datenbankprozeduren in ABAP nutzen. Außerdem sind sie ein leistungsfähiges Transportwesen gewöhnt und erwarten einen konsistenten Transport nativer SAP-HANA-Entwicklungsobjekte über das Change and Transport System.

5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP

In Kapitel 4, »Native Datenbankentwicklung mit SAP HANA«, habenwir Ihnen gezeigt, wie Sie analytische Modelle (Views) und Daten-bankprozeduren über das SAP HANA Studio anlegen können. Nunmöchten wir Ihnen erklären, wie Sie diese nativen HANA-Objekteaus ABAP heraus aufrufen können.

Außerdem möchten wir Ihnen erläutern, wie Sie ABAP-Programme,die native HANA-Objekte nutzen, konsistent in Ihrer Systemland-schaft transportieren können.

5.1 Einbindung von analytischen Views

Sie haben in den vorangegangenen Abschnitten gelernt, wie Sie dieunterschiedlichen Arten von Views im SAP HANA Studio modellie-ren können und wie Sie mit dem Data Preview oder in MicrosoftExcel auf die Ergebnisse des Views zugreifen können. Wir habenIhnen in Abschnitt 4.4.4, »Laufzeitobjekte und SQL-Zugriff«, auchbereits gezeigt, wie Sie über SQL die generierten Column Viewsadressieren können.

Zugriff vor und mit ABAP-Release 7.4

In diesem Abschnitt gehen wir auf den Zugriff aus ABAP ein. Wirmüssen dabei zwischen ABAP-Release 7.4 und älteren Versionenunterscheiden. Vor ABAP 7.4 ist die einzige Zugriffsmöglichkeit dieüber natives SQL, was wir Ihnen in Abschnitt 5.1.1, »Zugriff übernatives SQL«, kurz vorstellen werden. Ab ABAP 7.4 können Sie die

3661.book Seite 241 Montag, 9. November 2015 9:47 09

Page 3: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP5

242

Views aus dem SAP HANA Repository in das ABAP Dictionaryimportieren und danach auf diese über Open SQL zugreifen. Daraufgehen wir in den Abschnitten 5.1.2, »Externe Views im ABAP Dicti-onary«, und 5.1.3, »Zugriffsmöglichkeiten auf externe Views«, imDetail ein. Im letzten Abschnitt geben wir Ihnen einige Empfehlun-gen, Tipps und Tricks für die SAP-HANA-View-Modellierung.

5.1.1 Zugriff über natives SQL

Bei allen vorgestellten View-Typen in SAP HANA entsteht bei derAktivierung ein Column View im Datenbankkatalog im Schema_SYS_BIC mit einem öffentlichen Synonym (Public Synonym), z. B.'test.a4h.book.chapter04::AT_FLIGHT'.

Über diesen Bezeichner können Sie aus ABAP auf diesen Viewzugreifen. Listing 5.1 zeigt den Zugriff auf den Attribute View AT_FLIGHT, den wir in Abschnitt 4.4.1, »Attribute Views«, angelegthaben über ADBC.

" Definition der ResultatstrukturTYPES: BEGIN OF ty_data,

carrid TYPE s_carr_id,connid TYPE s_conn_id,fldate TYPE s_date,route TYPE string,

END OF ty_data.

CONSTANTS: gc_view TYPE string VALUE'test.a4h.book.chapter04::AT_FLIGHT'.

DATA: lt_data TYPE TABLE OF ty_data.

" Zugriff auf Attribute ViewDATA(lv_statement) =

| SELECT carrid, connid, fldate, route |&& | FROM "{ gc_view }"|&& | WHERE mandt = '{ sy-mandt }' ORDER BY fldate|.

TRY." SQL-Verbindung und Statement vorbereitenDATA(lo_result_set) =

cl_sql_connection=>get_connection()->create_statement(

tab_name_for_trace = conv #( gc_view ))->execute_query( lv_statement ).

3661.book Seite 242 Montag, 9. November 2015 9:47 09

Einbindung von analytischen Views 5.1

243

" Resultat abholenlo_result_set->set_param_table( REF #( lt_data ) ).lo_result_set->next_package( ).lo_result_set->close( ).CATCH cx_sql_exception INTO DATA(lo_ex)." Fehlerbehandlung

&& | WHERE mandt = '{ sy-mandt }' ORDER BY fldate|.WRITE: | { lo_ex->get_text( ) } |.

ENDTRY.

LOOP AT lt_data ASSIGNING FIELD-SYMBOL(<l>).WRITE: / <l>-carrid , <l>-connid, <l>-fldate,

<l>-route .ENDLOOP.

Listing 5.1 Zugriff auf einen Attribute View über ADBC

Wie Sie sehen, handelt es sich um einen herkömmlichen nativenSQL-Zugriff. Falls es bei der Ausführung zu einem Fehler kommt,erhalten Sie im Text der SQL-Exception Hinweise auf die Ursache.Neben den SQL-Code-Fehlern, die Sie auch beim Zugriff über dieSQL-Konsole sehen, können auch Fehler bei der Abbildung in dieABAP-Zielstruktur auftreten. Wir kommen darauf in den Empfehlun-gen in Abschnitt 5.1.4 zurück.

5.1.2 Externe Views im ABAP Dictionary

In ABAP 7.4 gibt es im ABAP Dictionary einen neuen View-Typ,einen sogenannten externen View, der es erlaubt, im SAP HANARepository definierte Views in das ABAP Dictionary zu importieren.Der View wird als extern bezeichnet, weil er nicht vollständig imABAP Dictionary definiert ist, sondern als eine Art Proxy (also Stell-vertreter) dient, über den ein Zugriff aus ABAP auf den zugehörigenColumn View im Schema _SYS_BIC möglich ist.

Externen View in Eclipse anlegen

Einen externen View können Sie ausschließlich über die ABAPDevelopment Tools in Eclipse definieren. Dazu legen Sie ein neuesEntwicklungsobjekt vom Typ Dictionary View an. Abbildung 5.1zeigt den Anlagedialog anhand des Attribute Views AT_FLIGHT.

Prüfung der Importierbarkeit

Während der Anlage wird geprüft, ob sich der View in das ABAP Dic-tionary importieren lässt. Sie müssen dabei beachten, dass nicht alleHANA-Datentypen in ABAP unterstützt werden. Wenn Sie alsoberechnete Attribute definieren oder in Views auf Tabellen zugreifen,

3661.book Seite 243 Montag, 9. November 2015 9:47 09

Page 4: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP5

244

die nicht über das ABAP Dictionary angelegt wurden, können poten-ziell solche nicht unterstützen Datentypen auftauchen. In diesem Fallerhalten Sie einen Fehler beim Anlegen des externen Views und kön-nen diesen View nicht importieren. Die Liste der unterstützten Daten-typen entnehmen Tabelle 3.1 in Abschnitt 3.1.3, »Datentypen«.

Abbildung 5.1 Anlegen eines externen Views im ABAP Dictionary

View-Struktur undSynchronisierung

Nach erfolgreichem Import des SAP HANA Views in das ABAP Dicti-onary zeigt der Editor die Struktur des Views mit Abbildung derDatentypen (siehe Abbildung 5.2). Zusätzlich gibt es in dem Dialogeinen Button zum Synchronisieren (Synchronize) des Views nacheiner Änderung der Struktur des zugehörigen Views im SAP HANAStudio. Falls Sie also Attribute in die Ausgabestruktur aufnehmen,Attribute löschen oder Datentypen ändern, müssen Sie den externenView abgleichen, da es ansonsten zu Laufzeitfehlern kommt. Emp-fehlungen zur Synchronisierung von Entwicklungen in einem Ent-wicklungsteam geben wir Ihnen in Kapitel 14, »Praxistipps«.

Abbildung vonDatentypen

Wie Sie in Abschnitt 3.1.3, »Datentypen«, erfahren haben, ist dieAbbildung von SQL-Datentypen auf Dictionary-Typen nicht eindeu-tig. Vom Datentyp hängt aber die richtige Behandlung von Operatio-nen ab (z. B. die Berechnung von Differenzen bei einem Datum). Ausdiesem Grund müssen Sie als Entwickler die Zuordnung des richti-gen ABAP-Datentyps manuell vornehmen.

3661.book Seite 244 Montag, 9. November 2015 9:47 09

Einbindung von analytischen Views 5.1

245

Abbildung 5.2 Externer ABAP Dictionary View, basierend auf einem Attribute View

Tabelle 5.1 zeigt anhand des Beispiel-Views AT_FLIGHT die möglichenDatentypzuordnungen für einige Spalten.

Bei dem externen View in Abbildung 5.2 haben wir daher manuellder Spalte FLDATE den ABAP-Datentyp DATS zugeordnet. Dies magauf den ersten Blick merkwürdig erscheinen, da diese Information jain der zugrunde liegenden Dictionary-Tabelle bereits vorliegt, dieSpalten von Column Views in SAP HANA haben jedoch keine für dasABAP Dictionary ersichtliche Referenz auf Spalten existierenderTabellen. Zum Beispiel könnte die Spalte FLDATE auch ein berechne-tes Attribut sein.

VoraussetzungenDie Definition eines externen Views, der auf einem Analytic Viewoder Calculation View basiert, funktioniert wie auf der Basis eines

Spalte SQL-Datentyp Mögliche Dictionary-Typen

CARRID NVARCHAR(3) CHAR(3), NUMC(3), SSTR, CLNT, UNIT, CUKY

FLDATE NVARCHAR(8) CHAR(8), NUMC(8), SSTR, DATS

CARRNAME NVARCHAR(20) CHAR(20), NUMC(20), SSTR

Tabelle 5.1 Beispiel für mögliche Typzuordnungen

3661.book Seite 245 Montag, 9. November 2015 9:47 09

Page 5: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP5

246

Attribute Views. Das ABAP Dictionary verfügt bei einem externenView aktuell über kein Wissen darüber, um welchen speziellenHANA-View-Typ es sich handelt. Voraussetzung für die Verwendungexterner Views ist lediglich, dass der View im SAP HANA Repositorydefiniert ist. Column Views, die lediglich im Datenbankkatalog vor-handen sind (z. B. durch eine Generierung), können Sie nicht in dasABAP Dictionary importieren.

Auf den Transport von externen Views (und anderen HANA-spezifi-schen Entwicklungen) gehen wir in Abschnitt 5.3, »Transport nativerEntwicklungsobjekte«, ein.

5.1.3 Zugriffsmöglichkeiten auf externe Views

Vorteile Der wesentliche Vorteil externer Views besteht darin, dass einZugriff auf SAP HANA Views auch über Open SQL möglich ist. Siekönnen daher insbesondere von folgenden Qualitäten in Open SQLprofitieren:

� Syntaxprüfung durch den ABAP Compiler und Vorschlagswertebei der Entwicklung (Code Completion)

� automatische Mandantenbehandlung

� Iterieren über eine Ergebnismenge innerhalb einer SELECT-Schleife

� Verwendung des Ausdrucks INTO CORRESPONDING FIELDS zur pas-senden Selektion in eine Zielstruktur unabhängig von der Reihen-folge in der Projektionsliste

� Verwendung von IN bei der WHERE-Bedingung zur Übertragungvon Selektionsoptionen

Zugriff perOpen SQL

Listing 5.2 setzt den Zugriff auf den externen View aus Abbildung5.2 um und entspricht funktional der ADBC-Zugriffsvariante aus Lis-ting 5.1. Wie Sie sehen, hat sich der für den Zugriff notwendigeABAP-Code deutlich reduziert und entspricht einem Zugriff aufeinen Standard-Dictionary-View.

REPORT ZR_A4H_CHAPTER4_VIEW_OPEN.

DATA: wa TYPE zev_a4h_flights." Daten von externem View lesenSELECT carrid connid fldate route

FROM zev_a4h_flights

3661.book Seite 246 Montag, 9. November 2015 9:47 09

Einbindung von analytischen Views 5.1

247

INTO CORRESPONDING FIELDS OF wa.WRITE: / wa-carrid, wa-connid, wa-fldate, wa-route.

ENDSELECT.

Listing 5.2 Zugriff auf externen View über Open SQL

Mögliche Laufzeitfehler beim Zugriff auf externe Views

Auch bei dem Open-SQL-basierten Zugriff auf einen externen View wirdletztlich eine SQL-Abfrage auf den zugehörigen Column View in SAPHANA ausgeführt. Dabei gelten die gleichen Regeln und Restriktionenwie bei einem Zugriff mit nativem SQL.

Wie wir in Abschnitt 4.4.4, »Laufzeitobjekte und SQL-Zugriff«, erklärthaben, müssen Sie etwa beim Zugriff auf Analytic Views über SQL einigeEinschränkungen beachten. Eine nicht unterstützte Anfrage über OpenSQL führt zu einem Laufzeitfehler. Dies erfordert von Ihnen als ABAP-Ent-wickler eine gewisse Vorsicht, da beim normalen Open-SQL-basiertenZugriff auf ABAP-Tabellen solche Fehler eher selten vorkommen. Auf dieWerkzeuge zur Fehleranalyse und die möglichen Laufzeitfehler bei einemSQL-Zugriff kommen wir in Abschnitt 7.2, »Fehleranalyse«, zurück.

Nativer Zugriff über ADBC

Neben dem Open-SQL-basierten Zugriff können Sie externe Viewsauch über natives SQL ansprechen. Diese auf den ersten Blick etwasmerkwürdig erscheinende Variante ist dennoch sinnvoll, falls Sieetwa über eine SQL-Abfrage auf einen SAP HANA View zugreifenwollen, die über Open SQL nicht möglich ist. Ein Beispiel ist eineFuzzy-Suche in einem Attribute View (siehe Abschnitt 10.4, »Einsatzder Textsuche in ABAP«). Im Vergleich zu einem Zugriff über nativesSQL auf den generierten Column View im Schema _SYS_BIC hat derexterne View den Vorteil, dass es dabei im ABAP Dictionary bereitseine geeignete Zielstruktur für eine Selektion über ADBC gibt.

5.1.4 Empfehlungen

Zum Abschluss dieses Abschnitts wollen wir Ihnen einige Empfehlun-gen für die Verwendung von SAP HANA Views geben. Wir beschrän-ken uns dabei auf funktionale Empfehlungen. Für Werkzeuge undEmpfehlungen zur Performanceanalyse verweisen wir auf Kapitel 7,»Laufzeit- und Fehleranalyse auf SAP HANA«, und Kapitel 14, »Pra-xistipps«, wo wir auch Designaspekte wie Namenskonventionen auf-greifen werden.

Verwendung der View-Typen

Falls der Funktionsumfang von Standard-ABAP-Dictionary-Views fürSie ausreicht und Sie diese in der Vergangenheit verwendet haben,

3661.book Seite 247 Montag, 9. November 2015 9:47 09

Page 6: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP5

248

gibt es keine Notwendigkeit, Ihre Anwendung auf einen nativen SAPHANA View umzubauen. Im nächsten Kapitel werden Sie über CDS-Views eine Möglichkeit kennenlernen, wie Sie auch direkt in ABAPkomplexe Sichten mit berechneten Feldern definieren können.

Für spezielle analytische Szenarien bieten allerdings die modelliertenSAP HANA Views einen einfachen Zugang. Welcher der drei vorge-stellten View-Typen in SAP HANA für Ihr Szenario der richtige ist,können Sie über den folgenden Fragenkatalog bestimmen:

� Geht es um eine Sicht auf Stammdaten, die eventuell durchberechnete Attribute erweitert werden? Hier sollte der AttributeView der Startpunkt sein.

� Handelt es sich um eine Datenanalyse von Bewegungsdaten, basie-rend auf einem Sternschema? In diesem Fall sollte der AnalyticView der erste Anlaufpunkt sein, wobei Sie die Dimensionen alsAttribute Views realisieren.

� Müssen Sie Ergebnisse aus verschiedenen Tabellen und HANA-Views zusammenbringen oder adaptieren? In diesem Fall bietetsich der modellierte Calculation View an. Falls die modellierteVariante für einen Teil Ihres Szenarios nicht ausreicht, können Siefür diesen Teil auf eine SQLScript-basierte Implementierung aus-weichen.

Mandanten-behandlung

Bei der Modellierung von Views sollten Sie auf die richtige Behand-lung des Mandanten achten. Wir empfehlen Ihnen auch, stets dasMandantenfeld als erstes Feld des Views aufzunehmen und sicherzu-stellen, dass Sie den Mandanten in die Join-Modellierung aufgenom-men haben. In den meisten Fällen sollte der Konfigurationswert ses-

sion client für Views, die auf ABAP-Tabellen aus dem gleichenSystem basieren, die richtige Einstellung sein. Falls Tabellen durcheine Replikation aus einem anderen System entstanden sind, kannauch ein fester Wert für den Mandanten sinnvoll sein. Nur in weni-gen Fällen macht hingegen ein Zugriff über Mandantengrenzen hin-weg Sinn.

Schema-behandlung

Sie sollten für Analytic und Calculation Views stets das richtige Stan-dardschema auswählen. In diesem Schema wird insbesondere dasfür Konvertierungen relevante Customizing gesucht, wenn keinespezielle Einstellung am Attribut vorgenommen wurde. Noch wich-tiger ist die Einstellung des Standardschemas bei der implementier-ten Variante von Calculation Views.

3661.book Seite 248 Montag, 9. November 2015 9:47 09

Einbettung von nativen Prozeduren in ABAP 5.2

249

Definition von externen Views

Sie sollten externe Views nur für solche SAP HANA Views definie-ren, über die Sie aus ABAP zugreifen wollen, da Sie diese bei Ände-rungen manuell synchronisieren müssen. Ebenso ist es nicht emp-fehlenswert, mehrere externe Views für einen SAP HANA View zudefinieren.

FehleranalyseFalls Sie bei der Aktivierung von SAP HANA Views Fehlermeldungenerhalten, finden Sie in der Regel im Fehlertext Hinweise auf die Ursa-che. Die richtige Interpretation der Fehlermeldung erfordert jedochin manchen Fällen ein wenig Erfahrung. Aus diesem Grund ist einegewisse Heuristik bei der Fehleranalyse sinnvoll. Zunächst sollten Siesicherstellen, dass Sie bei Attribute Views mindestens ein Feld alsSchlüsselfeld ausgezeichnet sowie bei Analytic Views mindestenseine Kennzahl definiert haben. Falls es berechnete Attribute in IhremView gibt, sollten Sie prüfen, ob Sie eventuell bei dem zugehörigenAusdruck einen Fehler gemacht haben.

Falls Sie bei der Fehleranalyse einmal nicht weiterkommen, könnenSie das zugehörige Attribut (z. B. in einer Kopie des Views) probe-weise einmal entfernen. Falls Sie beim Aufruf des Data Previews eineFehlermeldung oder unerwartete Daten bekommen, deutet das invielen Fällen auf einen Fehler bei der Join-Modellierung hin. Im Fallvon Währungskonvertierungen kann es durch einen fehlenden Man-dantenkontext zu Fehlern kommen.

Beim Zugriff auf einen SAP HANA View aus ABAP über natives SQLsollten Sie den Namen des Views mitgeben (über den Parameter tab_name_for_trace wie in Listing 5.1 oder über die Methode SET_TAB-LE_NAME_FOR_TRACE), der in Support-Szenarien eine einfachere Fehler-analyse erlaubt.

5.2 Einbettung von nativen Prozeduren in ABAP

In Kapitel 4, »Native Datenbankentwicklung mit SAP HANA«, habenSie gelernt, was SQLScript ist und wie Sie es zur Implementierungvon Datenbankprozeduren nutzen können. Nun möchten wir Ihnenerklären, wie Sie Datenbankprozeduren aus ABAP aufrufen. Dabeiunterscheiden wir zwei Möglichkeiten:

3661.book Seite 249 Montag, 9. November 2015 9:47 09

Page 7: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP5

250

� Zugriff über natives SQL und ABAP Database Connectivity (ADBC,siehe auch Kapitel 3, »Datenbankprogrammierung mit dem SAPNetWeaver AS ABAP«)

� Nutzung von sogenannten Database Procedure Proxies

Voraussetzungen Der Aufruf von Datenbankprozeduren in SAP HANA über ADBC istab dem ABAP-Release 7.0 und SAP-Kernel 7.20 möglich. Die Data-base Procedure Proxies stehen ab dem Release 7.4 zur Verfügung. Siesetzen voraus, dass SAP HANA als Primärdatenbank genutzt wird.Außerdem unterstützen Database Procedure Proxies ausschließlichdas – eigentlich veraltete – XML-Dateiformat (.procedure).

5.2.1 Zugriff über natives SQL

Wie in Abschnitt 4.3, »Datenbankprozeduren«, beschrieben, erzeugtdas System bei der Aktivierung einer Datenbankprozedur verschie-dene Laufzeitobjekte im Datenbankkatalog (z. B. im Schema _SYS_BIC) sowie ein öffentliches Synonym. Darüber können Sie über nati-ves SQL aus ABAP auf die Datenbankprozedur zugreifen.

Nachteile vonnativem SQL

Die Verwendung von nativem SQL zum Aufruf einer Datenbankpro-zedur ist allerdings verhältnismäßig umständlich und fehleranfällig.Tabellarische Eingabe- und Ausgabeparameter können Sie, wie Sieim weiteren Verlauf dieses Abschnitts sehen werden, nur über tem-poräre Tabellen mit der Datenbankprozedur austauschen. Außerdemerkennt der SAP NetWeaver AS ABAP Syntaxfehler in nativen SQL-Anweisungen erst zur Laufzeit. Für mehr Details verweisen wir Sieauf die Erläuterungen in Kapitel 3, »Datenbankprogrammierung mitdem SAP NetWeaver AS ABAP«.

Beispiele Wir beschreiben Ihnen die Verwendung von nativem SQL zumZugriff auf Datenbankprozeduren anhand mehrerer Beispiele imDetail. Zunächst betrachten wir dazu eine Datenbankprozedur, dieauf Basis der Kurzbezeichnung den Namen einer Fluggesellschaftermittelt. Für die anschließend folgenden Beispiele greifen wir aufbereits bekannte Datenbankprozeduren aus Kapitel 4, »Native Da-tenbankentwicklung mit SAP HANA«, zurück.

Beispiel 1: Aufruf einer Datenbankprozedur

Für den Aufruf einer Datenbankprozedur über ADBC stellt die KlasseCL_SQL_STATEMENT die Methode EXECUTE_PROCEDURE zur Verfügung.

3661.book Seite 250 Montag, 9. November 2015 9:47 09

Einbettung von nativen Prozeduren in ABAP 5.2

251

Diese können Sie nutzen, solange eine Datenbankprozedur keinetabellarischen Eingabe-/Ausgabeparameter hat.

Beispiel für AufrufDas Programm ZR_A4H_CHAPTER5_CARRNAME_ADBC zeigt die Verwen-dung der Methode EXECUTE_PROCEDURE beispielhaft (siehe Listing5.3). Es ruft die Datenbankprozedur DETERMINE_CARRNAME auf. Diesehat folgende Eingabe- und Ausgabeparameter:

� IV_MANDT (Mandant)

� IV_CARRID (Kurzbezeichnung einer Fluggesellschaft)

� EV_CARRNAME (Name einer Fluggesellschaft)

PARAMETERS: p_carrid TYPE s_carr_id.

DATA: lo_sql_statement TYPE REF TO cl_sql_statement,lv_carrname TYPE s_carrname.

TRY." create statementlo_sql_statement =cl_sql_connection=>get_connection()->create_statement( ).

" bind parameterslo_sql_statement->set_param( data_ref =REF #( sy-mandt )inout = cl_sql_statement=>c_param_in ).

lo_sql_statement->set_param( data_ref =REF #( p_carrid )inout = cl_sql_statement=>c_param_in ).

lo_sql_statement->set_param( data_ref =REF #( lv_carrname )inout = cl_sql_statement=>c_param_out ).

" call procedurelo_sql_statement->execute_procedure(

'"test.a4h.book.chapter04::DETERMINE_CARRNAME"' ).

CATCH cx_sql_exception INTO DATA(lo_ex)." error handlingWRITE: | { lo_ex->get_text( ) } |.

ENDTRY.

WRITE: / lv_carrname.

Listing 5.3 Aufruf einer Datenbankprozedur über natives SQL

3661.book Seite 251 Montag, 9. November 2015 9:47 09

Page 8: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP5

252

Erläuterung desProgramms

Das Programm erzeugt zunächst eine Instanz der Klasse CL_SQL_STATE-MENT. Danach belegt es die Eingabe- und Ausgabeparameter derDatenbankprozedur durch Aufruf der Methode SET_PARAM mit denAktualparametern. Anschließend ruft es die Methode EXECUTE_PRO-CEDURE auf.

Beispiel 2: Tabellarische Ausgabeparameter

Alternativ können Sie eine Datenbankprozedur auch über dieMethode EXECUTE_QUERY (zusammen mit dem Zusatz WITH OVERVIEW)ausführen. Dies funktioniert auch bei Datenbankprozeduren mittabellarischen Eingabe- und Ausgabeparametern.

Beispiel fürAusgabe-

parameter

Das Programm ZR_A4H_CHAPTER5_TOP_ADBC in Listing 5.4 zeigt dieVerwendung der Methode EXECUTE_QUERY beispielhaft, indem es dieDatenbankprozedur DETERMINE_TOP_CONNECTIONS aufruft. Dieseermittelt die wichtigsten Verbindungen einer Fluggesellschaft undhat folgende Eingabe- und Ausgabeparameter:

� IV_MANDT (Mandant)

� IV_CARRID (Kurzbezeichnung einer Fluggesellschaft)

� IV_ALGORITHM (steuert, wie die wichtigsten Verbindungen ermit-telt werden sollen)

� ET_CONNECTIONS (Tabellenparameter; enthält die KurzbezeichnungCARRID der Fluggesellschaft sowie den Verbindungscode CONNID)

PARAMETERS: p_carrid TYPE s_carr_id.

" Definition der ResultatstrukturTYPES: BEGIN OF ty_connections,

carrid TYPE s_carr_id,connid TYPE s_conn_id,

END OF ty_connections.

DATA: lt_connections TYPE TABLE OF ty_connections,lv_statement TYPE string,lo_result_set TYPE REF TO cl_sql_result_set,lo_connections TYPE REF TO data.

TRY." lokale temporäre Tabelle löschenlv_statement = | DROP TABLE #ET_CONNECTIONS |.cl_sql_connection=>get_connection(

)->create_statement( )->execute_ddl( lv_statement ).

3661.book Seite 252 Montag, 9. November 2015 9:47 09

Einbettung von nativen Prozeduren in ABAP 5.2

253

CATCH cx_sql_exception." unter Umständen existiert die lokale temporäre" Tabelle nicht, diesen Fehler ignorieren wir

ENDTRY.

TRY." lokale temporäre Tabelle anlegenlv_statement = | CREATE LOCAL TEMPORARY ROW|&& | TABLE #ET_CONNECTIONS LIKE "_SYS_BIC".|&& |"test.a4h.book.chapter04::GlobalTypes.t|&& |t_connections" |.cl_sql_connection=>get_connection()->create_statement( )->execute_ddl( lv_statement ).

" Datenbankprozedur aufrufenlv_statement = | CALL "test.a4h.bo|&& |ok.chapter04::DETERMINE_TOP_CONNECTIONS|&& |"( '{ sy-mandt }' , '{ p_carrid }', 'P'|&& |, #ET_CONNECTIONS ) WITH OVERVIEW |.lo_result_set = cl_sql_connection=>get_connection(

)->create_statement( )->execute_query(lv_statement ).

lo_result_set->close( ).

" lokale temporäre Tabelle auslesenlv_statement = | SELECT * FROM #ET_CONNECTIONS |.lo_result_set = cl_sql_connection=>get_connection(

)->create_statement( )->execute_query(lv_statement ).

" Resultat auslesenGET REFERENCE OF lt_connections INTO

lo_connections.lo_result_set->set_param_table( lo_connections ).lo_result_set->next_package( ).lo_result_set->close( ).

CATCH cx_sql_exception INTO DATA(lo_ex).

" FehlerbehandlungWRITE: | { lo_ex->get_text( ) } |.

ENDTRY.

LOOP AT lt_connections ASSIGNINGFIELD-SYMBOL(<ls_connections>).WRITE: / <ls_connections>-carrid ,

<ls_connections>-connid.ENDLOOP.

Listing 5.4 Behandlung von tabellarischen Ausgabeparametern

3661.book Seite 253 Montag, 9. November 2015 9:47 09

Page 9: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP5

254

TemporäreTabellen

Wir möchten Ihnen anhand des Programms vor allem die Übergabetabellarischer Eingabe- und Ausgabeparameter an eine Datenbank-prozedur erläutern: Das Programm ZR_A4H_CHAPTER5_TOP_ADBC ver-wendet zur Übergabe des Tabellenparameters ET_CONNECTIONS dietemporäre Tabelle #ET_CONNECTIONS.

Temporäre Tabellen

Viele Datenbanken, so auch die HANA-Datenbank, bieten Ihnen dieMöglichkeit, Zwischen- und Endergebnisse von Kalkulationen vorüberge-hend in sogenannten temporären Tabellen zu speichern. Temporäre Tabel-len haben, verglichen mit herkömmlichen Tabellen, verschiedene Vorteilefür diesen Anwendungsfall:

� Tabellendefinition und Tabelleninhalt werden von der Datenbankautomatisch gelöscht, wenn sie nicht mehr benötigt werden.

� Die Datenbank isoliert die Daten paralleler Sitzungen (Sessions) auto-matisch voneinander. Sperren auf temporären Tabellen sind weder not-wendig noch möglich.

� Für temporäre Tabellen schreibt die Datenbank kein Transaktionslog.

� Die Verwendung temporärer Tabellen ist in der Regel performanter alsdie Verwendung herkömmlicher Tabellen.

SAP HANA unterstützt globale und lokale temporäre Tabellen:

� Die Tabellendefinition globaler temporärer Tabellen ist sitzungsüber-greifend nutzbar. Der Tabelleninhalt ist nur für die aktuelle Sessionsichtbar, er wird zum Sitzungsende von der Datenbank automatischgelöscht.

� Bei lokalen temporären Tabellen sind sowohl Tabellendefinition als auchTabelleninhalt nur für die aktuelle Session sichtbar, d. h., beide werdenam Ende der Sitzung von der Datenbank automatisch gelöscht.

Nutzung überden AS ABAP

Hinsichtlich der Nutzung temporärer Tabellen für die Datenüber-gabe zwischen dem SAP NetWeaver AS ABAP und einer Datenbank-prozedur sollten Sie folgende Dinge beachten:

� Wenn Sie mit globalen temporären Tabellen arbeiten, können Siediese (da sie sitzungsübergreifend nutzbar sind) einmalig anlegen,müssen allerdings organisatorisch sicherstellen, dass der Tabellen-name nicht für verschiedene Anwendungsfälle (die eine unter-schiedliche Tabellenstruktur voraussetzen) verwendet wird.

� Die Anlage globaler temporärer Tabellen kann bereits zur Design-time erfolgen. Dann müssen Sie dafür sorgen, dass die Tabellennach einem Transport auch in Test- und Produktivsystemen zurVerfügung stehen.

3661.book Seite 254 Montag, 9. November 2015 9:47 09

Einbettung von nativen Prozeduren in ABAP 5.2

255

� Falls Sie sich zur Anlage globaler temporärer Tabellen zur Laufzeit(Runtime) entscheiden, müssen Sie vor jedem Aufruf einer Daten-bankprozedur sicherstellen, dass die Tabellenstruktur zur Schnitt-stelle der aufgerufenen Datenbankprozedur passt (denn diesekönnte sich ja zwischenzeitlich geändert haben).

� Lokale temporäre Tabellen müssen Sie zumindest einmalig proSession anlegen (beachten Sie dazu auch die nachfolgenden Erläu-terungen zum Verhältnis von ABAP-Workprozess und Datenbank-verbindung). Daher können Sie lokale temporäre Tabellen nur zurRun Time eines ABAP-Programms anlegen.

� Da jeder ABAP-Workprozess über eine stehende Verbindung mitder Datenbank verbunden ist, stellen mehrere nacheinanderdurch den gleichen Workprozess ausgeführte ABAP-Programmeaus Datenbanksicht eine Session dar. Nach Beendigung einesABAP-Programms werden daher weder Definition noch Inhaltlokaler (und globaler) temporärer Tabellen automatisch gelöscht.

� Sowohl für globale als auch für lokale temporäre Tabellen solltenSie den Inhalt (der aktuellen Sitzung) vor Aufruf der Datenbank-prozedur löschen.

Erläuterung des Programms

Das Programm ZR_A4H_CHAPTER5_TOP_ADBC in Listing 5.4 arbeitet miteiner lokalen temporären Tabelle. Es löscht zunächst über DROP TABLE#ET_CONNECTIONS die eventuell bereits vorhandene lokale temporäreTabelle #ET_CONNECTIONS. Anschließend legt es über die AnweisungCREATE LOCAL TEMPORARY ROW TABLE eine (neue) lokale temporäreTabelle mit dem Namen #ET_CONNECTIONS an. Dabei bezieht sich dasProgramm auf den Tabellentyp, der beim Aktivieren der Datenbank-prozedur vom System automatisch für den Ausgabeparameter ET_CONNECTIONS angelegt wurde. Durch dieses Vorgehen stellt das Pro-gramm vor dem Aufruf der Datenbankprozedur sicher, dass die tem-poräre Tabelle leer ist und zur aktuellen Struktur des Ausgabepara-meters ET_CONNECTIONS passt.

Jetzt ruft das Programm die Datenbankprozedur über die MethodeEXECUTE_QUERY auf. Dabei übergibt es SY-MANDT, P_CARRID und 'P' andie Eingabeparameter und die temporäre Tabelle #ET_CONNECTIONSan den Ausgabeparameter der Datenbankprozedur.

Nach dem Aufruf der Datenbankprozedur liest das Programm denInhalt der temporären Tabelle #ET_CONNECTIONS aus. Der Inhalt ent-

3661.book Seite 255 Montag, 9. November 2015 9:47 09

Page 10: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP5

256

spricht den wichtigsten Verbindungen der übergebenen Fluggesell-schaft.

Beispiel 3: Tabellarische Eingabeparameter

Wenn eine Datenbankprozedur über tabellarische Eingabeparameterverfügt, können Sie analog zu tabellarischen Ausgabeparametern vor-gehen. Das Programm ZR_A4H_CHAPTER5_KPIS_ADBC in Listing 5.5zeigt, wie Sie die Datenbankprozedur GET_KPIS_FOR_CONNECTIONS füreine Menge von Flugverbindungen aufrufen können. Die Datenbank-prozedur ermittelt pro übergebener Verbindung einige Kennzahlen.

Beispiel fürEingabeparameter

Sie hat folgende Eingabe- und Ausgabeparameter:

� IV_MANDT (Mandant)

� IT_CONNECTIONS (Tabellenparameter; enthält die KurzbezeichnungCARRID der Fluggesellschaft sowie den Verbindungscode CONNID)

� ET_KPIS (Tabellenparameter; enthält die Kennzahlen der Verbin-dungen)

...LOOP AT lt_connections INTO ls_connections.

lv_statement = | INSERT INTO #IT_CONNECTIONS VALUES( '{ ls_connections-carrid }', '{ ls_connections-connid }' )|.

cl_sql_connection=>get_connection()->create_statement(

)->execute_update( lv_statement ).ENDLOOP." Datenbankprozedur aufrufenlv_statement = | CALL "test.a4h.bo|&& |ok.chapter04::GET_KPIS_FOR_CONNECTIONS|&& |"( '{ sy-mandt }' , #IT_CONNECTIONS, #ET_KPIS )

WITH OVERVIEW |.lo_result_set = cl_sql_connection=>get_connection()->create_statement( )->execute_query( lv_statement ).lo_result_set->close( )....

Listing 5.5 Behandlung von tabellarischen Eingabeparametern

Erläuterung desProgramms

Vor dem Aufruf der Datenbankprozedur füllt das Programm dielokale temporäre Tabelle #IT_CONNECTIONS mit den gewünschtenFlugverbindungen. Der Aufruf der Datenbankprozedur erfolgt überEXECUTE_QUERY.

3661.book Seite 256 Montag, 9. November 2015 9:47 09

Einbettung von nativen Prozeduren in ABAP 5.2

257

5.2.2 Definition von Database Procedure Proxies

Ab dem ABAP-Release 7.4 können Sie einen sogenannten DatabaseProcedure Proxy definieren, um aus ABAP nativ auf Datenbankproze-duren zuzugreifen, die im SAP HANA Repository der Primärdaten-bank definiert worden sind. Beachten Sie, dass nur das XML-Dateiformat (.procedure) unterstützt wird (siehe Abschnitt 4.3,»Datenbankprozeduren«).

Bei einem Database Procedure Proxy handelt es sich (wie der Namebereits vermuten lässt) um ein Proxy-Objekt. Dieses repräsentierteine Datenbankprozedur im ABAP Dictionary.

Mehrere Proxy-Objekte für eine Datenbankprozedur

Technisch ist es möglich, für eine Datenbankprozedur mehrere DatabaseProcedure Proxies anzulegen. Wir empfehlen dies jedoch nicht. Legen Siezu einer Datenbankprozedur immer maximal ein Proxy-Objekt im ABAPDictionary an.

Interface des Proxy-Objekts

Für jeden Database Procedure Proxy legt das System automatischauch ein Interface an. Über dieses Interface können Sie Parameter-namen und Datentypen, die beim Aufruf der Datenbankprozedurmit ABAP verwendet werden, beeinflussen:

� Die Namen von Eingabe- und Ausgabeparametern können Sie inSAP HANA ändern, sobald diese 30 Zeichen überschreiten. In die-sem Fall verkürzt das System die Parameternamen zunächst. Siekönnen die verkürzten Namen bei Bedarf überschreiben.

� Komponentennamen von Tabellenparametern können Sie immerüberschreiben.

� Jedem Parameter können Sie den zu verwendenden Datentypzuordnen. Dies ist wichtig, da die Abbildung von SQL-Datentypenauf ABAP-Datentypen und Dictionary-Datentypen nicht eindeutigist. Daher kann das System bei der Anlage eines Proxy-Objektsnicht (immer) den richtigen ABAP-Datentyp bzw. Dictionary-Typableiten.

Anlage eines Database Procedure Proxys

Wir werden Ihnen nun erläutern, wie Sie für die DatenbankprozedurDETERMINE_TOP_CONNECTIONS_XML ein Proxy-Objekt anlegen. Dazumüssen Sie sich in den ABAP Development Tools in Eclipse befinden.Dort wählen Sie den Menüpunkt File � New � Other… aus. Anschlie-ßend selektieren Sie den Eintrag Database Procedure Proxy und kli-

3661.book Seite 257 Montag, 9. November 2015 9:47 09

Page 11: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP5

258

cken auf Next. Abbildung 5.3 zeigt das Fenster, das daraufhinerscheint.

Abbildung 5.3 Anlegen eines Database Procedure Proxys

Parameter fürdie Anlage

In diesem Fenster erfassen Sie für den Database Procedure Proxy fol-gende Daten:

� Name: Über den Namen des Database Procedure Proxys könnenSie die Datenbankprozedur (später) nativ in ABAP aufrufen.

� Description: Bei der Beschreibung handelt es sich um einen erläu-ternden Text.

� SAP HANA Procedure: Name der (bereits existierenden) Daten-bankprozedur im SAP HANA Repository

� Parameter Types Interface: Name des Interface, das beim Anlegendes Proxy-Objekts automatisch angelegt wird (siehe Listing 5.6)

Nach nochmaligem Klick auf Next und anschließendem Klicken desButtons Finish legt das System den Database Procedure Proxy unddas entsprechende Interface an.

Im Project Explorer finden Sie den Database Procedure Proxy imentsprechenden Paket unterhalb des Knotens Dictionary � DB Pro-

cedure Proxies. Das Interface liegt (ebenso wie andere Interfaces)im entsprechenden Paket unterhalb des Knotens Source Library.

3661.book Seite 258 Montag, 9. November 2015 9:47 09

Einbettung von nativen Prozeduren in ABAP 5.2

259

Anpassung des Interface

Abbildung 5.4 zeigt den Database Procedure Proxy für die Daten-bankprozedur DETERMINE_TOP_CONNECTIONS_XML. Wenn Sie Parame-ternamen oder Datentypen anpassen möchten, können Sie dies inden Spalten ABAP Name, ABAP Type und DDIC Type Override tun.Zum Beispiel können Sie die Spalte CONNID des tabellarischen Ausga-beparameters ET_CONNECTIONS auf das Datenelement S_CONN_ID (unddamit auf den ABAP-Datentyp N length 4) abbilden.

Abbildung 5.4 Database Procedure Proxy und Interface

Listing 5.6 zeigt das automatisch angelegte Interface nach Anpassungder Datentypen.

interface ZIF_DETERMINE_TOP_CONNECTIONS public.types: iv_mandt type mandt.types: iv_carrid type s_carr_id.types: iv_algorithm type c length 1.types: begin of et_connections,

carrid type s_carr_id,connid type s_conn_id,

end of et_connections.endinterface.

Listing 5.6 Interface des Proxy-Objekts

5.2.3 Aufruf von Database Procedure Proxies

Nach der Aktivierung des Database Procedure Proxys können Sie dasProxy-Objekt zum Aufruf der Datenbankprozedur verwenden. DasProgramm ZR_A4H_CHAPTER5_TOP_PROXY in Listing 5.7 zeigt die Ver-wendung beispielhaft.

3661.book Seite 259 Montag, 9. November 2015 9:47 09

Page 12: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP5

260

PARAMETERS: p_carrid TYPE s_carr_id.

DATA: lt_connections TYPE TABLE OFzif_determine_top_connections=>et_connections.

TRY.CALL DATABASE PROCEDURE

zdp_determine_top_connectionsEXPORTING

iv_mandt = sy-mandtiv_carrid = p_carridiv_algorithm = 'P'

IMPORTINGet_connections = lt_connections.

CATCH cx_sy_db_procedure_sql_errorcx_sy_db_procedure_call INTO DATA(lo_ex)." Fehlerbehandlung

iv_algorithm = 'P'WRITE: | { lo_ex->get_text( ) } |.

ENDTRY.

LOOP AT lt_connections ASSIGNINGFIELD-SYMBOL(<ls_connections>).WRITE: / <ls_connections>-carrid ,

<ls_connections>-connid.ENDLOOP.

Listing 5.7 Aufruf eines Database Procedure Proxys

Erläuterung desProgramms

Das Programm verwendet die Anweisung CALL DATABASE PROCEDURE,um über den Proxy ZDP_DETERMINE_TOP_CONNECTIONS die Datenbank-prozedur DETERMINE_TOP_CONNECTIONS_XML aufzurufen. Bei der Defi-nition der internen Tabelle LT_CONNECTIONS bezieht sich das Pro-gramm auf das Interface ZIF_DETERMINE_TOP_CONNECTIONS. BeimAufruf der Datenbankprozedur eventuell auftretende Probleme(Ausnahmen vom Typ CX_SY_DB_PROCEDURE_SQL_ERROR sowie CX_SY_DB_PROCEDURE_CALL) fängt das Programm ab.

5.2.4 Anpassung von Database Procedure Proxies

Wenn Sie eine Datenbankprozedur – genauer gesagt die Schnittstelleeiner Datenbankprozedur – im SAP HANA Studio ändern, nachdemSie einen Database Procedure Proxy angelegt haben, müssen Sie dasProxy-Objekt mit dem SAP HANA Repository synchronisieren. Dazu

3661.book Seite 260 Montag, 9. November 2015 9:47 09

Transport nativer Entwicklungsobjekte 5.3

261

steht Ihnen der Button Synchronize (siehe Abbildung 5.4) zur Ver-fügung.

Während des Synchronisationsvorgangs können Sie entscheiden, obSie am Proxy-Objekt vorgenommene Anpassungen (Komponenten-namen oder Datentypen) beibehalten oder überschreiben wollen.

In Kapitel 6, »Erweiterte Datenbankprogrammierung mit ABAP 7.4«,lernen Sie ABAP-Datenbankprozeduren (ABAP Managed DatabaseProcedures) kennen. Diese haben – bei der Verwendung im Rahmenvon ABAP – im Vergleich zur Verwendung von Prozeduren, die Sieüber das SAP HANA Studio angelegt haben, mehrere Vorteile. Daherempfehlen wir grundsätzlich die Nutzung von ABAP-Datenbankpro-zeduren, wenn Sie SQLScript innerhalb von ABAP nutzen möchten.

5.3 Transport nativer Entwicklungsobjekte

In diesem Abschnitt möchten wir Ihnen erklären, wie Sie ABAP-Pro-gramme, die native HANA-Objekte nutzen, konsistent in Ihrer Sys-temlandschaft transportieren können. Wir beschäftigen uns dazu mitdem sogenannten HANA-Transportcontainer. Auf das erweiterteChange and Transport System (CTS+), das Ihnen ebenfalls Möglichkei-ten bietet, gehen wir nicht ein.

Wir nehmen für unsere Ausführungen an, dass Sie sich mit der Ent-wicklungsorganisation und dem Transport im SAP NetWeaver ASABAP bereits auskennen.

5.3.1 Exkurs: Entwicklungsorganisation und Transport in SAP HANA

Damit Sie die Funktionsweise des HANA-Transportcontainers (bes-ser) verstehen, geben wir Ihnen in diesem Abschnitt einige Hinter-grundinformationen zur Entwicklungsorganisation und zum Trans-port in SAP HANA.

Entwicklungsorganisation

Die Entwicklungsorganisation in SAP HANA ähnelt in vielerlei Hin-sicht der im SAP NetWeaver AS ABAP. Sie unterscheidet sich aberauch in einigen wesentlichen Aspekten von ihr. Wie in Kapitel 2,

3661.book Seite 261 Montag, 9. November 2015 9:47 09

Page 13: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP5

262

»Einführung in die Entwicklungsumgebung«, beschrieben, ist dasSAP HANA Repository die zentrale Ablage von Entwicklungsobjek-ten der HANA-Datenbank.

Namensraum fürKunden

Innerhalb des Repositorys liefert SAP Content unterhalb des Wurzel-pakets sap aus. Unterhalb dieses Pakets dürfen daher keine Kunde-nentwicklungen angelegt werden, da diese andernfalls versehentlichüberschrieben werden könnten. Bauen Sie stattdessen eine parallelePakethierarchie für Kundenentwicklungen auf. Verwenden Sie alsWurzelpaket z. B. Ihren Domänennamen.

LokaleEntwicklungen

Einen Sonderfall stellt das Paket system-local dar. Es ähnelt von derIdee her den lokalen Paketen des SAP NetWeaver AS ABAP. Verwen-den Sie es für Entwicklungsobjekte, die nicht transportiert werdensollen.

Transport

Delivery Units Ein Transport erfolgt in SAP HANA in der Regel auf Basis einer Deli-very Unit (übersetzt heißt das so viel wie Liefereinheit). Eine DeliveryUnit fasst Pakete zusammen, die gemeinsam transportiert bzw. aus-geliefert werden sollen. Sie entspricht konzeptionell weitestgehendeiner Softwarekomponente im Sinn des AS ABAP. Während Sie imAS ABAP allerdings in der Regel mit der Softwarekomponente HOMEarbeiten, müssen Sie in SAP HANA immer eigene Delivery Units fürKundenentwicklungen anlegen. Voraussetzung dafür ist, dass Siebzw. ein Administrator vorher den Systemparameter content_ven-dor in der Datei indexserver.ini über die Administration Console

des SAP HANA Studios gepflegt haben.

ZuweisungDelivery Unit

Betrachten wir die Zuweisung einer Delivery Unit und den anschlie-ßenden Transport anhand eines Attribute Views AT_CUSTOMER. Beider Anlage des Attribute Views AT_CUSTOMER ordnen Sie diesem einPaket zu. In den Eigenschaften des Pakets können Sie eine DeliveryUnit pflegen. Verwenden Sie dazu den Kontextmenüeintrag Edit desPakets. Alle im System vorhandenen Delivery Units sehen Sie in derAnsicht Quick View über den Menüeintrag Delivery Units. Dortkönnen Sie auch neue Delivery Units anlegen. Abbildung 5.5 veran-schaulicht den Zusammenhang zwischen Entwicklungsobjekt, Paketund Delivery Unit am Beispiel des Attribute Views AT_CUSTOMER (dieDelivery Unit ZA4H_BOOK_CHAPTER05 ist nicht Teil der mit diesemBuch ausgelieferten Beispiele).

3661.book Seite 262 Montag, 9. November 2015 9:47 09

Transport nativer Entwicklungsobjekte 5.3

263

Abbildung 5.5 Entwicklungsobjekt, Paket und Delivery Unit

Import und ExportIm SAP HANA Studio können Sie Entwicklungsobjekte auf zwei Artentransportieren, d. h. exportieren und im Zielsystem importieren:

� Export/Import einer Delivery Unit (optional gekoppelt mit CTS+)

� Export/Import einzelner Objekte (der sogenannte Developer Mode)

Für einen konsistenten Transport von HANA-Content (der nicht engmit einer ABAP-Entwicklung gekoppelt ist) in einer produktiven Sys-temlandschaft empfehlen wir grundsätzlich den Export/Import aufBasis von Delivery Units und des CTS+.

Schema-Mapping

Eine Besonderheit beim Transport von HANA-Content ist das soge-nannte Schema-Mapping. Ein Schema-Mapping ist notwendig, wenndie Datenbankschemata im Quellsystem und Zielsystem eines Trans-ports voneinander abweichen. Es handelt sich um eine Abbildungeines Entwicklungsschemas (Authoring Schema) auf ein physikali-sches Schema (Physical Schema).

3661.book Seite 263 Montag, 9. November 2015 9:47 09

Page 14: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP5

264

Sie pflegen ein Schema-Mapping in der Ansicht Quick View überden Menüeintrag Schema Mapping. Bevor wir genauer darauf einge-hen, wann und wie das System es auswertet, möchten wir die Not-wendigkeit für das Schema-Mapping zunächst anhand des AttributeViews AT_CUSTOMER erläutern. Betrachten Sie hierzu Abbildung 5.6.

Abbildung 5.6 Prinzip des Schema-Mappings

Beispiel zumSchema-Mapping

Der Attribute View AT_CUSTOMER liest Kundendaten aus der Daten-banktabelle SCUSTOM. Diese Tabelle gehört zum Flugdatenmodell desAS ABAP und liegt im Entwicklungssystem im DatenbankschemaSAPABD (weil die Systemkennung des ABAP-Systems ABD ist). Folglichverweist der Attribute View auf SAPABD.SCUSTOM.

Im Qualitätssicherungs- und Produktivsystem gibt es die TabelleSAPABD.SCUSTOM nicht. Aufgrund der abweichenden Systemkennun-gen liegt die Datenbanktabelle im Qualitätssicherungssystem imSchema SAPABQ und im Produktivsystem im Schema SAPABP.

Das Schema-Mapping ermöglicht Ihnen, das Schema SAPABD im Qua-litätssicherungssystem auf SAPABQ und im Produktivsystem aufSAPABP abzubilden.

Schema-Mapping-Pflege

Bei der Pflege eines Schema-Mappings müssen Sie einige Aspektebeachten:

System: HDD,Schema <SAPABD>

System: HDQ,Schema <SAPABQ>

System: HDP,Schema <SAPABP>

SAP-

HA

NA

- C

onte

ntD

aten

bank

-ka

talo

g

Entwicklung Qualitäts-sicherung

Produktion

SAPABD.SCUSTOM SAPABQ.SCUSTOM SAPABP.SCUSTOM

Sche

ma-

Map

ping Entwicklungs-

schemaPhysikalischesSchema

Entwicklungs-schema

PhysikalischesSchema

SAPABD SAPABQ

Entwicklungs-schema

PhysikalischesSchema

SAPABD SAPABP

AT_CUSTOMER SAPABD.SCUSTOM

AT_CUSTOMER SAPABD.SCUSTOM

AT_CUSTOMER SAPABD.SCUSTOM

3661.book Seite 264 Montag, 9. November 2015 9:47 09

Transport nativer Entwicklungsobjekte 5.3

265

� Das Schema-Mapping steuert letztlich, in welchem Datenbank-schema ein Entwicklungsobjekt des SAP HANA Repositorys einObjekt des Datenbankkatalogs sucht.

� Wenn kein Schema-Mapping gepflegt ist, sind Entwicklungs-schema und physikalisches Schema identisch.

� Sie können mehrere Entwicklungsschemata auf das gleiche physi-kalische Schema abbilden.

� Sie können einem Entwicklungsschema nicht mehrere physikali-sche Schemata zuordnen.

� Der HANA-Content speichert Verweise zu Datenbankobjekten mitdem Entwicklungsschema. Wenn dieses (aufgrund einer Mehr-fachzuordnung) nicht eindeutig ermittelt werden kann, speichertdas System den Verweis mit dem physikalischen Schema.

Schema-Mapping bei Installation von SAP NetWeaver AS ABAP 7.4

Wenn Sie SAP NetWeaver AS ABAP 7.4 auf einer HANA-Datenbank in-stallieren, erzeugt das Installationsprogramm das ABAP-SchemaSAP<SID>. Außerdem legt das Installationsprogramm auch (mindestens)ein Schema-Mapping an, nämlich vom Entwicklungsschema ABAP auf dasphysikalische Schema SAP<SID>.

Sollten Sie sich für weiterführende Informationen zur Entwicklungs-organisation und zum Transport in SAP HANA interessieren, konsul-tieren Sie bitte die Dokumentation der HANA-Datenbank.

5.3.2 Nutzung des SAP-HANA-Transportcontainers

Nun betrachten wir den Transport von ABAP-Programmen, dienative HANA-Objekte nutzen, über den HANA-Transportcontainer.Hierzu verwenden wir den Report ZR_A4H_CHAPTER5_LIST_CUSTOMER.Dieser greift über den externen View ZEV_A4H_CUSTOMER des ABAPDictionarys auf den Attribute View AT_CUSTOMER des SAP HANARepositorys zu. Den Quelltext des Reports finden Sie in Listing 5.8.

REPORT zr_a4h_chapter5_list_customer.

DATA: lt_customer TYPE STANDARD TABLE OFzpv_a4h_customer,ls_customer TYPE zpv_a4h_customer.

IF cl_db_sys=>dbsys_type = 'HDB'.

3661.book Seite 265 Montag, 9. November 2015 9:47 09

Page 15: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP5

266

SELECT * FROM zev_a4h_customerINTO TABLE lt_customer.

ELSE.SELECT * FROM zpv_a4h_customer

INTO TABLE lt_customer.ENDIF.LOOP AT lt_customer INTO ls_customer.

WRITE: / ls_customer-id, ls_customer-name.ENDLOOP.

Listing 5.8 Zu transportierender Beispielreport

Probleme beimTransport

Sowohl der Report ZR_A4H_CHAPTER5_LIST_CUSTOMER als auch derexterne View ZEV_A4H_CUSTOMER können durch die Änderungsauf-zeichnung und das Transportwesen des SAP NetWeaver AS ABAPproblemlos transportiert werden (das geschieht im Prinzip »automa-tisch«). Der dem externen View zugrunde liegende Attribute ViewAT_CUSTOMER unterliegt hingegen nicht der Änderungsaufzeichnungund dem Transportwesen des Applikationsservers. Damit fehlt er(ohne dass wir entsprechende Maßnahmen ergreifen) nach einemTransport im Zielsystem. Daher kommt es im Zielsystem beim Auf-ruf des Reports zu einem Laufzeitfehler. Abhilfe kann der HANA-Transportcontainer schaffen.

Grundlegende Funktionsweise

Der HANA-Transportcontainer steht im Release SAP NetWeaver 7.31ab dem Support Package 5 sowie ab dem Release 7.4 zur Verfügung.Er kann genutzt werden, wenn SAP HANA die Primärdatenbank ist.

Der HANA-Transportcontainer erlaubt Ihnen, über das SAP HANAStudio angelegte Entwicklungsobjekte des SAP HANA Repositorysmit den Mechanismen des Change and Transport Systems des ABAP-Applikationsservers (und insbesondere ohne die Notwendigkeit füreinen Java-Stack, wie er für CTS+ benötigt würde) zu transportieren.

Technisch betrachtet handelt es sich beim HANA-Transportcontainerum ein logisches Transportobjekt, das als Proxy-Objekt für genaueine Delivery Unit agiert. Die Funktionsweise des HANA-Transport-containers veranschaulicht Abbildung 5.7.

3661.book Seite 266 Montag, 9. November 2015 9:47 09

Transport nativer Entwicklungsobjekte 5.3

267

Abbildung 5.7 Funktionsweise des HANA-Transportcontainers

Anlage des Transport-containers

Sie können einen HANA-Transportcontainer über die ABAPDevelopment Tools (und nur dort) anlegen. Dazu folgen Sie in derABAP-Perspektive z. B. dem Menüpfad File � New � Other… � ABAP

� SAP HANA Transport Container. Anschließend geben Sie denNamen der Delivery Unit ein, für die Sie den Transportcontaineranlegen möchten. Das System leitet daraus automatisch den Namendes Transportcontainers ab (siehe Abbildung 5.8; der HANA-Trans-portcontainer ZA4H_BOOK_CHAPTER05 ist nicht Teil der mit diesemBuch ausgelieferten Beispiele).

Nutzung eines Präfix-namensraums

Falls Sie in ABAP einen Präfixnamensraum verwenden möchten,müssen Sie vor der Anlage des Transportcontainers dem Namen descontent_vendor (siehe Abschnitt 5.3.1, »Exkurs: Entwicklungsorga-nisation und Transport in SAP HANA«) den gewünschten Präfixna-men zuordnen. Dazu können Sie die Datenbanktabelle SNHI_VENDOR_MAPP über die Tabellensicht-Pflege füllen.

Änderungsauf-zeichnung

Wenn die Transporteigenschaften des verwendeten Pakets – im Bei-spiel TEST_A4H_BOOK_CHAPTER05 – entsprechend gepflegt sind, zeich-net das System die Anlage des Transportcontainers in einem trans-portierbaren Änderungsauftrag auf.

AS

AB

AP

SAP-

HA

NA

-D

aten

bank

GemeinsamesTransport-verzeichnis

Datendatei

KontrolldateiExport

Import

Transport-container

DeliveryUnit

Quellsystem

Snapshot

Byte String

Transport-container

DeliveryUnit

Zielsystem

Import (After-Import-

Methode)

Byte String

3661.book Seite 267 Montag, 9. November 2015 9:47 09

Page 16: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP5

268

Abbildung 5.8 Anlage eines Transportcontainers

Synchronisation Beim Anlegen eines Transportcontainers synchronisiert das Systemden Inhalt dieses Containers einmalig automatisch mit dem Inhaltder Delivery Unit. Das bedeutet, dass alle Objekte der Delivery Unitals gepackte Datei auf den ABAP-Applikationsserver geladen unddort als Byte String in einer Datenbanktabelle (nämlich der TabelleSNHI_DU_PROXY) abgelegt werden. Genau genommen liegt der Inhaltder Delivery Unit anschließend zweimal in der HANA-Datenbank:

� im SAP HANA Repository

� über die Datenbanktabelle SNHI_DU_PROXY

Abbildung 5.9 Synchronisation und Inhalt eines Transportcontainers

Wenn Sie den Transportcontainer nach der Anlage – z. B. weil SieÄnderungen am Attribute View AT_CUSTOMER vorgenommen haben –

3661.book Seite 268 Montag, 9. November 2015 9:47 09

Transport nativer Entwicklungsobjekte 5.3

269

mit der Delivery Unit synchronisieren möchten, müssen Sie diesmanuell tun. Verwenden Sie dazu den Link Take Snapshot and

Save. Den aktuellen Inhalt des Transportcontainers können Sie sichüber die Registerkarte Contents anschauen (beides ist in Abbildung5.9 dargestellt).

Export und ImportDer Transport vom Entwicklungs- ins Qualitätssicherungs- und Pro-duktivsystem erfolgt mit den Mechanismen des CTS:

� Beim Export (genauer beim Export Release Preprocessing) schreibtdas System den Inhalt des Transportcontainers in die Datendateiim gemeinsamen Transportverzeichnis der am Transport beteilig-ten Systeme.

� Beim Import (genauer gesagt in einer After-Import-Methode) liestdas System den Inhalt des Transportcontainers aus der Datendateiund importiert die Delivery Unit in die HANA-Datenbank des Ziel-systems. Eine Aktivierung des Contents findet dabei nur statt,wenn Sie dies für die Softwarekomponente des Transportcont-ainers in der Tabelle SNHI_DUP_PREWORK aktiviert haben (und zwarim Zielsystem).

Sie können die beiden Schritte anhand des Transportprotokollsjederzeit nachvollziehen.

Gemischte Systemlandschaften

Einen Sonderfall bei der ABAP-Entwicklung auf SAP HANA stellengemischte Systemlandschaften dar. Stellen Sie sich dazu vor, dass Sieals ABAP-Entwickler ein Programm für SAP HANA optimieren unddabei von spezifischen Möglichkeiten der HANA-DatenbankGebrauch machen möchten. Gleichzeitig soll dieses Programm aberauch auf traditionellen Datenbanken lauffähig sein, z. B. weil IhrArbeitgeber nur in Teilbereichen des Unternehmens SAP HANA alsDatenbank nutzt. Eine Systemlandschaft könnte in diesem Fall (ver-einfacht) wie in Abbildung 5.10 aussehen.

Durch eine Fallunterscheidung können Sie – um beim Beispiel desProgramms ZR_A4H_CHAPTER5_LIST_CUSTOMER zu bleiben – einmalden Projektions-View ZPV_A4H_CUSTOMER und einmal den externenView ZEV_A4H_CUSTOMER aufrufen (siehe Listing 5.8). Dadurch stellenSie sicher, dass zur Laufzeit keine Fehler auftreten.

3661.book Seite 269 Montag, 9. November 2015 9:47 09

Page 17: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP5

270

Abbildung 5.10 Gemischte Systemlandschaft

Systeme ohneHANA-Datenbank

Die Implementierung des Transportcontainers sorgt dafür, dass beimTransport keine Fehler auftreten und der HANA-Content nur dannimportiert wird, wenn es sich beim Zielsystem des Imports um einHANA-basiertes System handelt.

Empfehlungen zur Verwendung des Transportcontainers

Einschränkungen Bei der Verwendung des Transportcontainers sollten Sie einige Ein-schränkungen beachten:

� Bei der Verwendung des Transportcontainers transportieren Sieimmer die komplette Delivery Unit. Es besteht keine Möglichkeit,nur den Inhalt einer Delivery Unit zu transportieren, der in einembestimmten Zeitintervall geändert wurde.

� Anders als bei Entwicklungsobjekten, die im SAP NetWeaver ASABAP verwaltet werden, zeichnet das System Änderungen amInhalt einer Delivery Unit nicht automatisch auf, und die Objekteeiner Delivery Unit werden nicht exklusiv für einen Transportauf-trag gesperrt. Es liegt folglich in Ihrer Verantwortung, den Trans-portcontainer manuell mit der Delivery Unit zu synchronisieren.

SAP-HANA-Datenbank

ABAP-SystemSAP-HANA-Datenbank

ABAP-System

SAP-HANA-Datenbank

ABAP-System

Entwicklung Qualitäts-sicherung

Produktion

traditionelleDatenbank

ABAP-System

traditionelleDatenbank

ABAP-System

3661.book Seite 270 Montag, 9. November 2015 9:47 09

Transport nativer Entwicklungsobjekte 5.3

271

� Beim Export der Entwicklungsobjekte aus dem Quellsystemberücksichtigt der Transport nur die aktiven Objekte.

� Das Transportsystem erkennt keine Abhängigkeiten zwischenmehreren gleichzeitig transportieren Transportcontainern.

Im Rahmen der Einschränkungen erlaubt Ihnen der Transportcon-tainer, Anwendungen, die zum Teil aus ABAP-Objekten und zumTeil aus HANA-Content bestehen, konsistent zu transportieren. Wirempfehlen Ihnen seine Verwendung, wenn die zu Beginn desAbschnitt 5.3.2, »Nutzung des SAP-HANA-Transportcontainers«,beschriebenen Voraussetzungen erfüllt sind.

Wenn Sie von den in Kapitel 6, »Erweiterte Datenbankprogrammie-rung mit ABAP 7.4«, beschriebenen Möglichkeiten Gebrauchmachen, brauchen Sie den HANA-Transportcontainer nicht.

3661.book Seite 271 Montag, 9. November 2015 9:47 09

Page 18: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

7

Inhalt

Geleitwort ................................................................................. 15Vorwort .................................................................................... 17Einleitung .................................................................................. 19

TEIL I Grundlagen

1 SAP HANA im Überblick .......................................... 31

1.1 Softwarekomponenten von SAP HANA ................... 321.1.1 SAP HANA Database ................................. 321.1.2 SAP HANA Studio ..................................... 341.1.3 SAP HANA Client ...................................... 351.1.4 SAP HANA XS ........................................... 371.1.5 Zusatzoptionen .......................................... 38

1.2 Grundlagen der In-Memory-Technologie ................ 411.2.1 Hardwareinnovationen .............................. 421.2.2 Softwareinnovationen ................................ 47

1.3 Architektur der In-Memory-Datenbank ................... 581.4 Anwendungsfälle und Deployment-Optionen für

SAP HANA .............................................................. 611.4.1 Anwendungsfälle ....................................... 611.4.2 Deployment-Optionen .............................. 64

1.5 Auswirkungen von SAP HANA auf die Anwendungsentwicklung ........................................ 661.5.1 Neue technische Möglichkeiten ................. 661.5.2 Code Pushdown ........................................ 671.5.3 Datenbank als Whitebox ........................... 691.5.4 Qualifizierung des Entwicklers ................... 72

2 Einführung in die Entwicklungsumgebung ............. 75

2.1 Eclipse im Überblick ............................................... 752.2 Die Eclipse-Strategie von SAP ................................. 78

2.2.1 Entflechtung von Eclipse und SAP-Software ............................................ 79

2.2.2 Zentrale Update-Seite ................................ 792.3 Installation der Entwicklungsumgebung .................. 81

3661.book Seite 7 Montag, 9. November 2015 9:47 09

Page 19: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

Inhalt

8

2.3.1 Installation der Eclipse IDE for Java Developers ................................................. 81

2.3.2 Installation des SAP HANA Studios ............ 822.3.3 Installation der ABAP Development Tools

for SAP NetWeaver .................................... 832.4 Erste Schritte im Entwicklungssystem ...................... 84

2.4.1 Grundlagen von Eclipse .............................. 842.4.2 ABAP Development Tools for

SAP NetWeaver ......................................... 872.4.3 SAP HANA Studio ...................................... 97

3 Datenbankprogrammierung mit dem SAP NetWeaver AS ABAP ............................................... 115

3.1 Architektur des SAP NetWeaver AS ABAP ............... 1173.1.1 Datenbankschnittstelle und

Datenbanktreiber ....................................... 1183.1.2 Nutzung der Datenbank durch den

SAP NetWeaver AS ABAP .......................... 1213.1.3 Datentypen ................................................ 123

3.2 ABAP-Datenbankzugriff ........................................... 1293.2.1 ABAP Dictionary ........................................ 1303.2.2 Open SQL .................................................. 1353.2.3 Datenbank-Views im ABAP Dictionary ....... 1453.2.4 Datenbankzugriff über natives SQL ............. 1463.2.5 Sekundäre Datenbankverbindungen ........... 153

3.3 Datenbankzugriffe mit dem SQL-Trace analysieren .............................................................. 1573.3.1 Anweisungstransformationen ..................... 1573.3.2 Sekundärverbindungen .............................. 1643.3.3 Natives SQL ............................................... 1653.3.4 Puffer ......................................................... 165

TEIL II Einführung in die ABAP-Programmierung mit SAP HANA

4 Native Datenbankentwicklung mit SAP HANA ...... 169

4.1 Grundlagen der nativen Datenbankentwicklung ...... 1694.1.1 Objekte im HANA-Datenbankkatalog ......... 170

3661.book Seite 8 Montag, 9. November 2015 9:47 09

Inhalt

9

4.1.2 SQL-Standard und HANA-spezifische Erweiterungen ........................................... 172

4.2 SQLScript ................................................................ 1794.2.1 Grundlagen von SQLScript ......................... 1794.2.2 SQLScript-Programmierung ....................... 186

4.3 Datenbankprozeduren ............................................ 1984.4 Analytische Modelle ............................................... 203

4.4.1 Attribute Views ......................................... 2044.4.2 Analytic Views ........................................... 2194.4.3 Calculation Views ...................................... 2284.4.4 Laufzeitobjekte und SQL-Zugriff ................ 2354.4.5 Zugriff auf Column Views über

Microsoft Excel .......................................... 238

5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP ................................ 241

5.1 Einbindung von analytischen Views ........................ 2415.1.1 Zugriff über natives SQL ............................ 2425.1.2 Externe Views im ABAP Dictionary ............ 2435.1.3 Zugriffsmöglichkeiten auf externe Views .... 2465.1.4 Empfehlungen ........................................... 247

5.2 Einbettung von nativen Prozeduren in ABAP .......... 2495.2.1 Zugriff über natives SQL ............................ 2505.2.2 Definition von Database Procedure

Proxies ...................................................... 2575.2.3 Aufruf von Database Procedure Proxies ..... 2595.2.4 Anpassung von Database Procedure

Proxies ...................................................... 2605.3 Transport nativer Entwicklungsobjekte .................... 261

5.3.1 Exkurs: Entwicklungsorganisation und Transport in SAP HANA ............................. 261

5.3.2 Nutzung des SAP-HANA-Transportcontainers ................................... 265

6 Erweiterte Datenbankprogrammierung mit ABAP 7.4 ........................................................... 273

6.1 Einführung in Core Data Services ............................ 2746.2 ABAP Core Data Services ........................................ 276

6.2.1 CDS-Views ................................................ 277

3661.book Seite 9 Montag, 9. November 2015 9:47 09

Page 20: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

Inhalt

10

6.2.2 Code Pushdown ......................................... 2986.2.3 View-Erweiterungen .................................. 3056.2.4 Annotationen ............................................. 3076.2.5 CDS-Views in ABAP und in ALV with IDA

verwenden ................................................. 3116.2.6 Tipps für die Anwendung von ABAP-

CDS-Views ................................................. 3136.3 SAP HANA Core Data Services ................................. 3156.4 Open-SQL-Erweiterungen ....................................... 3176.5 ABAP-Datenbankprozeduren ................................... 320

6.5.1 AMDPs anlegen ......................................... 3226.5.2 Fehleranalyse ............................................. 3256.5.3 Erweiterungen ............................................ 3276.5.4 Praxistipps ................................................. 331

7 Laufzeit- und Fehleranalyse auf SAP HANA ........... 333

7.1 Übersicht der verfügbaren Werkzeuge ..................... 3347.2 Fehleranalyse ........................................................... 336

7.2.1 Unit Tests ................................................... 3377.2.2 Dump-Analyse ........................................... 3397.2.3 Debugging und Tracing in SQLScript .......... 342

7.3 ABAP-Code-Analyse ................................................ 3437.3.1 Prüfungen und Prüfvarianten ...................... 3437.3.2 Prüfungen in der Entwicklungs-

infrastruktur ............................................... 3487.3.3 Globale Prüfläufe im System ....................... 349

7.4 Laufzeitstatistiken und Traces .................................. 3517.4.1 Laufzeitstatistik .......................................... 3527.4.2 ABAP-Trace und ABAP Profiler ................... 3567.4.3 SQL-Trace .................................................. 3647.4.4 Single Transaction Analysis ......................... 3687.4.5 Explain Plan ............................................... 3697.4.6 SAP HANA Plan Visualizer .......................... 370

7.5 Systemweite Analysen ............................................. 3767.5.1 DBA-Cockpit .............................................. 3767.5.2 SQL Monitor .............................................. 3817.5.3 Laufzeitprüfungs-Monitor .......................... 390

7.6 SQL-Performanceoptimierung ................................. 393

3661.book Seite 10 Montag, 9. November 2015 9:47 09

Inhalt

11

8 Beispielszenario: Optimierung einer bestehenden Anwendung ........................................ 399

8.1 Vorgehen bei der Optimierung ............................... 4008.1.1 Migration auf SAP HANA .......................... 4008.1.2 Systemoptimierung .................................... 4028.1.3 Anwendungsoptimierung .......................... 403

8.2 Szenario und Anforderungen .................................. 4068.2.1 Ausgangssituation ..................................... 4068.2.2 Technische Umsetzung .............................. 4088.2.3 Aktuelle Probleme ..................................... 410

8.3 Umsetzung der Anforderungen ............................... 4118.3.1 Eingrenzung des Problems mit der

Laufzeitstatistik ......................................... 4118.3.2 Detailanalyse des ABAP-Programms mit

Transaktion SAT ........................................ 4138.3.3 Detailanalyse der Datenbankzugriffe .......... 4158.3.4 Ergebnis der Analyse ................................. 4178.3.5 Optimierung mit Open SQL ....................... 4178.3.6 Analyse der ersten Optimierung ................ 4208.3.7 Ergebnis der Analyse ................................. 4218.3.8 Optimierung mit einer

Datenbankprozedur ................................... 4228.3.9 Analyse nach der zweiten Optimierung ...... 4248.3.10 Ergebnis der Analyse ................................. 427

TEIL III Fortgeschrittene Techniken für die ABAP-Programmierung mit SAP HANA

9 Integration analytischer Funktionalität .................. 431

9.1 Was ist analytische Funktionalität? .......................... 4329.2 Das SAP-BusinessObjects-Portfolio ......................... 4359.3 Exkurs: SAP Business Warehouse ............................ 439

9.3.1 SAP HANA vs. SAP Business Warehouse .... 4399.3.2 Terminologie im Überblick ........................ 4409.3.3 InfoProvider bei Nutzung von

SAP HANA ................................................ 4429.4 Mögliche Architekturen im Überblick ..................... 448

3661.book Seite 11 Montag, 9. November 2015 9:47 09

Page 21: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

Inhalt

12

9.4.1 Direkter Zugriff auf analytische Funktio-nalität in SAP HANA .................................. 448

9.4.2 Zugriff über SAP NetWeaver AS ABAP ........ 450

10 Textsuche und Analyse von unstrukturierten Daten ....................................................................... 455

10.1 Grundlagen der Textsuche in SAP HANA ................. 45710.1.1 Technische Architektur ............................... 45810.1.2 Fehlertolerante Suche ................................ 45910.1.3 SAP-Komponenten und Produkte für die

Suche ......................................................... 46110.2 Textdatentypen und Full-Text-Indizes in

SAP HANA .............................................................. 46210.3 Verwendung der Textsuche über SQL ...................... 467

10.3.1 Fuzzy-Suche ............................................... 46910.3.2 Synonyme und Stoppwörter ....................... 47310.3.3 Suche über Datumsfelder und

Adressdaten ............................................... 47610.4 Einsatz der Textsuche in ABAP ................................. 479

10.4.1 Direkter SQL-Zugriff aus ABAP ................... 47910.4.2 Einbettung in Wertehilfen .......................... 48010.4.3 ABAP-Quelltextsuche ................................. 488

10.5 Textanalyse ............................................................. 48910.6 Ressourcenverbrauch und Laufzeitaspekte der

Textsuche ................................................................ 492

11 Entscheidungstabellen in SAP HANA ..................... 495

11.1 Grundlagen von Entscheidungstabellen ................... 49611.2 Anlegen von Entscheidungstabellen im

SAP HANA Studio ................................................... 50011.3 Entscheidungstabellen basierend auf

SAP HANA Views .................................................... 50611.4 Laufzeitobjekte und SQL-Zugriff für

Entscheidungstabellen ............................................. 50811.5 Zugriff auf Entscheidungstabellen aus ABAP ............ 509

12 Funktionsbibliotheken in SAP HANA ...................... 513

12.1 Grundlagen der Application Function Library ........... 51612.2 Business Function Library ........................................ 518

3661.book Seite 12 Montag, 9. November 2015 9:47 09

Inhalt

13

12.3 Predictive Analysis Library ...................................... 52212.3.1 Generierung der K-Means-Funktion über

die SQL-Konsole ........................................ 52412.3.2 Verwendung des Application Function

Modelers ................................................... 527

13 Verarbeitung von Geoinformationen ...................... 535

13.1 Grundlagen von Geoinformationssystemen ............. 53613.2 Geodatentypen und Geofunktionen in

SAP HANA .............................................................. 53813.2.1 Datentypen ............................................... 53913.2.2 Tabellen anlegen und Daten lesen ............. 54013.2.3 Operationen auf geografischen

Strukturen ................................................. 54213.2.4 Integration von externem

Kartenmaterial ........................................... 54413.3 Geoinformationen in ABAP-Anwendungen

einbinden ............................................................... 546

14 Praxistipps .............................................................. 551

14.1 Allgemeine Empfehlungen ...................................... 55214.1.1 Empfehlungen zu Column und

Row Store ................................................. 55214.1.2 HANA-spezifische Implementierungen ...... 55314.1.3 Checkliste für datenbankspezifische

Implementierungen ................................... 55614.1.4 Empfehlungen zur Migration ..................... 55814.1.5 Entwicklung in Landschaften ..................... 56014.1.6 Schreibende Zugriffe in SQLScript oder

nativem SQL .............................................. 56214.2 Konventionen ......................................................... 564

14.2.1 Namenskonventionen ................................ 56414.2.2 Kapselung von HANA-Paketen .................. 566

14.3 Qualitätsaspekte ..................................................... 56614.3.1 Testen von Views und Prozeduren ............. 56714.3.2 Robuste Programmierung .......................... 56814.3.3 Sicherheitsaspekte ..................................... 569

14.4 Performanceempfehlungen für Open SQL ............... 57014.4.1 Regel 1: Ergebnismengen klein halten ....... 571

3661.book Seite 13 Montag, 9. November 2015 9:47 09

Page 22: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

Inhalt

14

14.4.2 Regel 2: Übertragene Datenmengen klein halten ........................................................ 575

14.4.3 Regel 3: Anzahl der Anfragen reduzieren .... 58114.4.4 Regel 4: Suchaufwand minimieren ............. 58714.4.5 Regel 5: Datenbank entlasten ..................... 59114.4.6 Zusammenfassung der Regeln .................... 596

14.5 Performanceempfehlungen für native Implemen-tierungen in SAP HANA ........................................... 59714.5.1 Empfehlungen für natives SQL .................... 59714.5.2 Empfehlungen für SAP HANA Views .......... 59914.5.3 Empfehlungen für SQLScript ...................... 602

14.6 Zusammenfassung der Empfehlungen ...................... 604

Anhang ........................................................................... 607

A Flugdatenmodell ................................................................ 609

B Erweiterungen der ABAP-Programmiersprache (ab SAP NetWeaver 7.4) .................................................... 617

C Lese- und Schreibzugriffe im Column Store ........................ 623

D SAP Business Application Accelerator powered by SAP HANA ........................................................................ 633

E Installation der Beispiele .................................................... 637

F Die Autoren ....................................................................... 639

Index ......................................................................................... 641

3661.book Seite 14 Montag, 9. November 2015 9:47 09

Page 23: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

641

Index

@ (für Annotationen) 307$parameters 296$projection 289

A

ABAPABAP Unit 337ABAP-Anwendung, Transport 561ABAP-Code-Analyse 335, 400ABAP-Laufzeitumgebung 118ABAP-Projekt 88ABAP-Proxy 565ABAP-Trace 356, 420Quelltextsuche 488Schema 121Typsystem 125

ABAP 7.4 617ABAP CDS 275

Compiler 296Funktionen 298Modellierung 313

ABAP Connectivity and Integration Development Tools 84

ABAP Core Development Tools 82, 83ABAP Database Connectivity � ADBCABAP Development Tools for SAP Net-

Weaver 34, 243ABAP-Ressourcen-URL 90, 92Benutzereinstellungen 90Berechtigungen 88Code-Analyse 348Debugger 95favorisierte Pakete 89Komponenten 83Perspektive 87Programm anlegen 92Programm ausführen 95Project Explorer 89Projekt 88SAP-GUI-Integration 90Systembibliothek 89Templates 93

ABAP Dictionary 90, 116, 124, 130, 464Typsystem 126Wertehilfe 480

ABAP Managed Database Procedure 147, 172, 274, 547

ABAP Managed Database Procedure Framework 321

ABAP Memory 594ABAP Profiler 335, 358ABAP Test Cockpit 93, 335, 347, 350ABAP-Managed-Datenbankprozedur

321ABAP-Programm

Analyse 413Ausführungszeit 413

ABAP-Puffer, benutzerübergreifen-der 591

ABAP-Tabellenpuffer � Tabellenpuf-fer

Accelerator 62ACID-Prinzip 32ADBC 147, 250, 465, 479, 558, 599Administration Console 97AFL 514, 517

Software Development Kit 515After-Import-Methode 269Aggregatfunktion 139, 299, 301Aggregation 298, 312Aktivierungsprotokoll 314Alias 298Alternativimplementierung 554ALV � SAP List ViewerAMDP 479, 520

BAdI 327Datenbankprozedur aufrufen 325Datenbankverbindung 325erweitern 327Fehleranalyse 325Tipps 331

AMDP Framework � ABAP Managed Database Procedure Framework

AMDP-Klasse 322AMDP-Methode 321, 323Analysis, Edition for Microsoft Office

437

3661.book Seite 641 Montag, 9. November 2015 9:47 09

Page 24: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

642

Index

Analytic Engine 442Bericht-Bericht-Schnittstelle 452Formel 452Hierarchieverarbeitung 452

Analytic Privilege 107Analytic View 107, 204, 219, 237,

599, 614anlegen 221

Analytical Search 426analytische Funktionalität 432analytische Query � BW Queryanalytischer Index 443Änderungsauftrag 267Annotation 275, 307

Post-Annotation 307Scope 307Sichtbarkeitsbereich 307

Anweisungstransformation 157Anwendung, Optimierung 399, 403Anwendungslogik 68Append View 305Appliance 31Application Function Library 102,

514, 517Application Function Modeler 518,

524, 527Applikationsschicht 68Array-Interface 599Assoziation 275, 286, 289

Definition 288Filter 294lokale 289Name 288, 292Präfix 292sichtbare 289Verwendung 291Vorteile 291

Attribut 205berechnetes 213, 224virtuelles 213

Attribute View 107, 204, 205, 599Attributvektor 50, 623Aufrufhierarchie 362, 416Ausführungsplan � Explain PlanAusgabeparameter 565Ausnahme, CX_SY_SQL_UNSUPPOR-

TED_FEATURE 296

B

BAdI 556B-Baum-Index 627Bedingung 299Berechtigung

analytische 98, 570Paketberechtigung 98Prüfung 569SAP HANA Studio 98Systemberechtigung 98

Berichtswesen 432Bewegungsdaten 220, 612BEx Query Designer 447BFL 515, 518Blocking Factor 162Breakpoint 326

dynamischer 95externer 96statischer 95

BRFplus 496Business Function 488Business Function Library 515, 518Business Rule Mining 514BW Query 442, 447

C

Calculation Engine 186, 197Calculation View 107, 180, 204, 228,

443, 509, 599Data Category 230modellierter 228SQLScript 228

Callstack 362, 416CASE-Anweisung 298Cashflow 518CDS � Core Data ServiceCDS-Entität 278, 311CDS-Objekt 278, 315CDS-View 276, 470

Aktivierungsprotokoll 314anlegen 278erweitern 305mit Parameter 295Name 311Outer-Joins 483Verwendung mit Parametern 296

3661.book Seite 642 Montag, 9. November 2015 9:47 09

643

Index

CE-Funktion 422, 600CE_AGGREGATION 196CE_COLUMN_TABLE 196CE_CONVERSION 197CE_PROJECTION 196CE_VERTICAL_UNION 197, 520TRACE 342Zugriffsfunktion 197

CLIENT SPECIFIED 286Client-Server 21Cloud Deployment 65Cluster-Codierung 53Cluster-Tabelle 134, 559COALESCE-Funktion 283Code Completion 93, 105, 246Code Inspector 335, 343, 401, 415Code Pattern 72Code Pushdown 67, 594Code Template 279Code-to-Data-Paradigma 67, 69, 411Codierung

Cluster-Codierung 53Dictionary-Codierung 50indirekte 53Lauflängencodierung 53Präfix-Codierung 53Sparse-Codierung 53

Column Store 48, 103, 133, 173, 174, 623Datentypen 462Empfehlung 552INSERT ONLY 627invertierter Index 630Lesezugriff 624Merge 628Schreibzugriff 626zusammengesetzter Index 631

Column View 102, 171, 236, 242, 245

Commit, impliziter 144CONTAINS 179, 467Content 35, 106Core Data Service 37, 146, 274

ABAP 275Element 282HANA 275, 315

CPU-Cache 44, 45CPU-Kern 42CPU-Zeit 404, 426Cursor 142, 194, 603

D

Data Aging 41Data Control Language (DCL) 129Data Definition Language (DDL) 129,

187, 277, 540Data Dictionary � ABAP DictionaryData Manipulation Language (DML)

129Data Modeler 610Data Quality Library 515Data Scientist 513Data Warehouse 63, 434DATA() 618Database Procedure Proxy 250, 273,

561, 565Synchronisation 260

Database Shared Library � DBSLDataSource 441, 447Data-to-Code-Paradigma 67Datenanalyse 432, 435Datenart 133Datenbank

relationale 32, 47, 175Typsystem 126

Datenbankindex 588Datenbank-Interface 559, 562Datenbankkatalog 101, 170, 242Datenbankobjekt 102Datenbankoptimierer 56, 182, 369Datenbankprogrammierung, Werk-

zeuge 157Datenbankprozedur 59, 102, 107,

180, 565ABAP-verwaltete 274Arten 187Ausführung 186Kompilierung 186Kontrollstruktur 193testen 567

Datenbankschema 101, 109, 170Datenbankschicht 68Datenbankschnittstelle � DBIDatenbanktabelle 102Datenbanktrigger 103Datenbankunabhängigkeit 277Datenbankverbindung

sekundäre 153, 164Standard 164

Datenbank-View 131, 145

3661.book Seite 643 Montag, 9. November 2015 9:47 09

Page 25: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

644

Index

Datendeklaration 617Datenelement 296Datenexploration 435Dateninkonsistenz 564, 567Datenlayout 47Datenmodell

Erweiterung 276Syntax 276virtuelles 449

Datenquelle, Zieldatenquelle 288Datenreferenz 620Datenreplikation 39

SAP Landscape Transformation Repli-cation Server 40

SAP Replication Server 40Datensicht � ViewDatentyp 123, 132, 174, 257, 311

benutzerdefinierter 275Geo-Spatial 539Integer 50Konvertierung 505SHORTTEXT 174, 462ST_GEOMETRY 174TEXT 174, 462

Datenvorschau 104, 112DBA-Cockpit 154, 376DBI 118DBSL 36, 120DCL � Data Control Language (DCL)DDL Editor 280DDL � Data Definition Language

(DDL)DDL Source 277

anlegen 278DDL-Statement 57Debugging 342Decision Table � Entscheidungsta-

belledeklarative Programmierung 184,

603Delivery Unit 106, 566Delta Load 39Delta Merge 494Delta Store 54, 494, 626Delta-Komprimierung 52Designtime 254Design-Time-Objekt 110Diagnostics Agent 34Dictionary-Codierung 50Dictionary-Vektor 50, 623

Dimension 220Direct Extractor Connection 40DISTINCT 299Document Analysis Toolkit 458Domäne 132DRAM 45Drill-down 215Dump 339, 569Duplikat 298Dynamic Random Access Memory 45dynamischer Datenbank-View 496

E

Easy Query 453Echtzeit 19, 434

near Realtime 633Echtzeitqualität 19Eclipse 34

ABAP-Entwicklungsumgebung 34Ansicht 86Arbeitsbereich 87Editor 86Erweiterungspunkt 76Fenster 84Foundation 34, 75, 77Framework 75Menüleiste 86Perspektive 85Plattform 34, 75, 76Plug-in 76Projekt 77Release Train 77Repository 80Sammelrelease 77SAP Release Train for Eclipse 79SDK 76Symbolleiste 86Update Site 80Workbench 84

Eingabeparameter 227, 565Einheitenkonvertierung 226Element Info 306elementare Suchhilfe 481Embedded Reporting 440Embedded Search 461Engine 59, 601Enqueue-Server 117Enqueue-Service 563

3661.book Seite 644 Montag, 9. November 2015 9:47 09

645

Index

Enqueue-Workprozess 123Enterprise Information Management

530Enterprise Search 462Entitätsname 281Entity-Relationship-Modell 203Entkopplung 555, 567Entscheidungsregel 495, 506Entscheidungstabelle 107, 495, 497,

500Aktionen 497anlegen 500Bedingungen 497Transport 511

Entwicklungslandschaft, gemischte 561

Entwicklungsobjekt 92, 102, 106ABAP 565Ablage 108aktivieren 110Namenskonvention 564SAP HANA 564testen 112validieren 109

Entwicklungsschema 263Entwicklungsumgebung

ABAP Development Tools 83, 87Installation 81SAP HANA Studio 82

Entwurfsmuster 339Enumerationswert 307Equi-Join 211ESRI Shapefile 541, 545ETL-Prozesse 39Existenzcheck 346Expensive SQL Statement Trace 336Explain Plan 336, 369

Aufruf 369Ausgabe 370

Export Release Preprocessing 269Extended Storage 41Extension Index 464externer View � View, externer

F

Factory Pattern 555Faktentabelle 219, 220Fehleranalyse 333, 335, 336

Fehlerbehandlung 568Feld

berechnetes 224Referenz 305

Feldliste 577Feldsymbol 618Festplatte 44Filter 206, 298, 312Filterbedingung 294Filterwert 212Fiskaljahr 217Flash-Speicher 45Fluchtsymbol 296Flugdatenmodell 117, 609, 610Flussdiagramm 527FOR ALL ENTRIES 137, 162, 163,

345, 585Foreign Key � FremdschlüsselFremdschlüssel 286, 290Fremdschlüsselbeziehung 131, 204,

290Full-Text-Index 463, 467, 490, 493Funktion 171

benutzerdefinierte 102numerische 299

Funktionsbibliothek � Application Function Library

Fuzzy Score 473Fuzzy-Search-Index 461, 493Fuzzy-Suche 456, 457, 459, 473

Schwellenwert 459stopwordListId 475stopwordTable 474textsearch 475

G

Geo-Coding 546Geodatentyp 538

konvertieren 542Geo-Index 546Geoinformation 535

in ABAP 546Geoinformationssystem 535, 536GeoJSON 541Geo-Spatial Engine 536, 539

Darstellungsformate 541Konstruktoren 540ST_Area 544

3661.book Seite 645 Montag, 9. November 2015 9:47 09

Page 26: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

646

Index

Geo-Spatial Engine (Forts.)ST_Contains 544ST_Distance 542ST_WithinDistance 543Tabelle anlegen 540

Geschäftsjahr 217Geschäftslogik 185Geschäftsprozess 495Geschäftsregel-Managementsystem

495gewichteter Durchschnitt 518, 520GIS � Geoinformationssystemgoldene Regeln für Datenbankpro-

grammierung 571Größenkategorie 133GROUP BY 298GROUPING SETS 178Gruppieren 312GUID 614

H

Hadoop 40HANA CDS 275, 315

Objekt 315Syntax 315

HANA XS 37HANA-Datenbank 32, 58HANA-Entwicklungsobjekt 273HANA-Softwarekomponente 32HANA-Transportcontainer 266, 561Hardwareinnovationen 42Hardwaretrends 42Hash-Partitionierung 57Hashwert 57Hauptspeicher 42, 45HAVING-Klausel 299, 302, 572, 588Help-View 483Hierarchie 206, 215, 221

Level 215Vater-Kind 215

High Performance Analytical Appli-ance � SAP HANA

Hint 144, 558Hitliste 361Hostvariable 296hybride Anwendung 67Hypernym 476Hyponym 476

I

IDA � Integrated Data AccessIdentical Select 366, 367imperative Programmierung 184, 603Index 102, 171

Exklusionsliste 133Full-Text-Index 463Inklusionsliste 133invertierter 590, 629, 630Primärindex 588zusammengesetzter 590, 630, 631

Indexserver 59indirekte Codierung 53InfoObject 441, 443, 444InfoProvider 441, 442

transient 446transienter 442virtueller 444

InfoSet, klassisches 446Infrastructure-as-a-Service 65Initial Load 39Inkonsistenz-Prüfung 303Inline-Deklaration 318, 617IN-Liste 162In-Memory-Datenbank 58In-Memory-Technologie 41Insight to Action 432Integer 50Integrated Data Access 312Integrität 290International Organization for Standar-

dization (ISO) 539interne Tabelle 594

J

Java Runtime Environment (JRE) 82JDBC 35Job Log 110Join 105, 197, 281, 283, 318, 421

aus Assoziation 288Equi-Join 211Full Outer Join 177Inner Join 136, 177, 283Join-Typ 177komplexer 602Left Outer Join 136, 177Outer Join 177

3661.book Seite 646 Montag, 9. November 2015 9:47 09

647

Index

Join (Forts.)Referential Join 206, 210Right Outer Join 177, 294Self Join 234Text Join 206Typ 293

Join Engine 205, 603Join View � Attribute View

K

Kalkulationslogik 68Kapselung 566Kardinalität 289, 294Kartenmaterial 544Katalogobjekt 315Kennzahl 220

berechnete 224eingeschränkte 221

Kerberos 60Kernel 118key 302Klasse

CL_ABAP_DBFEATURES 296CL_SALV_GUI_TABLE 312

K-Means 523, 527Komprimierung

Delta-Komprimierung 52Verfahren 50, 52

Konstruktor-Ausdruck 619Kontrollstruktur 193Konvertierungs-Exit 557

L

L (Programmiersprache) 185, 187Large Object 462, 494Lastverteilung 56Latenz 19Lauflängencodierung 53Laufzeit 255Laufzeitanalyse 333, 335, 420Laufzeitfehler 339Laufzeitobjekt 236Laufzeitprüfungs-Monitor 336, 390Laufzeitstatistik 351, 352, 404, 412

Auswertung 352Selektion 352

Lifecycle Management 33

Liste 312Literal 295, 297, 304, 307L-Knoten 185Logical Unit of Work 122lokale temporäre Tabelle 342LOOP-Schleife 586LUW-Konzept 122

M

Main Store 54, 626Mainframe 21Mandantenabhängigkeit 284Mandantenbehandlung 120, 248,

284, 561Attribute View 209

MANDT 285Manifest 76Massenoperation 599Materialisierung 203MDX 35, 59, 178Measure � KennzahlMengenoperation 582Mengenoperator 298Merge 494, 628Message-Server 117Metadaten 275Methode DB_CAPABILITIES 312Modeler-Perspektive 98MODIFY 161Modularisierung 567Modularisierungseinheit 346Monitoring View 493Multidimensional Expressions � MDXMultitenant Database Container 59

N

Namensraum 565Nameserver 60natives SQL 479, 597

ABAP-Tabellen 562NEW-Operator 619node.js 36NULL-Wert 283NUMA-Architektur 45numerische Funktion 299

3661.book Seite 647 Montag, 9. November 2015 9:47 09

Page 27: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

648

Index

O

Objektinstanz, anlegen 619ODBC 35ODBO 35ODS-Objekte 441OLAP 67, 220, 434OLAP Engine 603OLTP 67, 434on the fly 435ON-Bedingung 281, 294On-Premise Deployment 64Open Geospatial Consortium 539Open SQL 69, 115, 129, 179, 183,

417Array-Operation 143CDS-View verwenden 296Cursor 142dynamisches 141Erweiterung 317Existenzprüfung 140Hints 144Paketgröße 142strikter Modus 318Transaktionskontrolle 144Unterabfrage 140

Operational Data Provisioning 446Operator 301Optimierer � DatenbankoptimiererOrchestrierungslogik 68OR-Verbindung 162Outer Join 128

P

Paging 176, 312Paket 106, 107, 566

SAP HANA 564system-local 262

PAL � Predictive Analysis LibraryParallelisierung 56, 193, 603Parameter 295

Namenskonventionen 296Parameter-Marker 598Partition Pruning 56Partitionierung 54

Art 57explizites Partition Handling 56Hash-Partitionierung 57

Partitionierung (Forts.)horizontale 55Range-Partitionierung 57Round-Robin-Partitionierung 56, 57vertikale 55

PBO-Modul 510Performance 570Phrase-Index 493Phrase-Index-Ratio 493physikalisches Schema 263Planungs-Engine 59PlanViz 336, 370, 405, 426

Aufzeichnung 370Auswertung 371Operator List 372Tables Used 372Timeline 371

PMML 522Pool-Tabelle 134, 559Post-Annotation 307Präfix 292Präfix-Codierung 53Präfixnamensraum 267Pragma, ##DB_FEATURE_MODE 296Präprozessor-Server 60Präsentationsschicht 68Predictive Analysis 513Predictive Analysis Library 38, 515,

522Predictive Model Markup Language

(PMML) 522Prepared-Anweisung 150, 570, 597Prepare-Phase 598Pretty Printer 92, 93Primärdatenbank 250, 444Procedure 171Projektion 197Projektions-View 131Proxy-Objekt 257Public Synonym 111Puffer-Trace 165Pufferzugriff 418Punktoperator 292

Q

QL � Query Language (QL)Query Language 275

3661.book Seite 648 Montag, 9. November 2015 9:47 09

649

Index

R

R (Programmiersprache) 187, 533RAM 42Range 137Range-Partitionierung 57räumliches Bezugssystem � Spatial

Reference SystemRead Only Procedure 187Read Write Procedure 187Realtime � EchtzeitRedirected Database Access (RDA)

153, 633Referential Join 206, 210Regel 498relationale Funktion 197Reporting 432Repository � SAP HANA RepositoryResult View 508, 509RIGHT OUTER JOIN 294robuste Programmierung 568Rollback 144Rollenverwaltung, SAP HANA Studio

99Round Trip 161Round-Robin-Partitionierung 57Row Store 48, 133, 173Runtime-Objekt � Laufzeitobjekt

S

SAML 60Sammelsuchhilfe 481SAP ASE (Datenbank) 41SAP Business Application Accelerator

633SAP Business Explorer (BEx) 438, 442SAP Business Warehouse 434SAP BusinessObjects 442SAP BusinessObjects Business Intelli-

gence-Plattform 238SAP BusinessObjects Dashboards 436SAP BusinessObjects Design Studio

436SAP BusinessObjects Web Intelli-

gence 436SAP BusinessObjects Werkzeuge 435SAP Crystal Reports 435SAP Gateway 453

SAP HANA 31Advanced Data Processing 39Anwendungsfälle 61Application Lifecycle Manager 33Client 32Datenbank 32Dynamic Tiering 41Engines 38Enterprise Information Management

40Entwicklungsorganisation 261Lifecycle Manager 33Migration 400, 558Optionen 38Predictive Option 38Real-Time Replication 40Smart Data Streaming 41Spatial Option 38SQL Command Network Protocol 36Studio 32Transportcontainer 265zertifizierte Hardware 42, 43

SAP HANA Analytics Foundation 449SAP HANA Client 35

HTTP 37JDBC 35ODBC 35ODBO 35SQLDBC-Bibliothek 35

SAP HANA Cloud Platform 65SAP HANA Cockpit 35SAP HANA Development 98SAP HANA Enterprise Cloud 65SAP HANA Extended Application Ser-

vices 32SAP HANA Live 62, 449SAP HANA MDX Provider 238SAP HANA Plan Visualizer � PlanVizSAP HANA Repository 98, 106, 262,

564, 566SAP HANA Repository View 243, 246SAP HANA Studio 32, 34, 97

Arbeitsbereich 99Benutzereinstellungen 100Berechtigungen 98Datenbankkatalog 101hdbinst 82hdbsetup 82Perspektive 97SQL-Anweisung 426

3661.book Seite 649 Montag, 9. November 2015 9:47 09

Page 28: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

650

Index

SAP HANA Studio (Forts.)SQL-Konsole 105, 187Systemverbindung 99Templates 105View-Modellierung 204, 206

SAP HANA UI for Information Access 462

SAP HANA View 70, 242, 561Auswahl 248Performance 599testen 567Typ 599

SAP HANA Web Workbench 38SAP HANA XS � SAP HANA Extended

Application ServicesSAP Host Agent 33SAP InfiniteInsight 515SAP IQ (Datenbank) 41SAP Landscape Transformation Repli-

cation Server 40SAP List Viewer 312, 510, 511

with Integrated Data Access 312SAP List Viewer mit Integrated Data

Acces 302SAP Lumira 438SAP Management Console 33SAP Memory 594SAP NetWeaver AS ABAP 36

7.4 2967.5 289, 296

SAP Operational Process Intelligence 499

SAP Predictive Analysis 515SAP Replication Server 40SAP S/4HANA 63SAP Solution Manager 34Scale-out 43, 117Schattenspalte 463Schema � DatenbankschemaSchemabehandlung 248, 561Schema-Mapping 263, 561Schleife 603Schlüsselfeld 206, 302Scope

Element 307Extend View 307View 307

Scope-Operator 296Scorecard 514Script Server 517

Scrollen 312SDK � Software Development KitSearched Case 298Segmentierung 523Sekundärdatenbank 153, 450Sekundärindex 588Sekundärverbindung 164SELECT*-Anweisung 418SELECT-Anweisung 571

geschachtelte 418, 584SELECT-Klausel 298Selektivität 461Sentiment-Analyse 456, 458, 490Sequenz 102, 171Serverkomponente 58Session-Kontext 209Session-Variable 297SFLIGHT 117, 609, 610Shared Buffer 594Shared Memory 594Shared Objects 594Side-by-Side-Szenario 22Sidepanel 453Simple Case 298Single Transaction Analysis 336, 368skalarer Parameter 189Slice-and-dice 220Smart Data Access 40, 174Software Development Kit 515Softwareinnovation 47Sortieren 312Sortierverhalten 344, 560spaltenorientierte Datenablage 48,

103Sparse-Codierung 53Spatial Reference Identifier 537Spatial Reference System 537Sperre 563Sperrobjekt 123, 132SQL 129

1999 (Standard) 172ADBC 147dynamisches 195, 603Erweiterungen 275Injection 195natives 70, 146, 250Open 69SQL-Cache 336, 380, 598SQL-Injection 570SQL-Konsole 105, 187

3661.book Seite 650 Montag, 9. November 2015 9:47 09

651

Index

SQL (Forts.)SQL-Performanceoptimierungswerk-

zeug 401SQL-Profil 415SQL-Prozessor 59

SQL Injection 141SQL Monitor 336, 381, 401, 415

aktivieren 381Auswertung 382Einstiegspunkt 384

SQL Performance Tuning Worklist 393

SQL View 175, 277, 278, 293Definition 285

SQL-92 (Standard) 172SQL-Analyse, systemweite 376SQL-Anweisung

Analyse 403, 416BINARY SEARCH 560CREATE FULLTEXT INDEX 463EXEC 569EXEC SQL 558FOR ALL ENTRIES 585, 586INTO CORRESPONDING FIELDS OF

577ORDER BY 559SELECT * 418SELECT COUNT(*) 579UP TO n ROWS 575UPDATE 580UPDATE … SET 580

SQL-Ausdruck, in Open SQL 317SQLDBC-Bibliothek 35SQL-Dialekt 170SQLScript 70, 422

ABAP-Tabellen 562Ausgabeparameter 252benutzerdefinierte Funktion 188BREAK 193CONTINUE 193CREATE PROCEDURE 189CREATE TYPE 190Debugger 325dynamisches 569Eingabeparameter 256EXEC 195EXECUTE IMMEDIATE 195explizite Typisierung 191Fallunterscheidung 184, 193implizite Typisierung 191

SQLScript (Forts.)Optimierungen 195Qualitäten 179Regeln 602Schleife 184, 193skalarer Parameter 189Tabellenparameter 189Tabellentyp 189Tabellenvariable 181Typisierung 192UDF 188User-defined Function 188Wiederverwendung 181WITH RESULT VIEW 190

SQL-Trace 159, 335, 364, 405, 415, 421aufzeichnen 159, 364auswerten 365

SRS � Spatial Reference SystemSRTCM, Prüfung 391ST_GEOMETRY 174, 539Stack-Trace 366Stammdaten 220Standarddatenbankverbindung 121Standard-View 175Statistiksatz 335Statistikserver 60Sternschema 203, 219, 220Stoppwort 461, 473Stored Procedure � Datenbankproze-

durString 52Structured Query Language � SQLStruktur 311, 620Strukturkomponente 311Subselect 298Suche

exakte 468Freestyle 457Fuzzy 456, 457linguistische 457, 460, 468Synonymsuche 457

Suchfacette 458Suchhilfe 131, 455, 480

elementare 481Suchhilfe-Exit 483

Summentabelle 203Synonym 102, 111, 171Synonymliste 460, 475Syntaxprüfung 93

3661.book Seite 651 Montag, 9. November 2015 9:47 09

Page 29: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

652

Index

Syntaxwarnung, unterdrücken 296Systemfeld 555Systemlandschaft, gemischte 269Systemoptimierung 402Systemschema 101, 121

T

Tabelle 130, 170interne 620, 621replizierte 633Tabellendefinition 103Tabelleninhalt 103Tabellenparameter 189Tabellenpuffer 120, 133, 346, 562,

587, 593Tabellenstatistik 412Tabellentyp 189Tabellenvariable 181temporäre Tabelle 254

Temporäre Tabelle 173Term Mapping 475Test 567Text Join 206Textanalyse 456, 458, 489Text-Mining 39Textsuche 458, 462Thread 379Token 462, 489Trace 351Tracing 342Transaktion

ATC 335DBACOCKPIT 154, 336, 376RSA1 444RSDD_HM_PUBLISH 443RSRT 448SAT 335, 357, 413, 420SCI 335, 343SE11 89SE80 486SFW5 488SQLM 336, 381SRTCM 390ST04 376ST05 159, 164, 165, 335, 387, 421ST12 336, 368ST22 339STAD 335, 352, 404, 411, 420

Transaktion (Forts.)STATS 356SWLT 336, 393, 415

transaktionales System 434Transport

Änderungsauftrag 267Developer Mode 263Empfehlungen 270gemischte Systemlandschaft 269logisches Transportobjekt 266Protokoll 269Synchronisation 268Transportcontainer 266

Transportcontainer 265TREX 461Trigger 171

U

UNION 298UNION ALL 299, 303Unit Test 337, 339, 405, 568Unterabfrage 140, 585Unterprogramm 144UPSERT 161

V

Validierung 109VALUE-Operator 620Variable

deklarieren 617globale 297Gültigkeitsbereich 619Session 297

Verbuchung 117Verbuchungsbaustein 144Versionshistorie 113Vertreterobjekt 273Verwendungsnachweis 95View 103, 131, 170, 203, 277

Analytic View 204, 219Attribute View 204Calculation View 204, 228Datenbank-View 145Dictionary View 243externer 249, 273, 561, 565SQL View 175

View-on-View-Muster 313

3661.book Seite 652 Montag, 9. November 2015 9:47 09

653

Index

Vorschlagsliste 457Vorwärtsnavigation 94

W

Wahrheitswert 307Währungsumrechnung

Customizing 176parametrisieren 227

Web Dynpro ABAP 486Eclipse 486Kontext 486

Werkzeuge zur PerformanceanalyseLaufzeitprüfungs-Monitor (SRTCM)

390Wertehilfe � SuchhilfeWHERE 294, 298WHERE-Klausel 571, 587White List 570Wildcard 455, 468WITH PARAMETERS 295Workprozess 117, 255

Wort-Dictionary 492Wrapper-Funktion, AFL 518

X

XS Engine 37, 98, 102, 570XS Server 60

Z

zeilenorientierte Datenablage 48Zeitdaten, generieren 217Zeitzone 556Zieldatenquelle 288, 289

Kardinalität 289Zielkardinalität 294Zugriffsfunktion 197Zugriffszeit 44

CPU-Cache 45Festplatte 44Flash-Speicher 45Hauptspeicher 45

3661.book Seite 653 Montag, 9. November 2015 9:47 09

Page 30: ABAP-Entwicklung für SAP HANA - Amazon S3 · 2018-03-26 · 5 Einbindung nativer SAP-HANA-Entwicklungsobjekte in ABAP 242 Views aus dem SAP HANA Repository in das ABAP Dictionary

Wir hoffen sehr, dass Ihnen diese Leseprobe gefallen hat. Sie dürfen sie ger-ne empfehlen und weitergeben, allerdings nur vollständig mit allen Seiten. Bitte beachten Sie, dass der Funktionsumfang dieser Leseprobe sowie ihre Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen können. Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschützt. Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag.

Teilen Sie Ihre Leseerfahrung mit uns!

Hermann Gahm ist Principal Consultant im Performance CoE der SAP Global IT Application Services.

Hermann Gahm, Thorsten Schneider, Christiaan Swanepoel, Eric Westenberger

ABAP-Entwicklung für SAP HANA653 Seiten, gebunden, 2. Auflage 2015 69,90 Euro, ISBN 978-3-8362-3661-4

www.sap-press.de/3773

Thorsten Schneider ist Produktmanager im Bereich Product & Innovation HANA Platform bei der SAP AG.

Christiaan Swanepoel arbeitet seit 2003 für die SAP AG. Aktuell ist er Product Owner im Bereich der ABAP-Entwicklungstools für Core Data Services (CDS) in Eclipse.

Dr. Eric Westenberger arbeitet seit 2005 für die SAP AG und ist aktuell als Produktmanager für SAP HANA und SAP NetWeaver tätig.

Wissen aus erster Hand.