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 – eine Werkzeugsammlung
30
1.2 Systemarchitektur
31
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 Content und Repository
38
1.4 Entwicklungsumgebungen
39
1.4.1 SAP HANA Studio
40
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
58
2.2.3 Kommentare
59
2.2.4 Literale
60
2.2.5 Bezeichner
62
2.2.6 Zugriff auf lokale Variablen und Parameter
64
2.2.7 Systemvariablen
65
2.2.8 Reservierte Wörter
65
2.2.9 Operatoren
66
2.2.10 Ausdrücke
69
2.2.11 Prädikate
70
2.2.12 Datentypen
70
2.2.13 Der Wert NULL
71
2.2.14 Die Tabelle DUMMY
73
2.3 Modularisierung und logische Container
74
2.3.1 Blöcke
77
2.3.2 Prozeduren
79
2.3.3 Benutzerdefinierte Funktionen (UDF)
86
2.4 Programmbeispiel
90
2.4.1 Anforderung
90
2.4.2 Anforderungsanalyse
91
2.4.3 Implementierung
93
2.4.4 Test der Implementierung
99
3 Deklarative Programmierung in SQLScript
103
3.1 Tabellenvariablen
104
3.1.1 Deklaration von Tabellenvariablen
105
3.1.2 Verwendung von Tabellenvariablen
106
3.2 SELECT-Anweisung
106
3.2.1 SELECT-Klausel
107
3.2.2 Feldliste der SELECT-Klausel
108
3.2.3 FROM-Klausel
123
3.2.4 Joins
125
3.2.5 WHERE-Bedingung
131
3.2.6 WITH-Klausel
139
3.2.7 GROUP BY-Klausel
141
3.2.8 HAVING-Klausel
143
3.2.9 ORDER BY-Klausel
144
3.2.10 Mengenlehre
146
3.2.11 Unterabfragen
148
3.2.12 Aliasnamen
149
3.3 Sonstige Operatoren
151
3.3.1 Calculation Engine Plan-Operatoren
151
3.3.2 Map Merge
152
4 Datentypen und ihre Verarbeitung
155
4.1 Zeichenketten
156
4.1.1 Datentypen für Zeichenketten
156
4.1.2 Konvertierungen
159
4.1.3 Zeichenkettenfunktionen
159
4.2 Datum und Zeit
173
4.2.1 Datumsangaben
174
4.2.2 Zeitinformationen
179
4.2.3 Kombinierte Zeit- und Datumsangaben
181
4.2.4 Verarbeitung von Zeit und Datum
181
4.2.5 Beispiele für die Verarbeitung von Zeit
187
4.3 Numerische Daten
189
4.3.1 Grundrechenarten
190
4.3.2 Wurzeln und Exponenten
191
4.3.3 Logarithmen
191
4.3.4 Runden oder Abschneiden
192
4.3.5 Trigonometrie
194
4.3.6 Zufallszahlen
194
4.3.7 Vorzeichen
194
4.3.8 Mengen und Beträge
195
4.4 Binäre Datentypen
201
4.4.1 Konvertierung zwischen Binär, Hexadezimal und Zeichenkette
202
4.4.2 Bits und Bytes
203
4.5 Konvertierungen zwischen den Datentypen
205
5 Schreibender Zugriff auf die Datenbank
207
5.1 INSERT
208
5.1.1 Einzelne Datensätze
208
5.1.2 Mehrere Datensätze gleichzeitig einfügen
209
5.2 UPDATE
211
5.2.1 Einfache UPDATE-Anweisung
212
5.2.2 UPDATE-Anweisung mit Bezug auf andere Tabellen
212
5.3 UPSERT oder REPLACE
213
5.3.1 Einfügen oder Aktualisieren einzelner Datensätze
213
5.3.2 Einfügen oder Aktualisieren mehrerer Datensätze
214
5.4 MERGE INTO
215
5.5 DELETE
217
5.6 TRUNCATE TABLE
218
6 Imperative Programmierung
219
6.1 Variablen
219
6.1.1 Lokale skalare Variablen
219
6.1.2 Lokale Tabellenvariablen
224
6.1.3 Sessionvariablen
232
6.1.4 Temporäre Tabellen
233
6.2 Ablaufsteuerung mit IF und ELSE
234
6.3 Schleifen
238
6.3.1 Die FOR-Schleife
238
6.3.2 Die WHILE-Schleife
239
6.3.3 Steuerung der Schleifendurchläufe
240
6.3.4 Übungsbeispiel: größter gemeinsamer Teiler
240
6.4 Cursors
241
6.4.1 FOR-Schleife über einen Cursor
242
6.4.2 Explizites Öffnen, Lesen und Schließen
243
6.5 Arrays
244
6.5.1 Erzeugen eines Arrays
245
6.5.2 Zugriff auf das Array
246
6.5.3 Arrays als lokale Variablen
247
6.5.4 Aufteilen und Verbinden von Arrays
248
6.5.5 Arrays und Tabellenspalten
248
6.5.6 Übungsbeispiel Bubblesort
250
6.6 Transaktionssteuerung
252
6.6.1 Transaktionen
252
6.6.2 Autonome Transaktionen
253
6.7 Dynamisches SQL ausführen
255
6.7.1 Parameter von dynamischem SQL
256
6.7.2 Eingabeparameter
257
6.8 Fehlerbehandlung
260
6.8.1 Was sind Ausnahmen?
260
6.8.2 Auslösen von Ausnahmen
261
6.8.3 Abfangen von Ausnahmen
262
7 Datenbankobjekte anlegen, löschen und verändern
267
7.1 Tabellen
268
7.1.1 Anlegen von Datenbanktabellen
268
7.1.2 Ändern von Datenbanktabellen
272
7.1.3 Löschen von Datenbanktabellen
273
7.2 Tabellentypen
274
7.3 Sichten (Views)
275
7.4 Sequenzen
277
7.4.1 Schrittweite
278
7.4.2 Grenzwerte
278
7.4.3 Verhalten beim Erreichen der Grenze
278
7.4.4 Zurücksetzen der Sequenz
279
7.4.5 Ändern und Löschen einer Sequenz
279
7.5 Trigger
279
7.5.1 Parameter
282
7.5.2 Pro Zeile oder pro Anweisung
282
8 SQLScript in ABAP-Programmen
285
8.1 AMDP-Prozeduren
288
8.1.1 Anlegen von AMDP-Prozeduren
289
8.1.2 Generierte Objekte einer AMDP-Methode
292
8.1.3 Lebenszyklus der generierten Objekte
295
8.1.4 Zweigleisige Entwicklung
296
8.1.5 Verwendung von AMDP-Prozeduren in AMDP-Prozeduren
299
8.2 CDS-Tabellenfunktionen
302
8.2.1 Anlegen einer CDS-Tabellenfunktion
303
8.2.2 Generierte Objekte einer CDS-Tabellenfunktion
308
8.2.3 Implizite Mandatenbehandlung von CDS-Tabellenfunktionen
309
8.3 AMDP-Funktionen für AMDP-Methoden
310
8.4 Alternativen zu AMDPs für den Aufruf von SQLScript-Code aus ABAP-Programmen
312
8.5 Empfehlungen
313
9 SQLScript in SAP BW
315
9.1 Transformationsroutinen als AMDP
320
9.2 Aufeinanderfolgende Transformationen und gemischte Ausführung
321
9.3 Die generierte AMDP-Klasse
323
9.3.1 Signatur der AMDP-Methode PROCEDURE
323
9.3.2 Zuweisung der Ausgabetabellen
325
9.3.3 Zugriff auf die Daten anderer Datenmodelle
326
9.4 Die einzelnen Routinen
329
9.4.1 Startroutinen
329
9.4.2 Endroutinen
330
9.4.3 Expertenroutinen
331
9.4.4 Feldroutinen
333
9.5 Fehlerverarbeitung und Error Stack
334
9.5.1 Ablauf der Verarbeitung im Datentransferprozess
335
9.5.2 Beispiel: Fehlerhafte Daten in Tabelle OUTTAB erkennen
337
9.5.3 Beispiel: Ungültige Feldinhalte mit regulären Ausdrücken finden
338
10 Sauberer SQLScript-Code
339
10.1 Die Lesbarkeit des Codes
340
10.1.1 Formatierung des Codes
340
10.1.2 Sprechende Namen
341
10.1.3 Granularität von Prozeduren und Funktionen
343
10.1.4 Kommentare
346
10.1.5 Komplexe Abfragen zerlegen
347
10.1.6 Lesbare SQLScript-Anweisungen
352
10.2 Performance-Empfehlungen
354
10.2.1 Datenvolumen reduzieren
354
10.2.2 Wechsel zwischen Row- und Column-Engine vermeiden
354
10.2.3 Deklarative Abfragen
354
10.2.4 Skalare Funktionen
355
11 Tests, Fehler- und Performanceanalyse
357
11.1 Test von SQLScript Code
358
11.1.1 Die SQL-Konsole
358
11.1.2 Testen von AMDP-Methoden
360
11.1.3 Die TRACE-Anweisung
361
11.2 Die Debugger für SQLScript
363
11.2.1 Der Debugger der WBDW
363
11.2.2 SQLScript-Debugger in SAP HANA Studio
369
11.2.3 AMDP-Debugger in den ADT
372
11.2.4 Debugging in der SAP Web IDE
375
11.3 Performanceanalyse
378
11.3.1 Laufzeitmessung
378
11.3.2 Ausführungsplan
379
11.3.3 Performanceanalyse in der WBDW
381
11.3.4 PlanViz
383
11.3.5 SQL Analyzer des Database Explorers der SAP Web IDE
391
11.3.6 SQLScript Code Analyzer
393
Anhang
397
A Einrichtung einer SAP-HANA-Instanz als Entwicklungsumgebung
399
B Datenmodell: Aufgabenverwaltung
415
C Abkürzungsverzeichnis
419
D Der Autor
421
Index
423