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 Applikations-Server
29
1.1.3 SAP HANA – eine Werkzeugsammlung
30
1.2 Systemarchitektur
32
1.2.1 Server-Komponenten von SAP HANA
32
1.2.2 Datenbanken und Tenants
34
1.3 Organisation der Datenbankobjekte
35
1.3.1 Datenbankschema
36
1.3.2 Datenbankkatalog
37
1.3.3 Content und Repository
38
1.4 Entwicklungsumgebungen
39
1.4.1 SAP HANA Studio
41
1.4.2 Web-based Development Workbench
43
1.4.3 SAP Web IDE
46
1.5 SQL-Konsole
48
1.5.1 SQL-Konsole aufrufen
48
2 Die ersten Schritte mit SQLScript
53
2.1 SQL vs. SQLScript
54
2.2 Grundlegende Sprachelemente
57
2.2.1 Anweisungen
58
2.2.2 Whitespace
59
2.2.3 Kommentare
59
2.2.4 Literale
61
2.2.5 Bezeichner
63
2.2.6 Zugriff auf lokale Variablen und Parameter
65
2.2.7 Systemvariablen
65
2.2.8 Reservierte Wörter
66
2.2.9 Operatoren
67
2.2.10 Ausdrücke
69
2.2.11 Prädikate
71
2.2.12 Datentypen
72
2.2.13 Der Wert NULL
73
2.2.14 Die Tabelle DUMMY
76
2.3 Modularisierung und logische Container
77
2.3.1 Blöcke
79
2.3.2 Prozeduren
82
2.3.3 Benutzerdefinierte Funktionen (UDF)
91
2.3.4 Benutzerdefinierte Bibliotheken (UDL)
95
2.4 Programmbeispiel
97
2.4.1 Anforderung
97
2.4.2 Anforderungsanalyse
98
2.4.3 Implementierung
100
2.4.4 Test der Implementierung
106
3 Deklarative Programmierung in SQLScript
111
3.1 Tabellenvariablen
112
3.1.1 Deklaration von Tabellenvariablen
113
3.1.2 Verwendung von Tabellenvariablen
114
3.2 SELECT-Anweisung
114
3.2.1 SELECT-Klausel
115
3.2.2 Feldliste der SELECT-Klausel
116
3.2.3 FROM-Klausel
131
3.2.4 Joins
134
3.2.5 WHERE-Bedingung
142
3.2.6 WITH-Klausel
150
3.2.7 GROUP BY-Klausel
152
3.2.8 HAVING-Klausel
154
3.2.9 ORDER BY-Klausel
155
3.2.10 Mengenlehre
157
3.2.11 Unterabfragen
159
3.2.12 Aliasnamen
160
3.3 Sonstige Operatoren
162
3.3.1 Calculation-Engine-Planoperatoren
162
3.3.2 MAP_MERGE-Operator
163
3.3.3 MAP_REDUCE-Operator
164
4 Datentypen und ihre Verarbeitung
167
4.1 Zeichenketten
168
4.1.1 Datentypen für Zeichenketten
168
4.1.2 Konvertierungen
171
4.1.3 Zeichenkettenfunktionen
171
4.1.4 Die Bibliothek SQLSCRIPT_STRING
185
4.2 Datum und Zeit
191
4.2.1 Datumsangaben
191
4.2.2 Zeitinformationen
197
4.2.3 Kombinierte Zeit- und Datumsangaben
198
4.2.4 Verarbeitung von Zeit und Datum
199
4.2.5 Beispiele für die Verarbeitung von Zeit
204
4.3 Numerische Daten
206
4.3.1 Grundrechenarten
207
4.3.2 Wurzeln und Exponenten
208
4.3.3 Logarithmen
208
4.3.4 Runden oder Abschneiden
209
4.3.5 Trigonometrie
211
4.3.6 Zufallszahlen
211
4.3.7 Vorzeichen
211
4.3.8 Mengen und Beträge
212
4.4 Binäre Datentypen
218
4.4.1 Konvertierung zwischen Binär, Hexadezimal und Zeichenkette
219
4.4.2 Bits und Bytes
220
4.5 Konvertierungen zwischen den Datentypen
222
4.6 Datenreihen erzeugen
223
5 Schreibender Zugriff auf die Datenbank
227
5.1 INSERT
228
5.1.1 Einzelne Datensätze
228
5.1.2 Mehrere Datensätze gleichzeitig einfügen
229
5.2 UPDATE
231
5.2.1 Einfache UPDATE-Anweisung
232
5.2.2 UPDATE-Anweisung mit Bezug auf andere Tabellen
232
5.3 UPSERT oder REPLACE
233
5.3.1 Einfügen oder Aktualisieren einzelner Datensätze
233
5.3.2 Einfügen oder Aktualisieren mehrerer Datensätze
234
5.4 MERGE INTO
235
5.5 DELETE
237
5.6 TRUNCATE TABLE
238
6 Imperative Programmierung
239
6.1 Variablen
239
6.1.1 Lokale skalare Variablen
239
6.1.2 Lokale Tabellenvariablen
244
6.1.3 Session-Variablen
255
6.1.4 Temporäre Tabellen
256
6.2 Ablaufsteuerung mit IF und ELSE
257
6.3 Schleifen
261
6.3.1 Die FOR-Schleife
261
6.3.2 Die WHILE-Schleife
262
6.3.3 Steuerung der Schleifendurchläufe
263
6.3.4 Übungsbeispiel: größter gemeinsamer Teiler
264
6.4 Cursors
265
6.4.1 FOR-Schleife über einen Cursor
265
6.4.2 Explizites Öffnen, Lesen und Schließen
266
6.4.3 Aktualisierbare Cursors
268
6.5 Arrays
269
6.5.1 Erzeugen eines Arrays
269
6.5.2 Zugriff auf das Array
270
6.5.3 Arrays als lokale Variablen
271
6.5.4 Aufteilen und Verbinden von Arrays
272
6.5.5 Arrays und Tabellenspalten
272
6.5.6 Übungsbeispiel: Bubblesort
274
6.6 Transaktionssteuerung
276
6.6.1 Transaktionen
276
6.6.2 Autonome Transaktionen
277
6.7 Dynamisches SQL ausführen
279
6.7.1 Parameter von dynamischem SQL
281
6.7.2 Eingabeparameter
282
6.8 Fehlerbehandlung
285
6.8.1 Was sind Ausnahmen?
285
6.8.2 Auslösen von Ausnahmen
286
6.8.3 Abfangen von Ausnahmen
287
7 Datenbankobjekte anlegen, löschen und verändern
291
7.1 Tabellen
292
7.1.1 Anlegen von Datenbanktabellen
292
7.1.2 Ändern von Datenbanktabellen
296
7.1.3 Löschen von Datenbanktabellen
297
7.2 Benutzerdefinierte Tabellentypen
298
7.3 Sichten (Views)
299
7.4 Sequenzen
301
7.5 Trigger
303
8 SQLScript in ABAP-Programmen
307
8.1 AMDP-Prozeduren
311
8.1.1 Anlegen von AMDP-Prozeduren
312
8.1.2 Generierte Objekte einer AMDP-Methode
315
8.1.3 Lebenszyklus der generierten Objekte
318
8.1.4 Zweigleisige Entwicklung
319
8.1.5 Verwendung von AMDP-Prozeduren in AMDP-Prozeduren
322
8.2 CDS-Tabellenfunktionen
325
8.2.1 Anlegen einer CDS-Tabellenfunktion
326
8.2.2 Generierte Objekte einer CDS-Tabellenfunktion
331
8.2.3 Implizite Mandatenbehandlung von CDS-Tabellenfunktionen
332
8.3 AMDP-Funktionen für AMDP-Methoden
333
8.3.1 AMDP-Tabellenfunktionen
333
8.3.2 Skalare AMDP-Funktionen
335
8.4 Alternativen zu den AMDP für den Aufruf von SQLScript-Code aus ABAP-Programmen
336
8.5 Empfehlungen
337
9 SQLScript in SAP BW und SAP BW/4HANA
339
9.1 Transformationsroutinen als AMDP
344
9.1.1 Transformationsroutinen in Eclipse anlegen
344
9.1.2 Transformationsroutinen im SAP GUI anlegen
345
9.2 Aufeinanderfolgende Transformationen und gemischte Ausführung
347
9.3 Die generierte AMDP-Klasse
348
9.3.1 Signatur der AMDP-Methode der Routine
350
9.3.2 Zuweisung der Ausgabetabellen
352
9.3.3 Zugriff auf die Daten anderer Datenmodelle
353
9.4 Die einzelnen Routinen
356
9.4.1 Startroutinen
356
9.4.2 Endroutinen
357
9.4.3 Expertenroutinen
357
9.4.4 Feldroutinen
360
9.5 Fehlerverarbeitung und Error Stack
361
9.5.1 Ablauf der Verarbeitung im Datentransferprozess
362
9.5.2 Beispiel: Fehlerhafte Daten in Tabelle OUTTAB erkennen
364
9.5.3 Beispiel: Ungültige Feldinhalte mit regulären Ausdrücken finden
364
10 Sauberer SQLScript-Code
367
10.1 Die Lesbarkeit des Codes
368
10.1.1 Formatierung des Codes
368
10.1.2 Sprechende Namen
369
10.1.3 Granularität von Prozeduren und Funktionen
371
10.1.4 Kommentare
374
10.1.5 Komplexe Abfragen zerlegen
375
10.1.6 Lesbare SQLScript-Anweisungen
380
10.2 Performance-Empfehlungen
382
11 Tests, Fehler- und Performanceanalyse
385
11.1 Test von SQLScript Code
386
11.1.1 Die SQL-Konsole
386
11.1.2 Testen von AMDP-Methoden
388
11.1.3 Die Bibliothek SQLSCRIPT_LOGGING
390
11.1.4 Das Test-Framework in SQLScript
392
11.2 Die Debugger für SQLScript
396
11.2.1 Der Debugger der SAP HANA Web-based Development Workbench
396
11.2.2 SQLScript-Debugger in SAP HANA Studio
402
11.2.3 AMDP-Debugger in den ADT
405
11.2.4 Debugging in der SAP Web IDE
409
11.3 Performanceanalyse
411
11.3.1 Laufzeitmessung
412
11.3.2 Ausführungsplan
413
11.3.3 Performanceanalyse in der SAP HANA Web-based Development Workbench
414
11.3.4 PlanViz
416
11.3.5 SQL Analyzer des Database Explorers der SAP Web IDE
424
11.3.6 SQLScript Code Analyzer
426
Anhang
431
A Einrichtung einer SAP-HANA-Instanz als Entwicklungsumgebung
433
B Datenmodell: Aufgabenverwaltung
451
C Abkürzungsverzeichnis
455
D Der Autor
457
Index
459