Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Einleitung
15
1 SAP HANA
23
1.1 Was ist SAP HANA?
24
1.1.1 SAP HANA – eine schnelle SQL-Datenbank
24
1.1.2 SAP HANA – ein Applikationsserver
29
1.1.3 SAP HANA Cloud
30
1.1.4 SAP HANA – eine Werkzeugsammlung
30
1.2 On-Premise-Systemarchitektur von SAP HANA
32
1.2.1 Serverkomponenten von SAP HANA
32
1.2.2 Datenbanken und Tenants
33
1.3 Organisation der Datenbankobjekte
35
1.3.1 Datenbankschema
35
1.3.2 Datenbankkatalog
37
1.3.3 XSC Content und Repository
38
1.4 Entwicklungsumgebungen
39
1.4.1 SAP HANA Studio
41
1.4.2 SAP Web IDE für SAP HANA
43
1.4.3 SAP Business Application Studio
46
1.5 SQL-Konsole
46
2 Die ersten Schritte mit SQLScript
51
2.1 SQL vs. SQLScript
52
2.2 Grundlegende Sprachelemente
55
2.2.1 Anweisungen
56
2.2.2 Whitespace
56
2.2.3 Kommentare
57
2.2.4 Literale
58
2.2.5 Bezeichner
60
2.2.6 Zugriff auf lokale Variablen und Parameter
64
2.2.7 Systemvariablen
64
2.2.8 Reservierte Wörter
65
2.2.9 Operatoren
66
2.2.10 Ausdrücke
68
2.2.11 Prädikate
70
2.2.12 Datentypen
71
2.3 »NULL« und »DUMMY«
72
2.3.1 Der Wert »NULL«
72
2.3.2 Die Tabelle »DUMMY«
75
2.4 Modularisierung und logische Container
76
2.4.1 Blöcke
78
2.4.2 Prozeduren
81
2.4.3 Benutzerdefinierte Funktionen (UDF)
89
2.4.4 Benutzerdefinierte Bibliotheken (UDL)
93
2.5 Programmbeispiel
96
2.5.1 Anforderung: Transponieren eines Kennzahlenmodells in ein Kontenmodell
96
2.5.2 Implementierungsdetails
98
2.5.3 Test der Prozedur mit einem anonymen Block
101
3 Deklarative Programmierung in SQLScript
105
3.1 Tabellenvariablen
106
3.1.1 Deklaration von Tabellenvariablen
107
3.1.2 Verwendung von Tabellenvariablen
108
3.2 »SELECT«-Anweisung
108
3.2.1 »SELECT«-Klausel
109
3.2.2 Feldliste der »SELECT«-Klausel
110
3.2.3 »FROM«-Klausel
124
3.2.4 Joins
127
3.2.5 »WHERE«-Bedingung
135
3.2.6 »WITH«-Klausel
143
3.2.7 »GROUP BY«-Klausel
145
3.2.8 »HAVING«-Klausel
147
3.2.9 »ORDER BY«-Klausel
148
3.2.10 Mengenlehre
149
3.2.11 Unterabfragen
152
3.2.12 Aliasnamen
153
3.3 Sonstige Operatoren
155
3.3.1 Calculation-Engine-Planoperatoren
155
3.3.2 »MAP_MERGE«-Operator
156
3.3.3 »MAP_REDUCE«-Operator
158
4 Datentypen und ihre Verarbeitung
159
4.1 Konvertierungen zwischen den Datentypen
160
4.1.1 Implizite Konvertierung
160
4.1.2 Explizite Konvertierung
160
4.1.3 Zulässige Konvertierungen
161
4.2 Zeichenketten
161
4.2.1 Datentypen für Zeichenketten
161
4.2.2 Konvertierungen
165
4.2.3 Zeichenkettenfunktionen
165
4.2.4 Die Bibliothek »SQLSCRIPT_STRING«
180
4.3 Datum und Zeit
185
4.3.1 Datumsangaben
185
4.3.2 Zeitinformationen
190
4.3.3 Kombinierte Zeit- und Datumsangaben
192
4.3.4 Verarbeitung von Zeit und Datum
192
4.3.5 Beispiele für die Verarbeitung von Zeit
197
4.4 Numerische Daten
200
4.4.1 Grundrechenarten
201
4.4.2 Wurzeln, Exponenten und Logarithmen
202
4.4.3 Runden oder abschneiden
202
4.4.4 Trigonometrie
204
4.4.5 Zufallszahlen
205
4.4.6 Vorzeichen
205
4.4.7 Mengen und Beträge
205
4.5 Datenreihen erzeugen
211
5 Schreibender Zugriff auf die Datenbank
215
5.1 »INSERT«
216
5.1.1 Einzelne Datensätze
216
5.1.2 Mehrere Datensätze gleichzeitig einfügen
217
5.2 »UPDATE«
219
5.2.1 Einfache »UPDATE«-Anweisung
219
5.2.2 »UPDATE«-Anweisung mit Bezug auf andere Tabellen
220
5.3 »UPSERT« oder »REPLACE«
221
5.3.1 Einfügen oder Aktualisieren einzelner Datensätze
221
5.3.2 Einfügen oder Aktualisieren mehrerer Datensätze
222
5.4 »MERGE INTO«
222
5.5 »DELETE«
225
5.6 »TRUNCATE TABLE«
225
6 Imperative Programmierung
227
6.1 Variablen
227
6.1.1 Lokale skalare Variablen
227
6.1.2 Lokale Tabellenvariablen
232
6.1.3 Session-Variablen
243
6.1.4 Temporäre Tabellen
244
6.2 Ablaufsteuerung mit »IF« und »ELSE«
245
6.3 Schleifen
248
6.3.1 Die »FOR«-Schleife
249
6.3.2 Die WHILE-Schleife
249
6.3.3 Steuerung der Schleifendurchläufe
251
6.3.4 Übungsbeispiel: größter gemeinsamer Teiler
251
6.4 Cursor
252
6.4.1 »FOR«-Schleife über einen Cursor
253
6.4.2 Explizites Öffnen, Lesen und Schließen
254
6.4.3 Aktualisierbare Cursor
255
6.5 Arrays
256
6.5.1 Erzeugen eines Arrays
257
6.5.2 Zugriff auf das Array
257
6.5.3 Arrays als lokale Variablen
258
6.5.4 Aufteilen und Verbinden von Arrays
259
6.5.5 Arrays und Tabellenspalten
259
6.5.6 Übungsbeispiel: Bubblesort
261
6.6 Transaktionssteuerung
263
6.6.1 Transaktionen
263
6.6.2 Autonome Transaktionen
264
6.7 Dynamisches SQL ausführen
266
6.7.1 Parameter von dynamischem SQL
268
6.7.2 Eingabeparameter
269
6.8 Fehlerbehandlung
271
6.8.1 Was sind Ausnahmen?
272
6.8.2 Auslösen von Ausnahmen
273
6.8.3 Abfangen von Ausnahmen
273
7 Datenbankobjekte anlegen, löschen und ändern
279
7.1 Tabellen
280
7.1.1 Anlegen von Datenbanktabellen
280
7.1.2 Ändern von Datenbanktabellen
284
7.1.3 Löschen von Datenbanktabellen
285
7.2 Benutzerdefinierte Tabellentypen
286
7.3 Sichten (Views)
286
7.4 Sequenzen
288
7.5 Trigger
290
8 SQLScript in ABAP-Programmen
295
8.1 Einführung in ABAP Managed Database Procedures
295
8.2 Generelle Hinweise zur Implementierung von AMDP-Methoden
298
8.2.1 Deklaration der Verwendung von DDIC- und ABAP-Objekten
299
8.2.2 Zugriff auf CDS-Views
300
8.3 AMDP-Prozeduren
302
8.3.1 Anlegen von AMDP-Prozeduren
303
8.3.2 Generierte Objekte einer AMDP-Methode
305
8.3.3 Lebenszyklus der generierten Objekte
308
8.3.4 Verwendung von AMDP-Prozeduren in AMDP-Prozeduren
309
8.4 CDS-Tabellenfunktionen
311
8.4.1 Anlegen einer CDS-Tabellenfunktion
312
8.4.2 Generierte Objekte einer CDS-Tabellenfunktion
316
8.4.3 Mandantenbehandlung in CDS-Tabellenfunktionen
317
8.5 CDS-Skalarfunktionen
318
8.5.1 CDS-Skalarfunktionsdefinition
320
8.5.2 AMDP-Funktionsimplementierung einer Skalarfunktion
320
8.5.3 CDS-Skalarfunktionsimplementierungsreferenz
321
8.6 AMDP-Funktionen für AMDP-Methoden
322
8.6.1 AMDP-Tabellenfunktionen
322
8.6.2 Skalare AMDP-Funktionen
323
8.7 Empfehlungen
325
9 SQLScript in SAP BW und SAP BW/4HANA
327
9.1 SQL-Ausdrücke im CompositeProvider
328
9.1.1 Mit SQL-Ausdrücken in CompositeProvidern in SAP BW/4HANA filtern
329
9.1.2 Mit SQL-Ausdrücken berechnete Felder im CompositeProvider
331
9.2 SAP-HANA-Ausführung von Datentransferprozessen
334
9.3 Transformationsroutinen als AMDP
338
9.3.1 Transformationsroutinen in Eclipse anlegen
338
9.3.2 Transformationsroutinen im SAP GUI anlegen
339
9.3.3 Aufeinanderfolgende Transformationen und gemischte Ausführung
340
9.4 Die generierte AMDP-Klasse
341
9.4.1 Signatur der AMDP-Methode der Routine
343
9.4.2 Zuweisung der Ausgabetabellen
345
9.4.3 Zugriff auf die Daten anderer Datenmodelle
346
9.5 Die einzelnen Routinen
349
9.5.1 Startroutinen
349
9.5.2 Endroutinen
350
9.5.3 Expertenroutinen
350
9.5.4 Feldroutinen
353
9.6 Fehlerverarbeitung und Error Stack
354
9.6.1 Ablauf der Verarbeitung im Datentransferprozess
355
9.6.2 Beispiel: Fehlerhafte Daten in Tabelle »OUTTAB« erkennen
357
9.6.3 Beispiel: Ungültige Feldinhalte mit regulären Ausdrücken finden
357
10 SQLScript in SAP Datasphere
359
10.1 Architektur von SAP Datasphere in der Übersicht
360
10.1.1 Spaces
360
10.1.2 Open-SQL-Schema
361
10.2 SAP-Datasphere-Objekte mit SQL und SQLScript
363
10.2.1 Berechnete Spalten in grafischen Views
364
10.2.2 SQL-Views mit SQL (Standardabfrage)
366
10.2.3 SQL-Views mit SQLScript (Tabellenfunktion)
367
11 Sauberer SQLScript-Code
369
11.1 Die Lesbarkeit des Codes
370
11.1.1 Formatierung des Codes
370
11.1.2 Sprechende Namen
371
11.1.3 Granularität von Prozeduren und Funktionen
373
11.1.4 Kommentare
376
11.1.5 Komplexe Abfragen zerlegen
377
11.1.6 Lesbare SQLScript-Anweisungen
382
11.2 Performanceempfehlungen
384
12 Tests, Fehler- und Performanceanalyse
387
12.1 Test von SQLScript-Code
388
12.1.1 Die SQL-Konsole
388
12.1.2 Testen von AMDP-Methoden
390
12.1.3 Die Bibliothek »SQLSCRIPT_LOGGING«
391
12.1.4 Das Test-Framework in SQLScript
393
12.2 Die Debugger für SQLScript
397
12.2.1 SQLScript-Debugger im SAP HANA Studio
398
12.2.2 AMDP-Debugger in den ADT
400
12.2.3 Debugging im SAP HANA Database Explorer
403
12.3 Performanceanalyse
405
12.3.1 Laufzeitmessung
406
12.3.2 Ausführungsplan
407
12.3.3 PlanViz
409
12.3.4 Das SQL Analyzer Tool for SAP HANA
416
12.3.5 Datenbank-Hints
416
12.3.6 SQLScript Code Analyzer
417
Anhang
419
A Einrichtung einer SAP-HANA-Instanz als Entwicklungsumgebung
421
B Datenmodell: Aufgabenverwaltung
423
C Abkürzungsverzeichnis
427
Der Autor
429
Index
431