ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm...

54
Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP ® -Entwicklung für SAP HANA ®

Transcript of ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm...

Page 1: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

Bonn � Boston

Thorsten Schneider, Eric Westenberger, Hermann Gahm

ABAP®-Entwicklung für SAP HANA®

Page 2: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

5

Auf einen Blick

TEIL I Grundlagen

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

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

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

TEIL II Einführung in die ABAP-Programmierung mit

SAP HANA

4 View-Modellierung im SAP HANA Studio ................ 161

5 Programmieroptionen in SAP HANA ........................ 217

6 Transport von Anwendungen ................................... 269

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

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

TEIL III Fortgeschrittene Techniken für die

ABAP-Programmierung auf SAP HANA

9 Textsuche und Analyse von unstrukturierten Daten ....................................................................... 379

10 Integration analytischer Funktionalität ..................... 417

11 Entscheidungstabellen in SAP HANA ........................ 449

12 Funktionsbibliotheken in SAP HANA ........................ 465

13 Beispielszenario: Entwicklung einer neuen Anwendung ............................................................. 483

14 Praxistipps ............................................................... 501

Anhang ........................................................................... 557

Page 3: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

Inhalt

7

Inhalt

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

TEIL I Grundlagen

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

1.1 Softwarekomponenten von SAP HANA ....................... 311.1.1 HANA-Datenbank .......................................... 331.1.2 SAP HANA Studio .......................................... 331.1.3 SAP HANA Client ........................................... 351.1.4 HANA-Funktionsbibliotheken ........................ 361.1.5 Software zur Replikation von Daten ............... 361.1.6 Software zur direkten Datenaufbereitung ....... 371.1.7 Lifecycle-Management-Komponenten ............ 38

1.2 Grundlagen der In-Memory-Technologie .................... 391.2.1 Hardwareinnovationen ................................... 401.2.2 Softwareinnovationen .................................... 43

1.3 Architektur der In-Memory-Datenbank ....................... 541.4 Anwendungsfälle für SAP HANA ................................. 561.5 Auswirkungen von SAP HANA auf die

Anwendungsentwicklung ............................................ 581.5.1 Neue technische Möglichkeiten ..................... 591.5.2 Code Pushdown ............................................. 601.5.3 Datenbank als Whitebox ................................ 621.5.4 Qualifizierung des Entwicklers ........................ 64

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

2.1 Eclipse im Überblick ................................................... 672.2 Die Eclipse-Strategie von SAP ..................................... 70

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

2.2.2 Zentrale Update-Seite .................................... 712.3 Installation der Entwicklungsumgebung ...................... 73

2.3.1 Installation des SAP HANA Studios ................ 73

Page 4: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

Inhalt

8

2.3.2 Installation der ABAP Development Tools for SAP NetWeaver ....................................... 75

2.4 Erste Schritte im Entwicklungssystem ......................... 762.4.1 Grundlagen von Eclipse ................................. 772.4.2 ABAP Development Tools for SAP

NetWeaver .................................................... 802.4.3 SAP HANA Studio ......................................... 90

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

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

Datenbanktreiber .......................................... 1103.1.2 Nutzung der Datenbank durch den

SAP NetWeaver AS ABAP .............................. 1133.1.3 Datentypen ................................................... 115

3.2 ABAP-Datenbankzugriff ............................................. 1213.2.1 ABAP Dictionary ........................................... 1223.2.2 Open SQL ..................................................... 1273.2.3 Datenbank-Views im ABAP Dictionary .......... 1373.2.4 Datenbankzugriff über natives SQL ................ 1383.2.5 Sekundäre Datenbankverbindungen .............. 145

3.3 Datenbankzugriffe mit dem SQL-Trace analysieren ..... 1493.3.1 Anweisungstransformationen ........................ 1493.3.2 Sekundärverbindungen .................................. 1553.3.3 Natives SQL .................................................. 1573.3.4 Puffer ............................................................ 157

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

4 View-Modellierung im SAP HANA Studio ............... 161

4.1 Attribute Views .......................................................... 1644.1.1 Grundlagen ................................................... 1654.1.2 Attribute Views anlegen ................................ 1684.1.3 Berechnete Felder ......................................... 1754.1.4 Hierarchien ................................................... 1784.1.5 Attributsichten für Zeit .................................. 1804.1.6 Laufzeitobjekte und SQL-Zugriff bei

Attribute Views ............................................. 183

Page 5: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

Inhalt

9

4.2 Analytic Views ............................................................ 1844.2.1 Grundlagen .................................................... 1854.2.2 Analytic Views anlegen .................................. 1874.2.3 Berechnete Kennzahlen .................................. 1904.2.4 Währungsumrechnung und

Einheitenkonvertierung .................................. 1914.2.5 Laufzeitobjekte und SQL-Zugriff bei

Analytic Views ............................................... 1954.3 Calculation Views ....................................................... 196

4.3.1 Grundlagen .................................................... 1974.3.2 Grafische Modellierung von Calculation

Views ............................................................. 1994.3.3 Implementierung von Calculation Views

über SQLScript ............................................... 2014.3.4 Laufzeitobjekte und SQL-Zugriff bei

Calculation Views ........................................... 2054.4 Zugriff auf Column Views über Microsoft Excel ........... 2064.5 Verwendung von SAP HANA Views in ABAP .............. 208

4.5.1 Zugriff über natives SQL ................................. 2094.5.2 Externe Views im ABAP Dictionary ................. 2104.5.3 Zugriffsmöglichkeiten auf externe Views ......... 2134.5.4 Empfehlungen ................................................ 214

5 Programmieroptionen in SAP HANA ....................... 217

5.1 SQLScript im Überblick ............................................... 2175.1.1 Qualitäten von SQLScript ............................... 2185.1.2 Verarbeitung von SQLScript ........................... 224

5.2 Implementierung von Datenbankprozeduren .............. 2255.2.1 Grundlagen von Datenbankprozeduren .......... 2255.2.2 Datenbankprozeduren anlegen ....................... 2285.2.3 Verwendung von Variablen ............................ 2385.2.4 CE-Funktionen ............................................... 2415.2.5 Imperative Erweiterungen .............................. 2515.2.6 Zugriff auf Systemfelder .................................. 2545.2.7 Fehlerbehandlung .......................................... 255

5.3 Verwendung von Prozeduren in ABAP ........................ 2575.3.1 Zugriff über natives SQL ................................. 2575.3.2 Definition von Database Procedure

Proxies ........................................................... 2645.3.3 Aufruf von Database Procedure Proxies .......... 2675.3.4 Anpassung von Database Procedure Proxies ... 268

Page 6: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

Inhalt

10

6 Transport von Anwendungen ................................... 269

6.1 Grundlagen des Transportwesens ............................... 2716.1.1 Transport im SAP NetWeaver AS ABAP ......... 2716.1.2 Transport in SAP HANA ................................. 276

6.2 Kombinierter ABAP-/SAP HANA-Transport ................ 2856.2.1 HANA-Transportcontainer ............................. 2866.2.2 Erweitertes Transportsystem .......................... 292

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

7.1 Übersicht der verfügbaren Werkzeuge ........................ 2947.2 Fehleranalyse ............................................................. 296

7.2.1 Unit Tests ...................................................... 2977.2.2 Dump-Analyse .............................................. 2997.2.3 Tracing in SQLScript ...................................... 3027.2.4 Debugging von SQLScript .............................. 303

7.3 ABAP-Code-Analyse .................................................. 3057.3.1 Prüfungen und Prüfvarianten ......................... 3057.3.2 Prüfungen in der

Entwicklungsinfrastruktur .............................. 3097.3.3 Globale Prüfläufe im System .......................... 311

7.4 Laufzeitstatistiken und Traces ..................................... 3137.4.1 Laufzeitstatistik ............................................. 3137.4.2 ABAP-Trace und ABAP Profiler ...................... 3177.4.3 SQL-Trace ..................................................... 3247.4.4 Single Transaction Analysis ............................ 3287.4.5 Explain Plan .................................................. 3307.4.6 SAP HANA Plan Visualizer ............................. 331

7.5 Systemweite SQL-Analysen ........................................ 3357.5.1 DBA-Cockpit ................................................. 3357.5.2 SQL Monitor ................................................. 339

7.6 SQL-Performanceoptimierung .................................... 343

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

8.1 Vorgehen bei der Optimierung .................................. 3488.1.1 Migration auf SAP HANA .............................. 3488.1.2 Systemoptimierung ....................................... 3508.1.3 Anwendungsoptimierung .............................. 351

8.2 Szenario und Anforderungen ...................................... 354

Page 7: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

Inhalt

11

8.2.1 Ausgangssituation .......................................... 3548.2.2 Technische Umsetzung ................................... 3568.2.3 Aktuelle Probleme ......................................... 358

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

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

Transaktion SAT ............................................. 3618.3.3 Detailanalyse der Datenbankzugriffe .............. 3638.3.4 Ergebnis der Analyse ...................................... 3658.3.5 Optimierung mit Open SQL ........................... 3658.3.6 Analyse der ersten Optimierung ..................... 3678.3.7 Ergebnis der Analyse ...................................... 3698.3.8 Optimierung mit Analytic View ...................... 3708.3.9 Analyse nach der zweiten Optimierung .......... 3718.3.10 Ergebnis der Analyse ...................................... 374

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

9 Textsuche und Analyse von unstrukturierten Daten ........................................................................ 379

9.1 Grundlagen der Textsuche in SAP HANA .................... 3819.1.1 Technische Architektur ................................... 3829.1.2 Fehlertolerante Suche .................................... 3839.1.3 SAP-Komponenten und Produkte für die

Suche ............................................................. 3859.2 Text-Datentypen und Full-Text-Indizes in

SAP HANA .................................................................. 3869.3 Verwendung der Textsuche über SQL ......................... 391

9.3.1 Fuzzy-Suche ................................................... 3939.3.2 Synonyme und Stoppwörter ........................... 3979.3.3 Suche über Datumsfelder und Adressdaten .... 400

9.4 Einsatz der Textsuche in ABAP .................................... 4039.4.1 Aufruf der Textsuche via SQL aus ABAP ......... 4039.4.2 Frei definierte Wertehilfen ............................. 404

9.5 Textanalyse ................................................................. 4119.6 Ressourcenverbrauch und Laufzeitaspekte

der Textsuche ............................................................. 413

Page 8: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

Inhalt

12

10 Integration analytischer Funktionalität ................... 417

10.1 Einführung ................................................................. 41710.1.1 Was ist analytische Funktionalität? ................ 41810.1.2 Exkurs: SAP NetWeaver Business

Warehouse .................................................... 42110.2 Mögliche Architekturen im Überblick ......................... 423

10.2.1 Direkter Zugriff auf analytische Funktionalität in SAP HANA .......................... 424

10.2.2 Zugriff über den SAP NetWeaver AS ABAP .... 42910.3 Ausgewählte Technologien und Werkzeuge ............... 433

10.3.1 InfoProvider bei Nutzung von SAP HANA ...... 43410.3.2 SAP BusinessObjects-Portfolio ....................... 44110.3.3 Easy-Query-Schnittstelle ................................ 445

10.4 Benutzeroberflächenbausteine ................................... 447

11 Entscheidungstabellen in SAP HANA ...................... 449

11.1 Grundlagen von Entscheidungstabellen ...................... 45011.2 Anlegen von Entscheidungstabellen im SAP HANA

Studio ........................................................................ 45311.3 Entscheidungstabellen basierend auf SAP HANA

Views ......................................................................... 45811.4 Laufzeitobjekte und SQL-Zugriff für

Entscheidungstabellen ............................................... 46111.5 Zugriff auf Entscheidungstabellen aus ABAP ............... 462

12 Funktionsbibliotheken in SAP HANA ...................... 465

12.1 Grundlagen der Application Function Library ............. 46812.1.1 Technische Grundlagen ................................. 46812.1.2 Business Function Library .............................. 46912.1.3 Predictive Analysis Library ............................. 471

12.2 Nutzung von Application-Function-Library-Funktionen in SQLScript ............................................ 475

12.3 Einbindung der Funktionsbibliotheken in ABAP ......... 480

13 Beispielszenario: Entwicklung einer neuen Anwendung .............................................................. 483

13.1 Szenario und Anforderungen ...................................... 48313.2 Anwendungsdesign .................................................... 484

13.2.1 Verwaltung der Rabatte durch den Reisevermittler .............................................. 485

Page 9: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

Inhalt

13

13.2.2 Zusätzliche Auswertungen über eine Sidepanel-Anwendung ................................... 486

13.2.3 Mobile Anwendung für den Flugpassagier ...... 48813.3 Implementierung der Anwendung .............................. 490

13.3.1 SAP HANA Views und Prozeduren ................. 49013.3.2 Kern der ABAP-Anwendung ........................... 49213.3.3 Benutzeroberflächen ...................................... 494

13.4 Nutzung der Anwendungen ........................................ 499

14 Praxistipps ............................................................... 501

14.1 Allgemeine Empfehlungen .......................................... 50214.1.1 Empfehlungen zu Column und Row Store ...... 50214.1.2 HANA-spezifische Implementierungen ........... 50314.1.3 Checkliste für datenbankspezifische

Implementierungen ........................................ 50514.1.4 Empfehlungen zur Migration .......................... 50714.1.5 Entwicklung in Landschaften .......................... 51014.1.6 Schreibende Zugriffe in SQLScript oder

nativem SQL .................................................. 51114.2 Konventionen ............................................................. 513

14.2.1 Namenskonventionen .................................... 51414.2.2 Kapselung von Paketen .................................. 515

14.3 Qualitätsaspekte ......................................................... 51614.3.1 Testen von Views und Prozeduren ................. 51614.3.2 Robuste Programmierung ............................... 51714.3.3 Sicherheitsaspekte .......................................... 518

14.4 Performanceempfehlungen für Open SQL ................... 52014.4.1 Regel 1: Ergebnismengen klein halten ............ 52014.4.2 Regel 2: Übertragene Datenmengen klein

halten ............................................................ 52414.4.3 Regel 3: Anzahl der Anfragen reduzieren ........ 53014.4.4 Regel 4: Suchaufwand minimieren ................. 53714.4.5 Regel 5: Datenbank entlasten ......................... 54014.4.6 Zusammenfassung der Regeln ........................ 545

14.5 Performanceempfehlungen für native Implementierungen in SAP HANA .............................. 54614.5.1 Empfehlungen für natives SQL ....................... 54614.5.2 Empfehlungen für SAP HANA Views .............. 54814.5.3 Empfehlungen für SQLScript .......................... 551

14.6 Zusammenfassung der Empfehlungen ......................... 553

Page 10: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

Inhalt

14

Anhang ........................................................................... 557

A Flugdatenmodell .................................................................. 559A.1 Grundlagen des Flugdatenmodells ............................. 559A.2 Datenbanktabellen des Flugdatenmodells .................. 560

A.2.1 Customizing .................................................. 560A.2.2 Stammdaten .................................................. 561A.2.3 Bewegungsdaten ........................................... 562A.2.4 Design des SFLIGHT-Datenmodells ............... 564

A.3 Datengenerierung ...................................................... 565B Neuerungen in ABAP in SAP NetWeaver 7.4 ........................ 567

B.1 Inline-Deklarationen .................................................. 567B.2 Konstruktor-Ausdrücke .............................................. 569B.3 Interne Tabellen ......................................................... 571

C Lese- und Schreibzugriffe im Column Store ........................... 573C.1 Grundlagen ................................................................ 573C.2 Lesezugriff ohne Index ............................................... 574C.3 Schreibzugriff ohne Index ........................................... 576C.4 Lesezugriffe mit Index ................................................ 579

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

E Installation der Beispiele ...................................................... 587F Die Autoren ......................................................................... 589

Index ........................................................................................... 591

Page 11: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

19

Einleitung

Die heutige Geschäftswelt ist sehr dynamisch und stetigen Verände-rungen unterworfen, wodurch ein starker Innovationsdruck für Unternehmen entsteht. Die Vision von SAP HANA ist es, eine Platt-form zu bieten, mit der alle Geschäftsprozesse in der Wertschöp-fungskette eines Unternehmens in Echtzeit beeinflusst werden kön-nen. Doch was bedeutet der zentrale Begriff »Echtzeit« (Realtime) für betriebswirtschaftliche Anwendungen?

Technologisch bezeichnet man damit vor allem die Verfügbarkeit benötigter Funktionalität ohne unerwünschte Verzögerungen. Welche Funktionen man benötigt und welches Maß an Verzögerung akzep-tiert wird, hängt stark vom Umfeld und von der Zeit ab, in denen eine Technologie eingesetzt wird. Bevor wir auf aktuelle Software zur Unternehmenssteuerung näher eingehen, wollen wir Ihnen dies mit einem Beispiel aus dem täglichen Leben veranschaulichen: der Tele-kommunikation.

Beispiel: Echtzeit in der Telekommu-nikation

Frühe Kommunikationsmöglichkeiten wie etwa die Telegraphie obla-gen in der Nutzung starken Einschränkungen (Reichweite, Verfügbar-keit, manuelle Aufwände), bedeuteten in ihrer Zeit jedoch eine immense Beschleunigung für den Nachrichtenaustausch. Das Telefon erlaubte flexible Verbindungen zwischen Teilnehmern über große Strecken, auch hier musste der Verwender dieser Technologie jedoch verschiedene Verzögerungen einberechnen. Zu Beginn war etwa ein manueller Verbindungsaufbau über eine Vermittlung notwendig. Auch später gab es lange Zeit gerade bei Überseeverbindungen deut-liche Latenzen, die ein Gespräch beeinflusst und verkompliziert ha-ben. Heute hingegen sind Telefonverbindungen zwischen Anschlüs-sen fast überall auf der Welt ohne merkliche Verzögerung möglich. Jeder Evolutionssprung war mit einer deutlichen Verbesserung der Echtzeitqualitäten verbunden.

Neben einem (synchronen) Gespräch zwischen zwei Personen haben in der Geschichte immer auch asynchrone Formen der Kommunika-tion eine Rolle gespielt (z. B. über den Briefweg). Der Begriff Echtzeithat in diesem Zusammenhang einen anderen Charakter, da weder

Page 12: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

20

Einleitung

Sender noch Empfänger aktiv warten müssen. Aber auch bei der asynchronen Kommunikation sind gerade durch das Internet und den Mobilfunk in den letzten Jahren viele neue Varianten hinzuge-kommen (E-Mail, SMS etc.), die im Vergleich zur Briefpost eine neue Dimension von Echtzeitkommunikation zwischen mehreren Perso-nen ermöglichen. Zusätzlich gibt es auch immer mehr nicht mensch-liche Kommunikationsteilnehmer (z. B. Geräte mit Internetanschluss, sogenannte Smart Devices, wie etwa intelligente Stromzähler).

Vermutlich würden die meisten Menschen bestätigen, dass elektroni-sche Kommunikation in Echtzeit heute verfügbar ist. Dennoch gibt es im täglichen Leben noch Anforderungen, die trotz des Technolo-giefortschritts nicht in Echtzeit umsetzbar sind, etwa die Umbuchung eines Anschlussfluges während einer Reise. Viele Szenarien, die wir uns heute noch nicht vorstellen können, werden vermutlich in der Zukunft so verbreitet sein, dass heutige akzeptierte Einschränkungen absolut inakzeptabel werden.

Echtzeit in der Betriebswirtschaft

Aus dem Beispiel der Telekommunikationstechnologie lassen sich einige Grundsätze ableiten, die sich auch auf betriebswirtschaftliche Software übertragen lassen. Auf der einen Seite gibt es gesellschaftli-che und wirtschaftliche Entwicklungen, wie die Globalisierung und zunehmende Mobilität der Kunden und Belegschaft, die treibende Kräfte für neuartige Technologien sind. Unternehmen agieren welt-weit und interagieren in komplexen Netzwerken. Kunden und Mitar-beiter erwarten einen Zugang zu Produkten und Services jederzeit und von jedem Ort der Welt.

Auf der anderen Seite stehen technologische Innovationen, die neue Wege aufzeigen. Das Internet ist aktuell ein Katalysator für die meis-ten Entwicklungen. Riesige Datenmengen sind damit für einen gro-ßen Teil der Weltbevölkerung gleichzeitig, in Echtzeit, zugreifbar. Das Internet bietet aber auch eine Plattform für den Vertrieb von Produk-ten und Dienstleistungen aller Art, was zu einer explosionsartigen Zunahme der an einem Tag abgeschlossenen Geschäftstransaktionen geführt hat. Jede Optimierung der involvierten Geschäftsprozesse (z. B. Beschaffung, Produktion, Abrechnung etc.) kann einen riesigen Wettbewerbsvorteil bedeuten. Hier gibt es in den meisten Branchen großes Potenzial, das gerade durch eine bessere Verzahnung von ope-rativer Planung und Steuerung in Echtzeit ausgeschöpft werden kann.

Page 13: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

21

Einleitung

Darüber hinaus erwarten Kunden heute einen stärkeren Zuschnitt der angebotenen Produkte und Dienstleistungen auf ihre individuel-len Wünsche (z. B. persönliche Konditionen). Gerade in Branchen, die starken Veränderungen unterworfen sind (etwa die Energiewirt-schaft, Finanzdienstleister oder spezielle Einzelhandelsbranchen), sehen sich Unternehmen einem hohen Handlungsdruck ausgesetzt.

Echtzeit bei SAPDer Begriff Echtzeit prägt die Evolution von 40 Jahren SAP-Software. Bereits im Namen der klassischen SAP-Produktschiene R/3 steht der Buchstabe »R« bekanntlich für Realtime. Die anfänglichen Konzepte der SAP in den 1970er-Jahren, aus denen die Entwicklung von R/1 hervorging, erlaubten es, Geschäftsdaten strukturiert per Eingabe am Bildschirm zu erfassen, was gegenüber älteren Lochkartensystemen eine neue Qualität von Echtzeit bot. Damit ließen sich zunächst Pro-zesse wie Lohnabrechnung und Buchhaltung elektronisch abbilden und automatisieren. Mit SAP R/2, das auf einer Architektur für Groß-rechner (Mainframes) basierte, fügte SAP diesen Anwendungsberei-chen weitere Module eines ERP-Systems (Enterprise Resource Plan-ning) wie etwa die Materialwirtschaft hinzu. Mit diesem Release wurde ABAP als Berichtsprache für Auswertungen eingeführt (ABAP stand ursprünglich für Allgemeiner Berichtsaufbereitungsprozessor, die Abkürzung wurde jedoch später von SAP zu Advanced Business Appli-cation Programming umgedeutet). Mit diesen ABAP-Berichten (Re-ports) konnte – zunächst nur im Hintergrund (Batch), später auch im Dialog – z. B. eine nach Kunden gefilterte Auflistung von Bestellungen mit ersten Drill-down-Möglichkeiten zu den Einzelposten erstellt wer-den.

Vor allem durch die Client-Server-Architektur und die damit verbun-denen Möglichkeiten zur Skalierung in SAP R/3 konnten SAP-Anwendungen einer großen Zahl von Anwendern im Unternehmen zugänglich gemacht werden. In Kombination mit der konsequenten Nutzung eines Datenbanksystems und der stetig wachsenden Zahl von Standardimplementierungen für Geschäftsprozesse hat SAP-Soft-ware damit die IT-Infrastruktur vieler großer Unternehmen durch-drungen. Im Ergebnis war es möglich, transaktionale Prozesse in Echtzeit durch ein integriertes System zu unterstützen (z. B. einen Just-in-Time-Produktionsprozess).

Bedeutung von Business Intelligence

Parallel zu diesen Entwicklungen hat im Laufe der letzten 20 Jahre die Bedeutung von Auswertungen der laufenden Geschäftsprozesse

Page 14: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

22

Einleitung

mit dem Ziel, Erkenntnisse für bessere operative und strategische Entscheidungen zu gewinnen, stetig zugenommen. Im Rahmen die-ses Business-Intelligence-Trends hat sich allerdings gezeigt, dass es in vielen Situationen technisch nicht praktikabel ist, die notwendigen Analysen integriert im gleichen System durchzuführen, das den Ablauf der Geschäftsprozesse stützt. Die parallele Verarbeitung von Analysen und Transaktionen auf riesigen Datenmengen hat die meis-ten Systeme überlastet, wobei sich vor allem die Datenbank als limi-tierender Faktor herausgestellt hat. Dies war für SAP einer der Gründe für die Schaffung eines spezialisierten Systems für analyti-sche Szenarien, das Sie unter dem aktuellen Namen SAP NetWeaverBusiness Warehouse (BW) kennen. Neben neuen Möglichkeiten zur Datenkonsolidierung aus mehreren Systemen und der Integration externer Datenquellen ist die Nutzung des Data-Warehouse-Systems für operative Szenarien leider mit Verlusten bei der Datenverarbei-tung in Echtzeit verbunden. Daten müssen zunächst extrahiert und repliziert werden, und in der Praxis kann es dadurch zu einem Zeit-versatz von mehreren Stunden bis zu einer Woche kommen, bis die aktuellen Daten an der richtigen Stelle verfügbar sind. Genau an die-ser Stelle setzt SAP mit SAP HANA an: Niemand soll mehr auf eine für eine Geschäftsentscheidung wichtige Information warten müssen.

SAP HANA als Datenbank

SAP bezeichnet daher SAP HANA gerne als Plattform für das Daten-management in Echtzeit. Dabei ist SAP HANA zunächst eine vollwer-tige Datenbank für Geschäftstransaktionen (Online Transaktion Pro-cessing, OLTP) und Reporting (Online Analytical Processing, OLAP). Sie macht es über die Kombination von In-Memory-Technologie und spaltenorientierter Ablage möglich, beide Szenarien zu optimieren. In einem ersten Schritt wurde SAP HANA für die Beschleunigung selektiver Prozesse und Analysen als sogenanntes Side-by-Side-Szena-rio (also neben einer vorhandenen traditionellen Datenbank) einge-setzt und bald darauf als neue Datenbank für SAP NetWeaver BW 7.3 unterstützt. Damit zeigte SAP, dass SAP HANA nicht nur analytische Szenarien beschleunigt, sondern auch als primäre Datenbank eines SAP NetWeaver-Systems einsetzbar ist. Mit der Ankündigung der SAP Business Suite powered by SAP HANA ist es für Kunden nun auch möglich, von der HANA-Technologie im Rahmen der SAP-Standard-anwendungen voll zu profitieren. Das dieser Konstellation zugrunde liegende neue SAP NetWeaver-Release 7.4 (vor allem SAP NetWeaver Application Server (AS) ABAP 7.4) wird daher im Rahmen dieses

Page 15: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

23

Einleitung

Buches eine wichtige Rolle spielen, und die Beispielprogramme in diesem Buch setzen ABAP 7.4 voraus. Wir werden jedoch stets darauf hinweisen, welche Funktionen Sie auch mit niedrigeren SAP Net-Weaver-Releases verwenden können. Zu ABAP 7.4 gibt es eine Cloud-basierte Trial-Version auf SAP HANA, zu der Sie nähere Infor-mationen in Anhang E, »Installation der Beispiele«, finden.

SAP HANA als Plattform

Darüber hinaus bietet SAP HANA viele weitere Funktionen, die über den üblichen Funktionsumfang einer Datenbank hinausgehen. Dazu gehören vor allem umfassende Funktionen zum Datenmanagement (Replikation, Extraktion – Transformation – Laden (ETL) etc.) und zur Datenanalyse (z. B. Data Mining mithilfe von Textsuche und PredictiveAnalysis). Viele dieser Techniken und Funktionen werden nicht exklusiv von SAP HANA angeboten. Es gibt mittlerweile viele Soft-waresysteme, die Daten im Hauptspeicher verwalten oder spaltenori-entierte Darstellungen nutzen. SAP selbst hat bereits lange vor SAP HANA In-Memory-Technologien entwickelt und eingesetzt (z. B. im SAP NetWeaver BW Accelerator). Ebenso gibt es eine Vielzahl von Her-stellern (inklusive SAP selbst) von Software für die Analyse von Daten vor allem im Kontext von Business-Intelligence- und Information-Management-Lösungen. Ein wesentlicher Vorteil von SAP HANA ist es, diese Funktionalität im selben System anzubieten, in dem auch die Geschäftstransaktionen laufen. Wenn Sie etwa die SAP Business Suite auf SAP HANA betreiben, stehen Ihnen diese erweiterten Funktionen direkt und ohne Extraktion der Daten zur Verfügung. Mehr noch: Da SAP HANA die wesentlichen Datenstrukturen der SAP Business Suite kennt, gibt es für einige Standardoperationen (wie etwa Währungs-umrechnung) bereits eingebaute Funktionen.

ABAP-Entwicklung auf SAP HANA

Was bedeutet SAP HANA nun also für die SAP-Standardanwendun-gen, die auf dem ABAP-Anwendungsserver laufen? Was ändert sich in der ABAP-Programmierung? Welche neuen Möglichkeiten eröff-net SAP HANA für ABAP-basierte Lösungen? Diese drei Fragestellun-gen stellen wir in diesem Buch in den Mittelpunkt, wobei wir die technischen Hintergründe und Gedankenmodelle stets anhand von Beispielen erläutern werden und Ihnen nicht ausschließlich die Tech-niken in den neuen Werkzeugen und Frameworks vorstellen möch-ten. Wir fokussieren uns vor allem auf grundlegende Funktionen der ABAP-Entwicklung und den Datenbankzugriff mit ABAP. Existie-rende oder geplante Unterstützungen für SAP HANA in ABAP-basier-ten Frameworks stellen wir Ihnen in Überblicksform oder als Ausblick

Page 16: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

24

Einleitung

vor, da eine ausführliche Beschreibung in der Regel eine Einführung in die Funktionsweise dieser Komponenten erfordern würde (Bei-spiele sind etwa Embedded Search und BRFplus). Als Benutzeroberflä-chen verwenden wir in den Beispielen dieses Buches zumeist einfa-che ABAP-Reports, erstellen in zwei ausführlichen Beispielen jedoch auch webbasierte Oberflächen mit Web Dynpro ABAP und HTML5.

Aufbau des Buches – erster Teil

Wir haben uns dazu entschlossen, das Buch in drei Teile zu gliedern. Im ersten Teil, »Grundlagen«, werden wir Ihnen die Grundlagen der In-Memory-Technologie vorstellen. Sie lernen die Entwicklungs-werkzeuge kennen und können Ihre Kenntnisse der ABAP-Daten-bankprogrammierung auffrischen. Wir beginnen in Kapitel 1, »SAP HANA im Überblick«, mit einer Übersicht über die Komponenten von SAP HANA und die möglichen Einsatzszenarien im Zusammen-spiel mit ABAP. Danach gehen wir mit Ihnen in Kapitel 2, »Einfüh-rung in die Entwicklungsumgebung«, die ersten Schritte in der Ent-wicklungsumgebung, bestehend aus dem SAP HANA Studio und den ABAP Development Tools for SAP NetWeaver (auch bekannt als ABAP in Eclipse). Der Inhalt von Kapitel 3, »Datenbankprogrammie-rung mit dem SAP NetWeaver AS ABAP«, dreht sich um den Zugriff auf die HANA-Datenbank aus ABAP-Programmen mithilfe von Open SQL und Native SQL.

Zweiter Teil Im zweiten Teil des Buches, »Einführung in die ABAP-Programmie-rung mit SAP HANA«, lernen Sie, wie Sie effizient Teile einer ABAP-Anwendung (z. B. gewisse Berechnungen) in SAP HANA verlagern und damit deutliche Performancegewinne erzielen können. Der Fokus liegt dabei auf der Programmierung und Modellierung in SAP HANA und dem Zugriff aus ABAP-Programmen. Zunächst gehen wir in Kapitel 4, »View-Modellierung im SAP HANA Studio«, auf die ver-schiedenen Möglichkeiten zur Erstellung von Datensichten ein, über die Sie Berechnungen und Analysen auf ABAP-Tabelleninhalten durchführen können. Danach lernen Sie in Kapitel 5, »Programmier-optionen in SAP HANA«, SQLScript als Programmiersprache für Datenbankprozeduren in SAP HANA und den Zugriff auf diese Proze-duren mit ABAP kennen. In Kapitel 6, »Transport von Anwendun-gen«, erklären wir Ihnen, wie Sie ABAP-Entwicklungsobjekte und Objekte im SAP HANA Repository gemeinsam transportieren kön-nen. Zusammen mit den Werkzeugen in Kapitel 7, »Laufzeit- und Fehleranalyse auf SAP HANA«, steht Ihnen damit das grundlegende Handwerkszeug zur Verfügung, das Sie aus unserer Sicht als ABAP-

Page 17: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

25

Einleitung

Entwickler im Kontext von SAP HANA kennen sollten. Zum Abschluss des zweiten Teils setzen wir in Kapitel 8, »Beispielszena-rio: Optimierung einer bestehenden Anwendung«, die vorgestellten Techniken und Werkzeuge ein, um eine existierende ABAP-Imple-mentierung schrittweise für SAP HANA zu optimieren.

Dritter TeilIm dritten Teil des Buches, »Fortgeschrittene Techniken für die ABAP-Programmierung auf SAP HANA«, stellen wir Ihnen einige umfassen-dere Funktionen in SAP HANA vor, die in der klassischen ABAP-Ent-wicklung nicht zur Verfügung stehen. Die Kapitel des dritten Teils set-zen dabei auf den Inhalten des zweiten Teils auf, sind aber voneinander unabhängig lesbar. Wir beginnen in Kapitel 9, »Textsu-che und Analyse von unstrukturierten Daten«, mit der Nutzung der Fuzzy-Suche in SAP HANA und zeigen Ihnen, wie Sie damit z. B. Wer-tehilfen innerhalb einer ABAP-Anwendung verbessern können. Danach stellen wir in Kapitel 10, »Integration analytischer Funktio-nalität«, die Fähigkeiten der eingebetteten SAP NetWeaver BW-Tech-nologie im Zusammenspiel mit ABAP-Entwicklungen auf SAP HANA und existierenden Business-Intelligence-Produkten von SAP vor. Mit-hilfe von Entscheidungstabellen in SAP HANA, deren Verwendung wir in Kapitel 11, »Entscheidungstabellen in SAP HANA«, vorstellen, können Sie Teile einer Anwendung über Regeln flexibel gestalten. Als letztes Element zeigen wir Ihnen in Kapitel 12, »Funktionsbibliothe-ken in SAP HANA«, wie Sie z. B. statistische Funktionen für Vorher-sagen (Predictive Analysis) in eine ABAP-Anwendung einbinden kön-nen. Schließlich erstellen wir in Kapitel 13, »Beispielszenario: Entwicklung einer neuen Anwendung«, eine kleine Beispielanwen-dung, die die Innovationen von SAP HANA mit ABAP-Transaktionen verbindet. Zum Abschluss des Buches werden wir in Kapitel 14, »Pra-xistipps«, unsere Empfehlungen für die Optimierung und Neuent-wicklung von ABAP-Anwendungen auf SAP HANA übersichtlich zusammenstellen.

Einsatz neuer Techniken

Wie Sie bei der Lektüre merken werden, bietet die HANA-Plattform ein großes Spektrum an Möglichkeiten. Nicht alle vorgestellten Ele-mente müssen Sie zwingend in ABAP-Eigenentwicklungen auf SAP HANA einsetzen. Für manche der neuartigen Funktionen ist aktuell der Einsatz von Low-Level-Techniken im ABAP-Anwendungsserver (z. B. natives SQL) notwendig, die Sie in der Vergangenheit mögli-cherweise eher selten genutzt haben. Wir sind aber davon überzeugt, dass gerade in der Nutzung der neuen Möglichkeiten ein großes

Page 18: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

26

Einleitung

Innovationspotenzial für Neuentwicklungen liegt, und verfolgen daher in einigen der in diesem Buch gezeigten Beispiele einen gewis-sen Pionieransatz.

Beispiel-datenmodell

Als Beispiel verwenden wir das Flugdatenmodell in SAP NetWeaver (auch SFLIGHT-Modell genannt), das die Basis vieler Schulungen, Dokumentationen und Fachbücher zu SAP ERP war und ist. Aufgrund seiner Bekanntheit lassen sich die Neuerungen und Paradigmenwech-sel, die SAP HANA mit sich bringt, anhand dieses Beispiels besonders gut erläutern. Das zugrunde liegende betriebswirtschaftliche Szena-rio (Fluggesellschaften und Reisebüros) ist auch gut geeignet, um Echtzeitaspekte zu erläutern, da die Reisebranche in den letzten Jah-ren durch Globalisierung und das Internet starken Veränderungen unterworfen gewesen ist und die Datenmengen im Zusammenhang mit Flugplänen, Buchungen und Passagieren stetig gewachsen sind.

Hinweise zur Lektüre

In diesem Buch finden Sie mehrere Orientierungshilfen, die Ihnen die Arbeit mit dem Buch erleichtern sollen.

In hervorgehobenen Informationskästen sind Inhalte zu finden, die wissenswert und hilfreich sind, aber etwas außerhalb der eigentli-chen Erläuterung stehen. Damit Sie die Informationen in den Kästen sofort einordnen können, haben wir die Kästen mit Symbolen gekennzeichnet:

Die mit diesem Symbol gekennzeichneten Tipps geben Ihnen spezi-elle Empfehlungen, die Ihnen die Arbeit erleichtern können.

In Kästen, die mit diesem Symbol gekennzeichnet sind, finden Sie Informationen zu weiterführenden Themen oder wichtigen Inhalten, die Sie sich merken sollten.

Dieses Symbol weist Sie auf Besonderheiten hin, die Sie beachten soll-ten. Es warnt Sie außerdem vor häufig gemachten Fehlern oder Pro-blemen, die auftreten können.

Beispiele, durch dieses Symbol kenntlich gemacht, weisen auf Szena-rien aus der Praxis hin und veranschaulichen die dargestellten Funk-tionen.

Wir hoffen, dass wir Ihnen mit diesem Buch ein umfassendes Werk-zeug an die Hand geben können, das Sie bei der Nutzung der HANA-Technologie in ABAP-Programmen unterstützt, und wünschen Ihnen viel Spaß bei der Lektüre.

Page 19: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

27

Einleitung

Danksagung

Wir möchten uns bei den folgenden Personen bedanken, die uns durch Diskussionen, Ratschläge und Feedback bei der Erstellung die-ses Buches unterstützt haben:

Arne Arnold, Dr. Alexander Böhm, Ingo Bräuninger, Ralf-Dietmar Dittmann, Franz Färber, Markus Fath, Dr. Hans-Dieter Frey, Boris Gebhardt, Dr. Heiko Gerwens, Dr. Jasmin Gruschke, Martin Hartig, Vishnu Prasad Hegde, Rich Heilman, Thea Hillenbrand, Dr. Harshavardhan Jegadeesan, Thomas Jung, Bernd Krannich, Dr. Willi Petri, Eric Schemer, Joachim Schmid, Sascha Schwedes, Christiaan Edward Swanepoel, Welf Walter, Jens Weiler, Stefan Weitland, Tobias Wenner, Andreas Wesselmann

Vielen Dank dafür – ohne eure Hilfe wäre dieses Buch nicht möglich gewesen.

Hermann Gahm, Thorsten Schneider, Eric Westenberger

Page 20: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

161

Mit SAP HANA ist es möglich, betriebswirtschaftliche Berech-nungen direkt auf den Originaldaten im Hauptspeicher ohne Transformationen durchzuführen. Viele solcher Berechnungen lassen sich als spezielle Datensichten (Views) über das SAP HANA Studio grafisch modellieren, ohne Programmcode schreiben zu müssen. Diese Views können mit ABAP 7.4 in das ABAP Dictionary importiert werden.

4 View-Modellierung im SAP HANA Studio

In diesem Kapitel beschäftigen wir uns mit dem Thema Datensichten (Views). Vielleicht fragen Sie sich, wieso gerade dieses Thema eine so große Rolle bei SAP HANA spielt. Lassen Sie uns kurz ausholen und das zugrundeliegende Konzept erklären.

Geschäftsdaten einer Domäne werden (meist in einer normalisierten Form) in einem Satz von über Fremschlüsselbeziehungen verbunde-nen Datenbanktabellen abgelegt (ein sogenanntes Entity-Relationship-Modell). Dieses Datenmodell erlaubt ein effizientes und einfaches Anlegen und Auslesen von Einzelsätzen. Sobald aber Datenzugriffe dynamischer und komplexer werden oder gewisse Formen von Aus-wertungen oder Prüfungen gemacht werden sollen, ist eine Transfor-mation der Daten notwendig.

Für diese Transformation hat sich in der Vergangenheit vor allem fol-gendes Muster entwickelt: Es werden zunächst Daten von der Daten-bank gelesen, anschließend werden über ein Programm Berechnun-gen durchgeführt, und schließlich wird das Ergebnis wieder in der Datenbank gespeichert. Man spricht dabei von Materialisierung der transformierten Daten.

Ein einfaches Beispiel ist die Materialisierung von Summenberech-nungen in einer speziellen Spalte oder Summentabelle. Auch die Datenstrukturen eines Business-Intelligence-Systems, in dem die ur-sprünglichen Daten in eine für Analysezwecke effizientere Form

Page 21: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

162

View-Modellierung im SAP HANA Studio4

(Sternschema) gebracht werden, folgen im Prinzip diesem Muster. Die Hauptmotivation für diese Materialisierung war dabei stets Per-formance, da es in der Vergangenheit keine Möglichkeit gab, die Transformationen bei einer Anfrage eines Anwenders zur Laufzeit onthe fly durchzuführen. Der Preis für die verbesserte Performance waren dabei jedoch eine erhöhte Komplexität und der Verlust von Echtzeitqualitäten, da die verschiedenen Datenstrukturen synchroni-siert werden müssen, was in der Regel mit einem Zeitversatz ge-schieht. Es ist eines der zentralen Versprechen von SAP HANA, dass Sie in vielen Szenarien auf diese Redundanz verzichten können. Tech-nisch bedeutet das, dass Sie die Transformationen direkt auf den Ori-ginaldaten in Echtzeit durchführen können. Datensichten sind dabei ein wesentliches Element, um Transformationen für Lesezugriffe aus-zudrücken.

SQL Views In jedem relationalen Datenbanksystem gibt es eine Möglichkeit, Views zu definieren. Diese Standard-Views, oder auch SQL Views, werden im Datenbankkatalog über die Anweisung CREATE VIEW als eine Art Alias für eine SQL-Abfrage definiert:

CREATE VIEW <Name> AS SELECT <SQL Abfrage>

SQL Views werden selbstverständlich auch in SAP HANA unterstützt und unterscheiden sich dabei von denen anderer Datenbanken nur durch den HANA-spezifischen SQL-Dialekt.

Column Views Neben diesen SQL Views unterstützt SAP HANA auch sogenannte Column Views, die neben einer in der Regel besseren Performance auch einen deutlich größeren Funktionsumfang bieten und bei Abfra-gen von den in Abschnitt 1.3, »Architektur der In-Memory-Daten-bank«, vorgestellten Engines Gebrauch machen. Als Beispiel für eine solche Funktionalität, die nicht direkt über SQL verfügbar ist, können Sie sich eine Währungsumrechnung von Geldbeträgen vorstellen. Die Verwendung von Column Views setzt dabei voraus, dass alle ver-wendeten Tabellen im Column Store in SAP HANA abgelegt sind, was der Standard für praktisch alle Geschäftsdaten sein sollte (siehe auch Kapitel 14, »Praxistipps«). Im SAP HANA Studio finden Sie sowohl die vorhandenen SQL Views als auch die Column Views im Daten-bankkatalog (siehe Abbildung 4.1).

In Abschnitt 3.2.2, »Open SQL«, haben Sie gesehen, wie sich einfache Vorschriften wie etwa Summation oder Existenzprüfungen mithilfe

Page 22: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

163

View-Modellierung im SAP HANA Studio 4

von Open SQL ausdrücken lassen. Kennzahlen in realen Geschäftsan-wendungen sind aber in der Regel deutlich komplizierter. Zum Bei-spiel spielen Einheiten und Währungen eine wesentliche Rolle, die bei mathematischen Operationen etwa durch den Einsatz von Kon-vertierungen beachtet werden müssen. Ebenso sind Zeitstempel (Tag, Uhrzeit) für Geschäftsprozesse von fundamentaler Bedeutung – inklusive der fiskalisch korrekten Behandlung von (Geschäfts-)Jahr bzw. Monat oder Quartal.

Abbildung 4.1 SQL Views und Column Views im Datenbankkatalog

Bei diesen Operationen stößt der normale SQL-basierte Zugriff auf Tabellen an seine Grenzen. Hier kommt nun eine der wesentlichen Stärken von SAP HANA zum Einsatz: die integrierten Engines (siehe Abschnitt 1.3, »Architektur der In-Memory-Datenbank«) bieten wie-derverwendbare und auf Unternehmensprozesse zugeschnittene Funktionen, die sich in Column Views einbinden lassen und auf die von außen wiederum über herkömmliches SQL zugegriffen werden kann. Column Views bieten damit also eine Erweiterung des Funkti-onsumfangs zur Definition von Datensichten.

Referenzbeispiel für dieses Kapitel

Im Rahmen dieses Kapitels werden wir basierend auf dem SFLIGHT-Datenmodell relativ einfache Analysen von Flugbuchungen und Sitz-platzauslastung von Flügen erstellen. Dabei sollen neben einigen Stammdaten einer Flugverbindung (Fluggesellschaft, Abflug- und Zielort) pro Quartal gewisse statistische Informationen zu Sitz-platzauslastung, Einnahmen und Reisegepäck ausgewiesen werden. Für die Realisierung werden wir die verschiedenen Modellierungsop-tionen von SAP HANA verwenden und Ihnen deren Eigenschaften und Einsatzgebiete vorstellen.

Page 23: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

164

View-Modellierung im SAP HANA Studio4

View-Typen Wir gehen dabei auf folgende Arten von Views ein:

� Attribute Views zur Definition von Sichten auf Stammdaten (siehe Abschnitt 4.1). Wir stellen Ihnen die verschiedenen Möglichkeiten zum Join von Tabellen vor und erklären, wie Sie berechnete Attri-bute in eine Sicht aufnehmen können.

� Analytic Views erlauben Berechnungen und Analysen auf Bewe-gungsdaten, basierend auf einem Sternschema (siehe Abschnitt 4.2).Wir erklären Ihnen, wie Sie einfache und berechnete Kennzahlen definieren und Dimensionen hinzufügen. Als Spezialfälle von berechneten Kennzahlen werden Sie Währungsumrechnungen und Einheitenkonvertierungen kennenlernen.

� Calculation Views erlauben eine freie Kombination von Views und elementaren Operationen auf Daten (siehe Abschnitt 4.3). Wir stellen Ihnen sowohl die Modellierung als auch die Implementie-rung von Calculation Views mit SQLScript vor. Wir beschränken uns dabei in diesem Kapitel auf eine sehr einfache Implementie-rung, da wir Ihnen SQLScript erst im Rahmen von Kapitel 5, »Pro-grammieroptionen in SAP HANA«, ausführlich vorstellen werden.

Nachdem wir Ihnen gezeigt haben, wie Sie diese Views im SAP HANA Studio definieren und testen können, gehen wir auf den externen Zugriff ein. Wir zeigen Ihnen dabei zunächst den Zugriff aus Micro-soft Excel, der für erste Tests und Analysen eine einfache Möglichkeit darstellt.

Der restliche Teils des Kapitels beschäftigt sich mit dem Zugriff aus ABAP auf diese Views. Wir zeigen Ihnen dabei sowohl den nativen Zugriff über ABAP Database Connectivity (ADBC), der für ABAP-Releases unterhalb von 7.4 die einzige Option ist, als auch die neuen Möglichkeiten, die Sie mit ABAP 7.4 nutzen können.

4.1 Attribute Views

Übersicht und Einsatzszenarien

Attributsichten (Attribute Views) bestehen aus einer Menge von Fel-dern (Spalten) aus Datenbanktabellen, die durch Fremdschlüsselbe-ziehungen in Relation stehen. Darüber hinaus bieten Attribute Views Möglichkeiten zur Definition von berechneten Spalten und hierarchi-schen Beziehungen zwischen einzelnen Feldern (z. B. Vater-Kind-Beziehung). Sie sind vor allem in folgenden Szenarien von Bedeutung:

Page 24: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

165

Attribute Views 4.1

� Als Bauteile anderer View-Typen, insbesondere als Dimensionenvon analytischen Sichten (siehe Abschnitt 4.2, »Analytic Views«) oder allgemeiner als Knoten in berechneten Sichten (siehe Abschnitt 4.3, »Calculation Views«).

� Als Datenlieferant für eine Textsuche über mehrere Tabellen (siehe Kapitel 9, »Textsuche und Analyse von unstrukturierten Daten«).

Referenzbeispiele für diesen Abschnitt

Um die verschiedenen funktionalen Aspekte von Attribute Views zu demonstrieren, bauen wir in diesem Abschnitt mehrere solcher Views, da nicht alle Funktionen für beliebige Tabellen möglich bzw. sinnvoll sind. Damit Sie nicht den Überblick verlieren, sind in Tabel-le 4.1 die in den Beispielen dieses Abschnitts vorkommenden Views mit Namen und Beschreibungen aufgeführt.

Die Views AT_FLIGHT, AT_PASSENGER und AT_TIME_GREG werden wir in Abschnitt 4.2, »Analytic Views«, weiterverwenden.

4.1.1 Grundlagen

Join EngineBevor wir Ihnen die Modellierung von Attribute Views vorstellen, gehen wir kurz auf die wesentlichen Konzepte und Begriffe ein.

Spalte Beschreibung Funktionalität

AT_FLIGHT_BASIC einfache Sicht auf die Tabelle SFLIGHT

erstes einfaches Beispiel

AT_FLIGHT Flugdaten angereichert durch Information aus dem Flugplan und zu Fluggesellschaften

verschiedene Join-Typen und berechnete Felder

AT_MEAL Liste der auf Flügen servierten Mahlzeiten mit sprachabhän-gigem Text

Text Joins und Filterwerte

AT_PASSENGER Sicht auf Passagierdaten mit Adresse

Hierarchie

AT_FLIGHT_FISCAL Flüge mit Zuordnung zu Geschäftsperioden

fiskalischer Kalender

AT_FLIGHT_GREG Flüge mit Zuordnung zu Jahr, Quartal, Kalenderwoche

gregorianischer Kalender

AT_TIME_GREG reine Zeithierarchie (Jahr, Quartal, Kalenderwoche)

Attribute View vom Typ Time

Tabelle 4.1 Attribute-View-Beispiele in diesem Abschnitt

Page 25: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

166

View-Modellierung im SAP HANA Studio4

Einen Attribute View kann man alternativ auch als Join View bezeich-nen, da er es erlaubt, eine Sicht auf Daten aus mehreren Tabellen zu erstellen, die über verschiedene Arten von Joins zueinander in Bezie-hung gesetzt werden. Die unterschiedlichen Join-Typen stellen wir Ihnen in diesem Abschnitt vor. Da Joins bei Attribute Views die Hauptrolle spielen, werden die Zugriffe auf Attribute Views von der Join Engine in SAP HANA bearbeitet.

Wichtige Begriffe Bei der Modellierung von Attribute Views werden folgende Begriffe unterschieden:

� Attribute bezeichnen die Spalten des Attribute Views. Dabei kön-nen Sie Spalten aus einer oder mehreren physischen Tabellen aus-wählen oder zusätzlich berechnete Spalten definieren.

� Schlüsselfelder (Key Attributes) sind jene Attribute des Views, die einen Eintrag eindeutig spezifizieren und für die Verwendung als Dimensionen von Analytic Views eine Rolle spielen (siehe Abschnitt 4.2.2, »Analytic Views anlegen«).

� Filter sind Einschränkungen auf den Werten einer Spalte analog zu einer WHERE-Bedingung bei einer SELECT-Anweisung.

� Hierarchien sind Relationen auf den Attributen wie etwa eine Vater-Kind-Beziehung (siehe Abschnitt 4.1.4, »Hierarchien«).

Der wesentliche Nutzen von Attribute Views besteht darin, eine Sicht auf Felder aus mehreren Tabellen zu definieren. Im Gegensatz zu den in Abschnitt 3.2.3, »Datenbank-Views im ABAP Dictionary«, vorge-stellten Views im ABAP Dictionary, die nur Inner Joins enthalten können, können Sie bei Attribute Views in SAP HANA auf ein größe-res Spektrum von Join-Typen zurückgreifen.

Beispieldaten Bevor wir praktisch auf die Details der Join-Modellierung eingehen, möchten wir Ihnen die verschiedenen Join-Typen im SQL-Standard zunächst vorstellen. Dazu betrachten wir die bekannten Tabellen SFLIGHT (Flüge) und SCARR (Fluggesellschaften), die eine Fremd-schlüsselbeziehung über das Feld CARRID besitzen (wir klammern im in Tabelle 4.2 dargestellten Ausschnitt den Mandanten der Einfach-heit halber kurz aus). Die Tabellen haben eine n:1-Beziehung, und es kann Fluggesellschaften in Tabelle SCARR geben, für die kein Flug in der Tabelle SFLIGHT eingetragen ist (in Tabelle 4.2 z. B. die Airline »UA«).

Page 26: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

167

Attribute Views 4.1

Inner und Outer Join

Bei der Definition von Joins muss zwischen inneren und äußeren Joins unterschieden werden. Bei einem Inner Join werden alle Kom-binationen in das Resultat übernommen, wenn es in beiden Tabellen einen passenden Eintrag gibt. Bei einem Outer Join werden auch Ergebnisse übernommen, die entweder nur in der linken Tabelle (Left Outer Join), nur in der rechten (Right Outer Join) oder in einer beliebigen Tabelle (Full Outer Join) vorkommen. Links und rechts werden dabei anhand der Join-Reihenfolge unterschieden. Der Full Outer Join wird für Attribute Views nicht unterstützt.

SQL-BeispieleAnhand der folgenden SQL-Beispiele zur Selektion der Flüge und der zugehörigen Namen der Fluggesellschaften erklären wir die Unter-schiede. Das erste Beispiel enthält einen Inner Join. Da die Fluggesell-schaft »UA« nicht in der Tabelle SFLIGHT vorkommt, findet sich kein zugehöriger Eintrag in der Ergebnismenge:

select s.carrid, s.connid, c.carrname from sflight as s inner join scarr as c on s.carrid = c.carrid

Bei einem Right Outer Join, bei dem SCARR die rechte Tabelle ist, wird ein Eintrag zur Fluggesellschaft »UA« in der Ergebnismenge ausgege-ben, obwohl es in Tabelle SFLIGHT keinen zugehörigen Eintrag gibt. Die Spalten carrid und connid haben damit den Wert NULL:

select s.carrid, s.connid, c.carrname from sflight as s right outer join scarr as c on s.carrid = c.carrid

Analog ist bei einem Left Outer Join mit SCARR als linker Tabelle »UA« ebenfalls Teil der Ergebnismenge. Falls im Datenmodell sichergestellt ist, dass es zu jedem Eintrag eines Fluges eine zugehörige Fluggesell-schaft gibt (aber umgekehrt nicht notwendigerweise), sind die beiden Outer-Join-Varianten funktional äquivalent.

Tabelle SFLIGHT Tabelle SCARR

CARRID CONNID FLDATE CARRID CARRNAME

AA 0017 20130101 AA American Airlines

... ... ... ... ...

LH 400 20130101 LH Lufthansa

LH 400 20130102 ... ...

... ... ... UA United Airways

Tabelle 4.2 Beispieldaten aus den Tabellen SFLIGHT und SCARR zur Erklärung der Join-Typen

Page 27: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

168

View-Modellierung im SAP HANA Studio4

select s.carrid, s.connid, c.carrname from scarr as c left outer join sflight as s on s.carrid = c.carrid

Text Joins und Referential Joins

Neben den vorgestellten Standard-Joins werden bei der Modellie-rung von Attribute Views in SAP HANA zwei weitere spezielle Join-Typen verwendet:

� Text Joins bieten die Möglichkeit, sprachabhängige Texte aus einer anderen Tabelle zuzulesen. Dabei müssen Sie in der Texttabelle die Spalte mit dem Sprachenschlüssel ausweisen, und zur Laufzeit wird basierend auf dem Kontext auf die richtige Sprache gefiltert. Ein Beispiel für die Verwendung von Text Joins finden Sie im nächsten Abschnitt.

� Referential Joins sind eine spezielle Art der Bestimmung eines Inner Joins, wobei implizit referenzielle Integrität angenommen wird, was Vorteile bezüglich der Laufzeit bringt. Wenn also kein Feld aus der rechten Tabelle angefragt wird, wird bei einem Refer-ential Join nicht überprüft, ob es überhaupt einen passenden Ein-trag gibt. Es wird angenommen, dass die Daten konsistent sind. Der Referential Join ist in vielen Fällen ein sinnvoller Standard bei der Definition von Joins in Attribute Views.

4.1.2 Attribute Views anlegen

Attribute Views können Sie über die in Abschnitt 2.4.3, »SAP HANA Studio«, vorgestellte Perspektive Modeler im SAP HANA Studio defi-nieren. Um einen View anzulegen, wählen Sie im Kontextmenü eines Pakets im Content-Knoten New � Attribute View. Zunächst müssen Sie im in Abbildung 4.2 gezeigten Dialog einen Namen und eine Beschreibung auswählen.

Sie können in dem Dialog auch einen Attribute View als Kopie eines bereits existierenden Views anlegen. Die Auswahloption Subtype

erlaubt die Erstellung spezieller Arten von Attribute Views z. B. für Zeithierarchien, auf die wir in Abschnitt 4.1.5, »Attributsichten für

Attribute Views unterstützen nur Equi-Joins

Bei der Formulierung einer Join-Bedingung ist es in SQL möglich, neben einer Überprüfung der Gleichheit von Spalten (Equi-Join) auch andere Ausdrücke zu verwenden (z. B. <, >), wie im folgenden Beispiel:SELECT ... FROM ... [INNER|OUTER] JOIN ... ON col1 < col2 ...

Attribute Views unterstützen allerdings nur Equi-Joins.

Page 28: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

169

Attribute Views 4.1

Zeit«, eingehen. Nach einem Klick auf den Button Finish wird der Attri-bute View angelegt und der Editor für die Modellierung geöffnet.

Abbildung 4.2 Anlegen eines Attribute Views

Modellierungs- editor

Der Editor für die Definition eines Attribute Views besteht aus zwei Bereichen: Data Foundation und Semantics. Diese sind im Editor als Kästen in dem Bereich Scenario auf der linken Seite repräsentiert (siehe Abbildung 4.3). Durch Selektion des jeweiligen Knoten wech-seln Sie zwischen der Definition der Datenbasis (Data Foundation) und der semantischen Konfiguration (Semantics). In der Data Foun-

dation fügen Sie Tabellen hinzu, definieren die Joins und fügen die Attribute hinzu. In Abbildung 4.3 sehen Sie ein einfaches Beispiel, das auf der Tabelle (SFLIGHT) basiert.

Abbildung 4.3 Definition der »Data Foundation«

Page 29: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

170

View-Modellierung im SAP HANA Studio4

Metadaten definieren

Wenn Sie den Knoten Semantics auswählen, können Sie weitere Metadaten für den Attribute View pflegen. Dazu gehören die folgen-den Angaben:

� Sie können auswählen, ob ein Attribut ein Schlüsselfeld des Views ist. Beachten Sie, dass jeder Attribute View mindestens ein Schlüs-selfeld besitzen muss. Darüber hinaus können Sie für Attribute Texte (Labels) definieren oder auch Attribute verstecken, was im Kontext von berechneten Feldern sinnvoll sein kann (siehe Abschnitt 4.1.3, »Berechnete Felder«).

� Sie können die Behandlung des Mandantenfeldes festlegen (stati-scher Wert oder dynamisch). Wir kommen am Ende dieses Abschnitts auf die Details der Mandantenbehandlung zurück.

� Sie können Hierarchien definieren (siehe dazu Abschnitt 4.1.4, »Hierarchien«).

Der Aufbau des Bereichs Semantics ist in Abbildung 4.4 zu sehen.

Abbildung 4.4 Weitere semantische Konfiguration des Attribute Views

Die selektierten Spalten aus der Tabelle SFLIGHT sind als Schlüsselfel-der ausgezeichnet. Wie in Abschnitt 2.4.3, »SAP HANA Studio«, beschrieben, müssen Sie den Attribute View nun speichern und akti-vieren, um ihn verwenden zu können.

Page 30: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

171

Attribute Views 4.1

AktivierungsfehlerFalls Sie bei der Modellierung einen Fehler gemacht haben, wird ein Aktivierungsfehler ausgegeben. Typische Fehler sind das Fehlen von Schlüsselfeldern, ungültige Joins oder Fehler bei der Definition von berechneten Feldern. In Abbildung 4.5 ist ein Beispiel dargestellt. Nicht in allen Fällen ist die Ursache eines Fehlers so offensichtlich. Wir werden in Abschnitt 4.5.4, »Empfehlungen«, einige Tipps zur Fehlersuche geben.

Abbildung 4.5 Beispiel für einen Aktivierungsfehler

Hintergrundinformation: Bestimmung des Mandanten

Für jede Datenbankverbindung gibt es einen sogenannten Session-Kon-text, der gewisse Eigenschaften der aktuellen Verbindung speichert. Dazu gehört insbesondere der aktuelle Mandant, der im Falle einer Verbindung durch den SAP NetWeaver AS ABAP von der DBSL gesetzt wird. Beim Data Preview oder einer Verbindung über die SQL-Konsole im SAP HANA Stu-dio hängt der Mandant an den Benutzereinstellungen. Sie können dort für einen Benutzer einen Standardmandanten angeben. Falls dort kein Man-dant angegeben ist, gibt es keinen Mandantenkontext, und bei einem Data Preview sehen Sie alle Daten (mandantenübergreifend). Wir werden in Kapitel 5, »Programmieroptionen in SAP HANA«, detaillierter auf den Session-Kontext eingehen.

Page 31: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

172

View-Modellierung im SAP HANA Studio4

Mandanten-behandlung

Falls die verwendeten Tabellen mandantenabhängig sind, können Sie konfigurieren, ob der Mandant entweder basierend auf dem aktuel-len Kontext in die Filterbedingung eingehen soll (Dynamic Default

Client) oder nicht (cross-client). Alternativ können Sie auch einen statischen Wert für den Mandanten angeben. Wir werden Ihnen in Abschnitt 4.5.4, »Empfehlungen«, Tipps für die Verwendung geben.

View SFLIGHTS als Attribute View

Nach diesem kurzen Abriss über Join-Typen wollen wir jetzt Attri-bute Views definieren. Als erstes Beispiel möchten wir den View SFLIGHTS aus dem ABAP Dictionary, den Sie in Abschnitt 3.2.3, »Datenbank-Views im ABAP Dictionary«, schon kennengelernt haben, als Attribute View definieren. Basierend auf unserem Beispiel aus Abbildung 4.3, können wir in der Data Foundation weitere Tabellen hinzufügen. Diese Tabellen können Sie entweder manuell auswählen oder sich Tabellen basierend auf den im ABAP Dictionary gepflegten Metadaten vorschlagen lassen. Selektieren Sie dazu die Tabelle, und wählen Sie im Kontextmenü den Eintrag Propose

Tables. Daraufhin öffnet sich der Auswahldialog aus Abbildung 4.6.

Abbildung 4.6 Vorschlagswerte für die Definition von Joins

Tabellen auswählen und Joins definieren

Um den View SFLIGHTS nachzubauen, nehmen wir die Tabellen SCARR und SPFLI hinzu und definieren die Joins, wie in Abbildung

Page 32: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

173

Attribute Views 4.1

4.7 dargestellt. Um einen neuen Join zu definieren, ziehen Sie mit festgehaltener Maustaste einfach eine Verbindungslinie zwischen den korrespondierenden Attributen aus zwei Tabellen. Um die Eigen-schaften eines Joins zu definieren, müssen Sie ihn zunächst selektie-ren und können anschließend die Konfiguration über den Bereich Properties vornehmen (Join Type, Cardinality). Wir verwenden für unser Beispiel den Referential Join und wählen »n:1« als Kardinalität.

Attribute hinzufügen

Danach fügen Sie die gewünschten Attribute aus den Tabellen über das Kontextmenü der Ausgabestruktur des Views hinzu. Die ausge-wählten Attribute werden anschließend hervorgehoben und erschei-nen im Bereich Output auf der rechten Seite des Editors.

Abbildung 4.7 Attribute View analog zum DDIC View SFLIGHTS

View aktivierenDa wir die Schlüsselfelder bereits zuvor definiert haben und diese sich durch das Hinzunehmen von Tabellen nicht geändert haben, können wir den View jetzt aktivieren und testen. Das Ergebnis liefert für jeden Flug den Namen der Fluggesellschaft und Informationen zu Abflugort und Zielort (siehe Abbildung 4.8).

Page 33: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

174

View-Modellierung im SAP HANA Studio4

Abbildung 4.8 Resultat des Attribute Views

Verwendung von Text Joins

Für eine Illustration der Verwendung des erwähnten Text Joins legen wir einen weiteren Attribute View an und lesen zu den Mahlzeiten (Tabelle SMEAL) die zugehörigen Texte dazu (Tabelle SMEALT). Die not-wendige Modellierung ist in Abbildung 4.9 dargestellt. Die Kardina-lität für den Join ist stets 1:1, da ja über die Sprache gefiltert wird.

Abbildung 4.9 Verwendung eines Text Joins

Definition von Filterwerten

Wie bei normalen SQL Views können Sie auch bei Attribute Views Filterwerte für Spalten angeben. Dazu öffnen Sie für ein Attribut den Filterdialog über den Kontextmenüeintrag Apply Filter und definie-

Page 34: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

175

Attribute Views 4.1

ren den Filter. Ein Attribut mit einem vorhandenen Filter ist, wie in Abbildung 4.10 erkennbar, durch ein Filtersymbol markiert.

Abbildung 4.10 Filter für ein Attribut

Für das Beispiel mit den auf dem Flug servierten Mahlzeiten definieren wir einen Filter auf das Attribut MEAL_TYPE mit Gleichheit zu dem Wert »VE« (vegetarisch). Sie können alternativ auch andere Vergleichs-operatoren ausprobieren. Der Data Preview zeigt alle vegetarischen Mahlzeiten mit den zugehörigen Texten in der richtigen Sprache:

Abbildung 4.11 Beispiel für einen Text Join mit zusätzlichem Filter

4.1.3 Berechnete Felder

Virtuelle AttributeNachdem Sie im vorangegangenen Abschnitt gesehen haben, wie Sie über einen Attribute View Daten aus verschiedenen Tabellen unter Verwendung verschiedener Join-Typen lesen können, wollen wir

Page 35: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

176

View-Modellierung im SAP HANA Studio4

nun einen Schritt weiter gehen und Spalten des Views dynamisch berechnen lassen. Die Möglichkeit im SAP HANA Studio, solche vir-tuellen Attribute, d. h. Attribute, die nicht direkt zu einer Spalte einer der physischen Tabellen gehören, zu definieren, erlaubt im Vergleich zu klassischen ABAP-Dictionary-Views völlig neue Szenarien.

Wir wollen dem Attribute View AT_FLIGHT aus Abbildung 4.7 ein weiteres berechnetes Attribut hinzufügen, das als Wert die vollstän-dige Flugverbindung, bestehend aus Abflugort und Flughafen sowie Zielort und Flughafen, enthält: »NEW YORK (JFK) – SAN FRANCISCO (SFO)«.

Berechnetes Attribut definieren

Dazu definieren wir in der Data Foundation über den Knoten Cal-

culated Columns im Bereich Output ein berechnetes Attribut und wählen einen Namen, eine Beschreibung sowie einen Datentyp aus (siehe Abbildung 4.12).

Abbildung 4.12 Definition eines berechneten Feldes

Ausdruck für Berechnung

definieren

Über den Expression Editor können Sie einen Ausdruck hinterle-gen, der zur Bestimmung des Wertes herangezogen wird. Dabei steht

Page 36: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

177

Attribute Views 4.1

eine Vielzahl von Funktionen zur Verfügung (Konvertierungen, mathematische Operationen, Zeichenkettenoperationen, Datumsbe-rechnungen und sogar einfache Fallunterscheidungen). In unserem Beispiel beschränken wir uns zunächst auf eine einfache Verkettung von Strings (siehe Listing 4.1):

"CITYFROM" + ' (' + "AIRPFROM" + ') –

' + "CITYTO" + ' (' + "AIRPTO" + ')'

Listing 4.1 Beispiel für einen Ausdruck für ein berechnetes Feld

Ausgabe des berechneten Feldes

Nach der Aktivierung unseres Attribute Views sehen Sie die berech-nete Spalte in der Ausgabe (siehe Abbildung 4.13). Berechnete Spal-ten lassen sich über SQL genauso abfragen wie normale Spalten, was wir Ihnen in Abschnitt 4.1.6, »Laufzeitobjekte und SQL-Zugriff bei Attribute Views«, zeigen werden.

Abbildung 4.13 Ausgabe des berechneten Feldes

Attributreferenzen und Konstanten bei Ausdrücken

Bei der Definition der Ausdrücke (Expressions) für berechnete Attribute müssen Sie aufpassen, dass Sie die richtige Art von Anführungszeichen ver-wenden. Eine Referenz auf ein Attribut des Views (z. B. "CITYFROM" in Lis-ting 4.1) muss in doppelten Anführungszeichen stehen. Hier bietet sich ein Drag & Drop über den Formeleditor an. Eine Textkonstante hingegen muss in einfache Anführungszeichen gesetzt werden – wie etwa bei den Klam-mern aus Listing 4.1.

Eine falsche Verwendung der Anführungszeichen führt in der Regel zu einem Aktivierungsfehler.

Page 37: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

178

View-Modellierung im SAP HANA Studio4

Berechnete Felder werden auch für die anderen View-Typen unter-stützt (siehe auch Abschnitt 4.2, »Analytic Views«), bei denen insbe-sondere die bereits erwähnten Berechnungen und Konvertierungen für Währungen und Maßeinheiten über berechnete Felder abgebildet werden.

4.1.4 Hierarchien

In vielen Daten gibt es hierarchische Beziehungen. Der Wohnort oder der Firmensitz von Kunden ist geografisch nach Land, Region und Stadt aufgebaut, ein Anlagedatum einer Bestellung hat durch Jahr, Quartal und Monat eine hierarchische Struktur, ein Produktkatalog kann über Kategorien aufgebaut sein etc.

Datenanalysen Hierarchien spielen bei Datenanalysen eine wichtige Rolle. Sie erlau-ben es mit einer aggregierten Sicht auf die Daten einzusteigen und dann entlang der hierarchischen Struktur zu navigieren. Man spricht dabei von Drill-down (oder auch Drill-up bei der Verdichtung). Jede OLAP-Infrastruktur wie auch SAP NetWeaver BW hat eine einge-baute Unterstützung für Hierarchien.

Hierarchien in SAP HANA

Für Attribute Views können Sie Hierarchien über den Bereich Semantics

definieren. SAP HANA unterstützt derzeit zwei Arten von Hie-rarchien:

� Vater-Kind-(Parent/Child-)Beziehungen: Hier müssen Sie zwei Attribute definieren, die in einer Vater-Kind-Beziehung stehen. Ein Beispiel dafür wäre die Ablage einer Ver-zeichnisstruktur in einer Tabelle. Wichtig ist dabei, dass es sich um eine vollständige und konsistente Selbstrelation handelt. Jeder Vaterknoten muss existieren, und (bis auf einen speziellen Wurzel-knoten) muss jeder Vaterknoten selbst wieder ein Kindknoten eines anderen Knotens sein. Dies schränkt die Verwendung dieses Hierarchietyps insbesondere für ABAP-Tabellen stark ein. Als Bei-spiel können Sie sich etwa die ABAP-Pakethierarchie vorstellen, bei der die zugehörige Datenbanktabelle (TDEVC) Spalten für den Paketnamen und den Namen des Oberpakets beinhaltet. Diese Spalten bilden eine Vater-Kind-Relation.

� Gelevelte Hierarchie (Level Hierarchy): Hier definieren Sie Hierarchieebenen, basierend auf normalen oder berechneten Attributen. Wenn eine Tabelle z. B. Spalten für das Land und die Stadt enthält, definieren diese Attribute eine Hie-

Page 38: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

179

Attribute Views 4.1

rarchie aus mehreren Leveln, bestehend aus den Ländern und dar-unter den zugehörigen Städten. Die Attribute bilden auf der ande-ren Seite keine Vater-Kind-Hierarchie, denn ansonsten müssten die Werte für Städte auch als Länder auftauchen (es handelt sich nicht um eine Selbstrelation im obigen Sinne).

Hierarchie anlegenExistierende Hierarchien sehen Sie im Bereich Semantics und kön-nen von dort auch neue Hierarchien anlegen. Abbildung 4.14 zeigt eine Level-Hierarchie, basierend auf den Attributen des Abflugorts (Land, Stadt, Flughafen) aus der Tabelle SPFLI. Hierarchien können Sie hier auch für Calculation Views definieren (siehe Abschnitt 4.3).

Abbildung 4.14 Hierarchie in einem Attribute View

Sie haben verschiedene Möglichkeiten, die modellierten Hierarchien einzusetzen. Insbesondere werten die unterstützten Business-Intelli-gence-Clients diese Informationen aus. Wir zeigen Ihnen eine Vari-ante in Abschnitt 4.4, »Zugriff auf Column Views über Microsoft Excel«.

Grenzen der Hierarchieunter-stützung

SAP HANA bietet damit eine Basisunterstützung für einfache Hierar-chien, ist aber im Vergleich zu einer vollen Hierarchiemodellierung, wie es sie etwa in SAP NetWeaver BW gibt, relativ eingeschränkt. In vielen realen Szenarien sind Hierarchien leider komplizierter, und es gibt Spezialfälle, wie etwa externe oder unvollständige Hierarchien. Dieses Thema wird ausführlich in dem Buch Datenmodellierung inSAP NetWeaver BW von Frank K. Wolf und Stefan Yamada (SAP PRESS 2010) behandelt.

Page 39: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

180

View-Modellierung im SAP HANA Studio4

4.1.5 Attributsichten für Zeit

In den meisten Geschäftsdaten gibt es einen zeitlichen Bezug, wie z. B. ein Anlagedatum oder eine Gültigkeit. Diese sind in der Regel im Datenmodell als Datumsfeld oder Zeitstempel realisiert. Im Flugda-tenmodell gibt es z. B. das Flugdatum in der Tabelle SFLIGHT oder den Buchungszeitpunkt in der Tabelle SBOOK. Für viele Analysen ist eine Zuordnung dieses Zeitpunkts zu einem gewissen Zeitintervall not-wendig. Dies kann im einfachsten Fall das zugehörige Jahr oder der Monat sein oder auch das Quartal oder die Kalenderwoche. Es gibt aber auch kompliziertere und vor allem konfigurierbare Zeitinter-valle wie das Geschäftsjahr (Fiskaljahr), das für gewisse Szenarien der führende Kalender ist.

Geschäftsjahres- zuordnung

Um in ABAP für ein Datum das zugehörige Geschäftsjahr zu bestim-men, war es in der Vergangenheit nötig, die Daten zunächst in den Anwendungsserver zu holen und dort die Umrechnung durchzufüh-ren. Es gab daher keine Möglichkeit, allein über Open SQL eine ag-gregierte Aufstellung von Datensätzen nach Geschäftsjahr zu erstellen.Die Ableitung des Geschäftsjahres musste immer in ABAP stattfinden. Über Attribute Views in SAP HANA können Sie diese Zuordnung zu Intervallen im normalen Kalender (gregorianischer Kalender) sowie im Fiskalkalender erledigen.

Fiskaljahr-Customizing

Die Konfiguration von Geschäftsjahren und Fiskalperioden erfolgt über das ABAP-Customizing. Dies erlaubt umfangreiche Einstellungen und Konfi-gurationen von Varianten sowie die Behandlung von Spezialfällen (z. B. ein verkürztes Geschäftsjahr bei einer Firmengründung). Sie finden diese Kon-figuration in Transaktion SPRO unter dem Eintrag Geschäftsjahresvari-

ante pflegen.

Für die Konvertierung eines normalen Datums (z. B. vom Typ DATS) in das zugehörige Geschäftsjahr und die Geschäftsperiode gibt es eine Reihe von Funktionsbausteinen im SAP-Standard.

Technisch wird das zugehörige Customizing insbesondere in den Tabellen T009 und T009B abgelegt. Diese Tabellen sind normalerweise Pool-/Clus-ter-Tabellen und damit nicht direkt auf der Datenbank vorhanden. Die Umwandlung solcher Tabellen in normale Datenbanktabellen bei der Mi-gration auf SAP HANA (siehe auch Abschnitt 3.2.1, »ABAP Dictionary«) ist eine Voraussetzung dafür, dass auf solche Daten auch nativ in der Daten-bank zugegriffen werden kann.

Page 40: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

181

Attribute Views 4.1

Generierung von Kalenderdaten

Dazu generieren wir zunächst Zeitdaten in speziellen technischen Tabellen in SAP HANA. Dies können Sie über den Eintrag Generate

Time Data auf dem Startschirm der Perspektive Modeler durchfüh-ren. Danach wählen Sie die Details im Hinblick auf Kalenderart und Zeitraum. Wir wählen hier die in Abbildung 4.15 dargestellte Konfi-guration zur Erzeugung des fiskalischen Kalenders im Zeitraum 2000 bis 2020.

Abbildung 4.15 Generierung der Daten für den fiskalischen Kalender

Nun können Sie die zugrunde liegende Tabelle M_FISCAL_CALENDAR(Schema _SYS_BI) in Attribute Views verwenden. Im Beispiel aus Abbildung 4.16 berechnen wir über den Attribute View für jeden Flug in der Tabelle SFLIGHT das zugehörige Geschäftsjahr und die Geschäftsperiode. Wir haben hier einen statischen Filter auf das Feld CALENDER_VARIANT gesetzt, da wir uns auf eine feste Variante aus dem ABAP-Customizing beschränken wollen.

Quartal-/Kalenderwoche zuordnen

Ein anderes Szenario ist z. B. die Bestimmung des Quartals oder der jeweiligen Kalenderwoche für ein gegebenes Datum über einen Attribute View. Dazu benötigen Sie die Daten im gregorianischen Kalender, die in SAP HANA in der technischen Tabelle M_TIME_DIMENSION ebenfalls im Schema _SYS_BI abgelegt sind und für die Sie analog zum Fiskalkalender auch zunächst Daten generieren müssen. Die Verwendung der Tabelle M_TIME_DIMENSION sehen Sie in Abbil-dung 4.17.

Page 41: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

182

View-Modellierung im SAP HANA Studio4

Abbildung 4.16 Bestimmung der Geschäftsperioden für Flugdaten

Abbildung 4.17 Bestimmung von Quartal und Kalenderwoche

Attribute View vom Typ »Time«

Sie können auch einen kompletten Attribute View definieren, der nur die Zeitdaten enthält. Dazu wählen Sie beim Anlegen eines Attri-bute Views den Typ Time aus und selektieren die gewünschten Details zu dem Kalender. Abbildung 4.18 zeigt das Anlegen des Attri-bute Views AT_TIME_GREG für einen tagesbasierten gregorianischen Kalender.

Der View enthält das Datum als Schlüsselfeld und erlaubt somit Joins über eine Datumsspalte in den Geschäftsdaten. Damit können Sie

Page 42: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

183

Attribute Views 4.1

diese Views als Zeitdimensionen in einem Analytic View verwenden, wenn das Datum Teil der Faktentabelle ist. Dies werden wir in Abschnitt 4.2, »Analytic Views«, ausführlich erläutern.

Abbildung 4.18 Attribute View für gregorianischen Kalender

4.1.6 Laufzeitobjekte und SQL-Zugriff bei Attribute Views

Adressierung über SQL

Wie in Abschnitt 2.4.3, »SAP HANA Studio«, beschrieben, entstehen bei der Aktivierung von Views aus dem SAP HANA Repository im Datenbankkatalog Column Views im Schema _SYS_BIC, die über nor-males SQL angesprochen werden können. Diese Column Views bil-den auch die Basis für den ABAP-Zugriff, wie Sie in Abschnitt 4.5, »Verwendung von SAP HANA Views in ABAP«, sehen werden. Die genauen Laufzeitobjekte hängen dabei vom View-Typ und der genauen Modellierung ab. In der Regel gibt es ein führendes Objekt, das für einen Zugriff als primäre Schnittstelle dient, und zusätzliche technische Objekte.

Column ViewsIn diesem Abschnitt gehen wir auf die Spezifika bei Attribute Views ein. Zu jedem Attribute View gibt es zunächst einen zugehörigen Column View. Zusätzlich wird für jede Hierarchie ein weiterer Column View erzeugt. Für unseren Attribute View AT_FLIGHT finden Sie damit die in Abbildung 4.19 gelisteten Column Views im Daten-bankkatalog im Schema _SYS_BIC.

Page 43: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

591

Index

A

ABAPABAP 7.4 567ABAP Unit 297ABAP-Anwendung, Transport 511ABAP-Code-Analyse 295, 348ABAP-Laufzeitumgebung 110ABAP-Projekt 81ABAP-Proxy 515ABAP-Ressourcen-URL 87ABAP-Tabellenpuffer � Tabellenpuf-

ferABAP-Trace 297, 317, 368Schema 113Typsystem 117

ABAP Connectivity and Integration Development Tools 75

ABAP Core Development Tools 75ABAP Database Connectivity � ADBCABAP Development Tools for SAP Net-

Weaver 34, 211ABAP-Ressourcen-URL 82, 83Abwärtskompatibilität 76Benutzereinstellungen 83Berechtigungen 80Code-Analyse 310Debugger 87favorisierte Pakete 82Komponenten 75Perspektiven 80Programm anlegen 84Programm ausführen 87Project Explorer 82Projekt 81SAP-GUI-Integration 82Systembibliothek 82Templates 85

ABAP Dictionary 82, 108, 116, 209, 388Typsystem 118Wertehilfe 405

ABAP List Viewer 447ABAP Memory 543ABAP Profiler 295, 319

ABAP Test Cockpit 86, 275, 295, 308, 311

ABAP-ProgrammAnalyse 361Ausführungszeit 361

ABAP-Puffer, benutzerübergreifen-der 540

Accelerator-Szenarien 56ACID-Prinzip 33ADBC 139, 257, 403, 508, 548Add-on Assembly Kit 273Administration Console 90AFL 36, 466, 468After-Import-Methode 276, 289Aggregatfunktion 131Alternativimplementierung 504ALV 463ALV, integrierter Datenzugriff 486Analytic Engine 423, 430

Bericht-Bericht-Schnittstelle 433Formeln 433Hierarchieverarbeitung 432

Analytic Privilege 99Analytic View 99, 164, 184, 434, 549

anlegen 187Aufruf 370

Analytical Search 374analytische Funktionalität 418analytische Query � BW Queryanalytischer Index 435Änderungsauftrag 273, 288Änderungsaufzeichnung 269, 273,

278Änderungstransport 269Anweisungstransformation 149Anwendung, Optimierung 347, 351Anwendungslogik 60Anwendungsszenario

Accelerator-Szenario 56integriertes 56, 58Side-by-Side-Szenario 56

Appliance 31Application Function Library 36, 94,

224, 466, 468Applikationsschicht 60

Page 44: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

592

Index

Array-Interface 548Attribut 166

berechnetes 176, 190virtuelles 176

Attribute View 99, 164, 166, 394, 491, 549

Attributvektor 47, 573Aufrufhierarchie 323, 364Ausführungsplan � Explain PlanAusgabeparameter 515Ausnahmebehandler 256

B

BAdI 505B-Baum-Index 577Benutzeroberfläche, Baustein 447Berechtigung

analytische 90, 519Paketberechtigung 90Prüfung 519SAP HANA Studio 90SQL-Berechtigung 90Systemberechtigung 90

Berichtswesen 418Bewegungsdaten 185, 562BEx Query Designer 440BFL 36, 467Blocking Factor 154Breakpoint

dynamischer 88externer 88statischer 88

BRFplus 450BSP-Framework 488Business Function Library 36, 467Business Functions 33Business Rule Mining 466Business Server Pages (BSP) 488BW Query 423, 440, 445

C

Calculation Engine 225, 242Calculation View 99, 164, 196, 217,

249, 434, 462, 491, 549implementierter 201modellierter 196SQLScript 196

Callstack 323, 364Cashflow 469CE-Funktion 241, 370, 549

CE_AGGREGATION 242, 245, 249CE_CALC 246CE_CALC_VIEW 244CE_COLUMN_TABLE 242, 243, 249CE_CONVERSION 247CE_JOIN 244CE_JOIN_VIEW 243CE_OLAP_VIEW 244CE_PROJECTION 242, 245, 249CE_UNION_ALL 246CE_VERTICAL_UNION 247, 476relationale 244sonstige 247TRACE 302Zugriffsfunktion 242

Change and Transport System � CTSCHIP 487Client-Server 21Cluster-Codierung 49Cluster-Tabelle 126, 509Code Completion 85, 97, 213Code Inspector 295, 305, 349, 363Code Pattern 65Code Pushdown 60, 544Code-to-Data-Paradigma 60, 62, 359Codierung

Dictionary-Codierung 46indirekte 49Lauflängencodierung 49Präfix-Codierung 49Sparse-Codierung 49

Column Store 45, 95, 125, 217, 573Datentypen 386Empfehlung 502INSERT ONLY 577invertierter Index 580Lesezugriff 574Merge 578Schreibzugriff 576zusammengesetzter Index 581

Column View 94, 162, 183, 209, 213, 269

Commit, impliziter 136CONTAINS-Schlüsselwort 391Content 34, 98Counter 197

Page 45: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

593

Index

CPU-Cache 40, 41CPU-Kern 39CPU-Zeit 352, 374CTS 275

Deploy Web Service 281Plug-in 281

CTS+ 271, 280, 292Cursor 134, 253, 552

D

Data Analyst 465Data Control Language (DCL) 121Data Definition Language (DDL) 121Data Dictionary � ABAP DictionaryData Manipulation Language (DML)

121Data Mart 421Data Modeler 560Data Warehouse 420DATA-Anweisung 568Database Procedure Proxy 257, 264,

480, 492, 511, 515Anlage 264Anpassung 268Aufruf 267Synchronisation 268

Database Shared Library 35, 112DataSource 422, 439Data-to-Code-Paradigma 60Datenanalyse 418, 441Datenart 125Datenbank

relationale 33, 44, 162Typsystem 118

Datenbankindex 537Datenbank-Interface 508, 512Datenbankkatalog 93, 162, 209Datenbankobjekt 94Datenbankoptimierer 52, 221, 330Datenbankprogrammierung, Werk-

zeuge 149Datenbankprozedur 55, 94, 99, 217,

219, 491, 515anlegen 228Arten 226Ausführung 225Ausgabeparameter 225, 232Eingabeparameter 231

Datenbankprozedur (Forts.)Kompilierung 225Kontrollstruktur 252testen 516Verarbeitungslogik 232

Datenbankschema 93, 101Datenbankschicht 60Datenbankschnittstelle 110Datenbanktabelle 95Datenbanktrigger 95Datenbankverbindung

sekundäre 145, 155Standard 156

Datenbank-View 123, 137Datendatei 276Datendeklaration 567Datenexploration 441Dateninkonsistenz 513, 516Datenlayout 44Datenmodell, virtuelles 425Datenreferenz 571Datenreplikation 36

Direct Extractor Connection (DXC) 37

SAP Data Services 37SAP Landscape Transformation Repli-

cation Server 37Datensicht � ViewDatentyp 115, 124, 265

Integer 46Konvertierung 458SHORTTEXT 386TEXT 386

Datenvorschau 96, 104DBA-Cockpit 145, 335DBI 110DBSL 35, 112DDL 226DDL-Statement 53Debug Trace 303Decision Table � Entscheidungs-

tabelleDefault-Schema 231, 233deklarative Programmierung 222,

552Delivery Unit 99, 278, 515Delta Load 36Delta Merge 416Delta Store 50, 416, 576

Page 46: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

594

Index

Delta-Komprimierung 48Design Time 262Design-Time-Objekt 102Diagnostics Agent 39Dictionary View 211Dictionary-Codierung 46Dictionary-Vektor 46, 573Dimension 185Direct Extractor Connection (DXC) 37Document Analysis Toolkit 382Domäne 124DRAM 41Drill-down 178Dump 299, 518Dynamic Random Access Memory 41

E

Easy Query 431, 445Echtzeit 19, 421

near Realtime 583Echtzeitqualität 19Eclipse 33

ABAP-Entwicklungsumgebung 33Ansicht 78Arbeitsbereich 79Editor 78Erweiterungspunkt 68Fenster 78Foundation 34, 67, 69Framework 67Menüleiste 79Perspektive 78Plattform 33, 67, 68Plug-in 68Projekt 69Release Train 69Repository 71Sammelrelease 69SAP 70SAP Release Train for Eclipse 71SDK 68Symbolleiste 79Update Site 71Workbench 77

Eingabeparameter 193, 515Einheitenkonvertierung 191elementare Suchhilfe 405Embedded Reporting 431

Embedded Search 386Engine 55, 550Enqueue-Server 109Enqueue-Service 512Enqueue-Workprozess 115Enterprise Data Warehousing 421Enterprise Search 386Entity-Relationship-Modell 161Entkopplung 504, 517Entscheidungsregel 449, 458Entscheidungstabelle 99, 449, 451,

453, 486Aktionen 451anlegen 453Bedingungen 451Transport 464

Entwicklungslandschaft, gemischte 511

Entwicklungsobjekt 84, 94, 98, 99ABAP 514Ablage 101aktivieren 102Namenskonvention 514SAP HANA 514testen 104validieren 102

Entwicklungsorganisation 270, 271, 277Delivery Unit 278Paket 272Pakethierarchie 271, 277Paketschnittstelle 273Softwarekomponente 272Verwendungserklärung 273

Entwicklungsschema 283Entwicklungsumgebung

ABAP Development Tools 75, 80, 97Installation 73SAP HANA Studio 73

Equi-Join 168Existenzcheck 307Expensive SQL Statement Trace 296Explain Plan 296, 330

Aufruf 330Ausgabe 330

Export 275Export Release Preprocessing 289Extension Index 388externer View � View, externer

Page 47: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

595

Index

F

Factory Pattern 504Factory-Klasse 493Faktentabelle 183, 185Feeder-Klasse 495Fehleranalyse 293, 295, 296Fehlerbehandlung 518Feld, berechnetes 190Feldliste 527Feldsymbol 568Festplatte 41Filter 166Filterwert 174Fiskaljahr 180Flash-Speicher 41Floorplan Manager 447, 494

Analytics-Listenkomponente 447Diagrammkomponente 447Feeder-Klasse 494

Flugdatenmodell 109, 559, 560FOR ALL ENTRIES 129, 153, 155,

307, 534Fremdschlüsselbeziehung 123, 164Full Outer Join 245Full-Text-Index 387, 391, 412, 415,

492Funktion, benutzerdefinierte 94Funktionsbibliothek � Application

Function LibraryFuzzy Score 397Fuzzy-Search-Index 385, 414, 415Fuzzy-Suche 380, 381, 384, 394, 396,

486, 491stopwordListId 398stopwordTable 398textsearch 399

G

Geschäftsjahr 180Geschäftslogik 223Geschäftsprozess 449Geschäftsregel-Managementsystem

449gewichteter Durchschnitt 470, 475goldene Regeln für Datenbankpro-

grammierung 520

Größenkategorie 125GUID 564

H

HANA-Datenbank 33HANA-Datenbank, Architektur 54HANA-Softwarekomponente 31

Datenaufbereitung 32, 37Kernkomponenten 32Lifecycle-Management-Komponenten

32, 38Replikation 32

HANA-Transportcontainer 271, 286, 511

Hardwareinnovationen 40Hardwaretrends 39Hash-Partitionierung 53Hashwert 53Hauptspeicher 39, 41HAVING-Klausel 522, 537Hierarchie 166, 178, 186, 200

Level 178Vater-Kind 178

High Performance Analytical Appli-ance � SAP HANA

Hint 136, 508Hitliste 321HTML5 56, 427hybride Anwendung 60Hypernym 400Hyponym 400

I

Identical Select 327, 328imperative Programmierung 222,

251, 552Import 275Index 94

Exklusionsliste 125Full-Text-Index 387Inklusionsliste 125invertierter 539, 579Primärindex 537zusammengesetzter 539

Indexserver 55indirekte Codierung 49InfoObject 422, 435, 437

Page 48: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

596

Index

InfoProvider 422, 434transienter 434virtueller 436

InfoSet, klassisches 439Initial Load 36Inline-Deklaration 209, 567IN-Liste 155In-Memory-Datenbank 54In-Memory-Technologie 39Insight to Action 418Integer 46integriertes Szenario 56, 58interne Tabelle 543Internet Communication Framework

497invertierter Index 580

J

Java Runtime Environment (JRE) 73JDBC 35Job-Log 102Join 97, 247, 368

Equi-Join 168Full Outer Join 167Inner Join 128, 167, 244Join-Typen 166komplexer 551Left Outer Join 128, 167, 245Outer Join 167Referential Join 168, 173Right Outer Join 167, 245Self Join 203Text Join 168

Join Engine 166, 552Join View � Attribute View

K

Kalenderfiskalisch 180gregorianisch 181

Kalkulationslogik 61Kapselung 515Kennzahl 185

berechnete 190eingeschränkte 187

Kernel 110K-Means 472, 477

KomprimierungDelta-Komprimierung 48Verfahren 46, 48

Konstruktor-Ausdruck 209, 569Kontrolldatei 276Kontrollstruktur 252Konvertierungs-Exit 506

L

L (Programmiersprache) 224, 227Large Object 386, 416Lastverteilung 52Latenz 19Lauflängencodierung 49Laufzeit 262Laufzeitanalyse 293, 295, 367Laufzeitfehler 300Laufzeitobjekt 183, 234Laufzeitstatistik 313, 352, 360

Auswertung 314Selektion 313

Left Outer Join 245linguistische Suche 392L-Knoten 224Logical Unit of Work 114LOOP-Schleife 535LUW-Konzept 114

M

Main Store 50, 576Mainframe 21Mandantenbehandlung 111, 215,

254, 511Attribute View 172automatische 234

Manifest 68Massenoperation 548Materialisierung 161MDX 35, 55, 208Measure � KennzahlMengenoperation 531Merge 416, 578Message-Server 109mobile Anwendung 488Modeler-Perspektive 90Modifikationsassistent 276MODIFY 154

Page 49: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

597

Index

Modularisierung 517Modularisierungseinheit 308Monitoring View 415Multidimensional Expressions � MDX

N

Namensraum 514Nameserver 55natives SQL 370, 403, 546

ABAP-Tabellen 511ADBC 139

Negativtest 298NEW-Operator 569NUMA-Architektur 41

O

OData 56, 487OData-Service 427ODBC 35ODBO 35ODS-Objekte 422öffentliches Synonym 234, 235OLAP 60, 420OLAP Engine 552OLTP 60, 420on the fly 421Open SQL 62, 107, 121, 218, 222,

365Array-Operation 135Cursor 134dynamisches 133Existenzprüfung 132Hints 136Paketgröße 134Transaktionskontrolle 136Unterabfrage 132

Operational Data Provisioning 439Optimierer � DatenbankoptimiererOrchestrierungslogik 61Originalsystem 276, 282OR-Verbindung 154Outer Join 120

P

Paket 98, 99, 515Entwicklungspaket 272, 277

Paket (Forts.)gekapseltes 273Hauptpaket 272SAP HANA 514Schnittstelle 273Strukturpaket 272, 277system-local 278Testpaket 273

PAL 36, 467Parallelisierung 52, 221, 251, 257,

332, 552Parameter-Marker 547Partition Pruning 52Partitionierung 50

Arten 53explizites Partition Handling 53Hash-Partitionierung 53horizontale 51Range-Partitionierung 54Round-Robin-Partitionierung 52vertikale 51

PBO-Modul 463Performance 520Phrase-Index 414Phrase-Index-Ratio 414physikalisches Schema 283Planungs-Engine 55PlanViz 296, 331, 353, 373

Aufzeichnung 331Auswertung 331

PMML 472Pool-Tabelle 126, 509Präfix-Codierung 49Präfixnamensraum 287Präprozessor-Server 55Präsentationsschicht 60Predictive Analysis 33, 465Predictive Analysis Library 36, 467Predictive Model Markup Language

(PMML) 472Prepared-Anweisung 142, 519, 546Prepare-Phase 547Pretty Printer 85Primärdatenbank 56, 257, 436Projektion 242Projektionsview 123Proxy-Objekt 264Public Synonym 104

Page 50: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

598

Index

Puffer-Trace 157Pufferzugriff 366

R

R (Programmiersprache) 227, 475Rabattschema 484RAM 39Range 129Range-Partitionierung 54Read Only Procedures 226Read Write Procedures 226Realtime � EchtzeitRedirected Database Access (RDA)

145, 583Refactoring 297REF-Operator 570Regel 452regi 237relationale Funktion 242, 244Reparaturkennzeichen 276Reporting 418Repository � SAP HANA RepositoryRESTful Service 56Result View 461, 462Revision 74Right Outer Join 245robuste Programmierung 517Rollback 136Rollenverwaltung 487Rollenverwaltung, SAP HANA Studio

91Round Trip 154Round-Robin-Partitionierung 53Row Store 44, 125, 217Run-Time-Objekt � Laufzeitobjekt

S

Sammelsuchhilfe 405SAP Business Application Accelerator

583SAP Business Explorer (BEx) 423SAP Business Suite 57

SAP Business Suite powered by SAP HANA 505

SAP BusinessObjects 423SAP BusinessObjects Business Intelli-

gence-Plattform 206, 425

SAP Community Network 488SAP CO-PA Accelerator 57SAP Crystal Reports 447SAP Data Services 37SAP HANA 31

Anwendungen 57Anwendungsfälle 56Funktionsbibliotheken 36Migration 348, 507zertifizierte Hardware 40

SAP HANA Analytics Foundation 425SAP HANA Client 35

HTTP 36JDBC 35ODBC 35ODBO 35Package for Microsoft Excel 37SQLDBC-Bibliothek 35

SAP HANA Client Software 74SAP HANA Development 90SAP HANA Extended Application Ser-

vices � XS EngineSAP HANA Live 425SAP HANA MDX Provider 207SAP HANA Plan Visualizer � PlanVizSAP HANA Repository 90, 98, 277,

514, 515SAP HANA Repository Client (regi)

74, 237SAP HANA Repository View 210, 213SAP HANA Studio 33, 34, 90

Arbeitsbereich 92Benutzereinstellungen 93Berechtigungen 90Datenbankkatalog 93hdbinst 74hdbsetup 74Perspektive 90SQL-Anweisung 373SQL-Konsole 97, 226Systemverbindung 92Templates 97View-Modellierung 164, 168

SAP HANA UI for Information Access 38, 386

SAP HANA View 63, 209, 370, 511Auswahl 215Performance 548testen 516

Page 51: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

599

Index

SAP HANA View (Forts.)Typ 548

SAP Host Agent 38SAP Landscape Transformation Repli-

cation Server 37SAP Lumira 467SAP Management Console 38SAP Memory 543SAP NetWeaver AS ABAP 35SAP NetWeaver Business Client 485,

487, 499SAP NetWeaver BW 420SAP NetWeaver Gateway 431, 487,

488SAP NetWeaver Operational Process

Intelligence 453SAP Predictive Analysis 467SAP Solution Manager 39SAP Visual Intelligence 467SAPUI5 427, 487, 488

Anwendung 497Model View Controller 498

Scale-out 40, 109Scale-up 40Schattenspalte 387Schema � DatenbankschemaSchemabehandlung 215, 510Schema-Mapping 233, 283, 510Schleife 552Schlüsselfeld 166Scorecard 466Script Server 468Segmentierung 472Sekundärdatenbank 56, 145, 428Sekundärindex 537Sekundärverbindung 155SELECT *-Anweisung 366SELECT-Anweisung 521SELECT-Anweisung, geschachtelte

366, 533Selektivität 385Sentiment-Analyse 380, 382, 412Sequenz 95Server-Komponente 55Service Builder 488, 496Session-Kontext 171SFLIGHT 109, 559, 560Shared Buffer 543Shared Memory 543

Shared Objects 543Side-by-Side-Szenario 22, 36, 56Sidepanel 432, 485

Konfiguration 498Single Transaction Analysis 295, 328skalare Variable 229skalarer Parameter 228Slice-and-dice 186Software Update Manager for SAP

HANA (SUM) 38Softwareinnovation 43Softwarekomponente 272Sortierverhalten 509spaltenorientierte Datenablage 45, 95Sparse-Codierung 49Sperre 512Sperrkennzeichen 275Sperrobjekt 115, 124SQL 121

dynamisches 253, 552Fehlercode 256Injection 254natives 62, 138, 257Open 62SQL-Cache 296, 337, 547SQL-Datentyp 232, 233SQL-Injection 519SQL-Konsole 97, 226SQL-Performanceoptimierungs-

werkzeug 349SQL-Profil 363SQL-Prozessor 55Standard 218

SQL Monitor 296, 339, 349, 363aktivieren 339Auswertung 340Einstiegspunkt 341

SQL Performance Tuning Worklist 343

SQL View 162SQL-Analyse, systemweite 335SQL-Anweisung

Analyse 351, 364BINARY SEARCH 510CREATE FULLTEXT INDEX 387EXEC 518EXEC SQL 508FOR ALL ENTRIES 534, 535

Page 52: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

600

Index

SQL-Anweisung (Forts.)INTO CORRESPONDING FIELDS OF

526ORDER BY 509SELECT * 366SELECT COUNT(*) 528UP TO n ROWS 524UPDATE 529UPDATE ... SET 529

SQLDBC-Bibliothek 35SQLScript 33, 63, 194, 198, 217, 370

ABAP-Tabellen 511Aktivierung 224Aufruf 225Ausgabeparameter 232, 259benutzerdefinierte Funktionen 227BREAK 252CALL 235CE-Funktion 241CONTINUE 252CREATE PROCEDURE 228, 238CREATE TYPE 229Cursor-Verarbeitung 253Debugger 237, 303dynamisches 253, 518eigene Ausnahmen 256Eingabeparameter 231, 263EXEC 253EXECUTE IMMEDIATE 253explizite Typisierung 239Fallunterscheidung 223, 252Fehlerbehandlung 255Groß-/Kleinschreibung 234Grundlagen 225implizite Typisierung 239Kontrollstrukturen 252Mandantenbehandlung 234, 254Modularisierung 218Optimierungen 249, 254Orchestrierung 222Parallelisierung 221Performance 251Qualitäten 218Regeln 551Schleife 223, 252SESSION_CONTEXT 254skalare Variable 229, 240skalarer Parameter 228Standardausnahmen 256

SQLScript (Forts.)Systemfelder 254Tabellenparameter 228Tabellentyp 229, 237Tabellenvariable 220, 229, 239Typisierung 239, 240UDF 227User Defined Functions 227Variable 238Verarbeitung 224Verarbeitungslogik 232versus CE-Funktionen 248Wiederverwendung 219WITH RESULT VIEW 229Zerlegung 219Zugriff auf Geschäftslogik 223

SQL-Standard (SQL92, SQL99) 217SQL-Trace 151, 295, 324, 352, 363,

368aufzeichnen 151, 325auswerten 325

Stacktrace 327Stammdaten 185Standarddatenbankverbindung 113Standard-View 162Statistiksatz 295Statistikserver 55Sternschema 162, 186Stoppwort 385, 397Stored Procedure � Datenbank-

prozedurString 48String Template 567Structured Query Language � SQLStruktur 570Suche

exakte 392Freestyle 381Fuzzy 380, 381linguistische 381, 384Synonymsuche 381

Suchfacette 382Suchhilfe 123, 405

Suchhilfe-Exit 405Vorschlagswert 410

Summentabelle 161Synonym 95, 104Synonymliste 385, 399Syntaxprüfung 85

Page 53: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

601

Index

Systemfeld 505Systemlandschaft, gemischte 290Systemoptimierung 350Systemschema 93, 113

T

Tabelle 122interne 570, 571replizierte 583Tabellendefinition 95Tabelleninhalt 96Tabellenparameter 228Tabellenpuffer 112, 125, 512, 536,

542Tabellenstatistik 360Tabellentyp 229, 237Tabellenvariable 220, 229, 239temporäre Tabelle 261, 262

Term Mapping 399Test 517Textanalyse 380, 382, 411Textsuche 382, 386Thread 337Token 387, 411Trace 313Transaktion

ATC 295DBACOCKPIT 145, 296, 335EQPREVIEW 446PFCG 487, 498RSA1 436RSDD_HM_PUBLISH 435RSRT 440SAT 295, 317, 361, 368SCI 295, 306SE11 82SE80 409SEGW 496SQLM 296, 339ST04 335ST05 151, 156, 157, 295, 368ST12 295, 328ST22 299STAD 295, 313, 352, 359, 368SWLT 296, 343, 363

transaktionales System 420Transport 269

Änderungsauftrag 288

Transport (Forts.)Änderungsaufzeichnung 269, 273,

278CTS Deploy Web Service 281CTS+ 280, 292CTS-Plug-in 281Datendatei 276Developer Mode 280Eigenschaften 273, 278Empfehlungen 291Export 280gemischte Systemlandschaft 290HANA-Transportcontainer 271Import 280kombinierter 285Kontrolldatei 276logisches Transportobjekt 286Mechanismen 270mögliche Probleme 269Objektliste 275Originalsystem 282Protokoll 276, 289Schema-Mapping 233Sperrkennzeichen 275Synchronisation 288Transport Domain Controller 275,

281Transport von Kopien 276Transportcontainer 286Transportschicht 274Transportsystem 274, 278Transportverzeichnis 276Umzug 276

TREX 386

U

Unit Test 296, 353, 516, 517Unterabfrage 132, 534UPSERT 153

V

Validierung 102VALUE-Operator 570Variable 238

deklarieren 567Gültigkeitsbereich 569skalare 240

Page 54: ABAP-Entwicklung für SAP HANA · Bonn Boston Thorsten Schneider, Eric Westenberger, Hermann Gahm ABAP®-Entwicklung für SAP HANA®

602

Index

Variable (Forts.)Tabellenvariable 239

Verbuchung 109Versionshistorie 105Verwendungserklärung 273Verwendungsnachweis 87View 95, 123, 161

Analytic View 164, 184Attribute View 164Calculation View 164, 196Column View 162, 269Datenbank-View 137Dictionary View 211externer 210, 216, 269, 492, 511,

515SQL View 162

Virtual Data Model (VDM) 58Vorschlagsliste 382Vorwärtsnavigation 87

W

WährungsumrechnungCustomizing 192parametrisieren 193

Web Dynpro ABAP 409, 447, 485Eclipse 409Floorplan Manager 447, 490, 494

Web Dynpro ABAP (Forts.)Kontext 409Tools 75

Wertehilfe � SuchhilfeWHERE-Klausel 521, 537White List 519Widget 485Wildcard 379, 392Workprozess 109, 262Wort-Dictionary 414Wrapper-Funktion, AFL 469

X

XS Engine 36, 55, 90, 94, 217, 427, 519

Z

zeilenorientierte Datenablage 44Zeitdaten, generieren 181Zeitzone 506Zugriffsfunktion 242Zugriffszeit 40

CPU-Cache 41Festplatten 41Flash-Speicher 41Hauptspeicher 41

zusammengesetzter Index 581