Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
An den Leser
2
Schrödingers Büro
4
Schrödingers Werkstatt
6
Schrödingers Wohnzimmer
8
Impressum
10
Inhaltsverzeichnis
12
Vorwort
24
1 Eine Nudelmaschine für zu Hause – Die SAP, das SAP-System und ABAP
27
Servus Schrödinger!!!
28
Schrödingers SAP-System
31
Die SAP – Das Unternehmen
33
SAP-System
34
Die Erfolgsgeschichte: Vom ABAP zum ABAP
37
Kompilieren/Interpretieren
41
ABAP allgemein
42
ABAP-Syntax
43
Beispiel ABAP
45
Schrödingers ABAP
46
2 Rein in die Küche – raus aus der Küche – Starten mit dem SAP-System
47
Anmelden zum Tauchkurs: Eintauchen in die SAP-Welt
48
Alles ist Transaktion – Transaktionen als Shortcuts
50
Melde dich an! – SAP-Anmeldung
51
Transaktion starten
53
Willkommen Schrödinger! – SAP-Willkommenstext
54
Die Auslage des SAP-Systems – SAP GUI-Aufbau
57
Alles auf einen Blick – SAP Easy Access
59
Modus Operandi – Zusätzliche Fenster öffnen
61
Das ist doch kein Thema
63
Hüben und drüben, nichts als Üben – Rolands Folterkammer oder Übung macht den Meister
64
Hoppi-Galoppi … SAP Fiori
66
3 Ciao a tutti! (Hallo Welt!) – Der 20-Minuten-Einstieg in die ABAP-Programmierung
69
Einsteigen und anschnallen!
70
Object Navigator – Die integrierte Entwicklungsumgebung
72
Entwicklung organisieren – Systemlandschaft, Änderungsauftrag
73
Ihr neuer Auftrag lautet: Auftragsanlage
75
Organisationskapsel Paket
77
Vom Entwickler zum Pakettier – Paket anlegen
79
Einen Schritt zurück und bald zwei nach vorne
82
Die Infos zum Aufbau einer Datenbanktabelle
83
Das zweischichtige Domänenkonzept
84
Technisches Fundament eines Typs – Domäne anlegen
86
Lege die Bedeutung an – Datenelement anlegen
89
Kühlschrankdesign – DB-Tabelle anlegen
91
Daten verarbeiten – Programm anlegen
95
Das ABAP-Einmaleins – Grundlegende Syntax
96
Der Durchblicker – Programm entwickeln
98
Her mit den Daten – DB-Zugriff
100
Jetzt lese ich
101
Ohne Struktur läuft nichts – Grundlegende Programmstruktur
102
Alles muss es auch nicht sein – Einfaches Selektionsbild
104
Layouten und Daten transportieren – Ein einfaches Dynpro
108
Dekorieren der Auslage – Dynpro-Layout
111
Ablauflogik ohne Ablaufdatum – Ablauflogik programmieren
117
Ein Shortcut für den User – Transaktionscode anlegen/ausführen
121
Aufbruch in eine neue Welt: ABAP Development Tools
122
4 AAA – Alles außer ABAP – ABAP-Infrastruktur und -Werkzeuge
125
Warum?
126
Die Ablage der Entwicklungsobjekte – Repository
127
Wer suchet der findet – Suchen mit dem Repository Infosystem
132
Suchen und Finden – Repository Infosystem
134
Geschichtet, aber nicht gefaltet – ABAP-Infrastruktur
135
Wohin mit dem Anwender – Speicherorganisation extern und intern
138
Werkzeugkiste – Entwicklungswerkzeuge
140
Object Navigator – Der Regisseur
141
Repository Browser ausnutzen
143
Repository Browser browsen
144
Synchron oder aus dem Tritt – Objekt-Browser-Synchronisation
147
ABAP Editor – Die Schreibmaschine
149
Debugger – Der Kammerjäger
152
Debugger entschleunigt
153
Verwendungsnachweis – Der Rückwärtssucher
157
Die ADT können das auch
160
5 Schräge Typen* *also jetzt nicht der Schwaiger Roland – Datentypen und -objekte
165
Vorspann
165
Von 0 auf 100 in wenigen Seiten – Technik der Datenspeicherung im Hauptspeicher
166
Variables Standgas – Datenobjekte
168
Variablen sind zum Angreifen
169
Variablendeklaration inline
170
Ein typischer Blickwinkel – Datentypen
171
Anders betrachtet – Datentypen
173
Die Vermessung
174
Ansprache – Datenobjekte verwenden
175
Dynamik pur oder Statik nur? – Statisch und dynamisch typisierte Variablen
176
Mein lokaler Typ
177
Zuerst mal elementar lokal – Lokale elementare Typen
178
Dann elementar global – Globale elementare Typen
180
Elementar global con domäne – Domäne
183
Strukturell lokal – Lokale strukturierte Typen
186
Struktur global – Globale strukturierte Typen
188
Tabellarisch – typisch/intern – Lokaler Tabellentyp
192
Her mit der internen Tabelle
193
Wie viel Spalten hätten Sie denn gerne – Zeilentyp
194
Normal, sortiert oder doch gehasht – Tabellenart
195
Open the door please – Schlüssel
197
Heute mal kopflos – Kopfzeile
198
Tabellen für alle – Globaler Tabellentyp
199
Operation: Table – Tabellenoperationen
201
Bibliothek einräumen
203
Einzeln geht es auch – Einzelverarbeitung von Tabelleneinträgen
205
Ändern und Löschen zum Abrunden – Noch mehr Tabellenoperationen
206
Eine kleine Gutenachtgeschichte (über CDS)
207
6 Si parla ABAP? Echtes Küchenlatein – ABAP-Syntax I
213
Von Kontrollen und Schleifen
213
Zuweisungen, Operationen, Funktionen
214
Bitte nicht abweisen – Zuweisungen
217
Was du darfst und was du sollst – Konvertierungsregeln
219
Ketten ohne Perlen – Zeichenketten-Funktionen
221
Von Segmenten und Offsetten – Zeichenketten-Operationen
225
Ohne Rechnung, ohne mich – Arithmetische Operationen
227
Notandor – Logische Ausdrücke
228
Verzweige, falls … – IF … THEN … ELSE
230
Cassis – CASE … WHEN … ENDCASE
232
Schleifen
233
Bedingungslose Schleifen – DO … ENDDO
233
Krasses Projekt für Hardcore-ABAPer
234
Bedingte Schleife – Fußgesteuert
236
Bedingte Schleife – Kopfgesteuert
237
Jetzt aber mal systematisch – Systemfelder
238
Großbaustelle Rezeptprogramm
240
7 Kleine Häppchen sind leichter wiederverdaut( „Schluss mit Spaghetti!“ ) – ABAP-Syntax I I
243
Motivation durch Demotivieren
244
Den richtigen Zeitpunkt finden – Ereignisblöcke
245
Ereignisreiche Programme – Ereignisschlüsselwörter
246
Ereignisse: Rekapitulation mit Selbstreflexion
247
Zur richtigen Zeit an irgendeinem Fleck?
249
Meine schönsten Ereignisse – Rahmenprogramm
250
Dynpros mit Modul – PBO, PAI, HOV
252
Module, ganz kurz – Dynpro-Programmierung
253
Aber nun mit Schnittstelle – Unterprogramme
254
Definiere zuerst! Unterprogramm-Definition
255
Übergeben und Übernehmen – Schnittstellenparameter für das Unterprogramm
256
Lesen von DB mit Kapsel – DB-Zugriff in Unterprogramm
258
Ein Typ muss es sein – Schnittstelle typisieren
259
Bitte mit Typ – Typisieren
260
Warum in die Ferne schweifen? – Lokale Variablen
261
Sichtbar oder nicht – Lokale Überdeckung
262
Aufruf bitte – Unterprogramm-Aufruf
263
Totalumbau
264
Globale Wiederverwendung – Funktionsbausteine
268
Funktionsgruppe
270
Leg dir eine Funktionsgruppe an
273
Es ist so weit, global bereit – Funktionsbaustein
274
Her mit dem Rezept
276
Haaalloooooo – Funktionsbaustein-Aufruf
279
Dein Finale
281
8 Schrödinger zeigt Klasse – ABAP Objects
283
Motivation zur OO
284
Begriffe aus der Realität
285
Holistische Sichtweise
287
Modellierung
288
Erst denken, dann lenken: Einfache UML als Analysewerkzeug zur Visualisierung von Klassen/Objekten
292
Klasse Kaffee(-vollautomat) auf dem Papier
294
Ohne meine Kollaborateure bin ich nichts
296
Klasse oder doch Objekt
298
Klasse Lokal
300
Dein kleines Objektistan
303
Kaffee für zwei
306
Datenablage – Attribute
308
Wasserstand und Pause
310
Klasse Attribute, oder was?
311
Privat verkalkt / Private Attribute
314
Ab jetzt mit Methode – Schrödinger frischt auf
315
Mit Methode – ran an den Code
316
Die Schnittstelle der Methode
320
Ganz spezielle Methoden
323
Methoden mit Fülle
325
Selbstreferenz
328
Statisches Attribut
329
Methodenaufruf
330
Laufzeit sequenziert
332
Methoden für den Wasserbehälter
334
Von lokal nach global
336
Going global – SE24
337
Attribute und Methoden
338
Kaffeebohnen im Behälter
342
Senden und Empfangen
346
Sender mit Sendungsbedürfnis
347
Nächster Zubereitungsschritt: der Empfänger
348
Objektorientiertes Verkuppeln
349
Kaffee s'il vous plaît
351
9 Erben oder nicht, das ist hier die Frage: Pasta di Erbe – Vererbung
353
Motivation
354
Vererben und Erben von Klassen
357
Vererbung lokal
360
Meister der Pyramiden
362
Globale Vererbung: Ein praktisches Beispiel im SAP-Standard
364
Was wird wie und wo vererbt
367
Redefinieren – Polymorphie von Methoden
371
Redefinieren als globale Herausforderung
374
Statische und dynamische Typen von Klassen mit ein wenig Casting
380
Festigung der Einsichten
382
Down-Cast
385
Abstrakte Klassen
388
10 Keine Details bitte – Der Blick durch Interfaces
393
Schizophrenie?
394
Lokal zum Einsteigen
397
Schnittig und definiert
398
Volles Risiko – alles oder nichts
399
Klasse Zuordnung
400
Klasse Definition
401
Klasse Implementierung
402
Von Suchmaschinen und Tilden
403
Hast du gerufen?
404
Die vielen Gestalten der Methoden
406
Globalisierung mit positiven Auswirkungen
409
Global klasse Implementierung
411
Singleton-Party
413
11 Das Kapitel für Feiglinge – Ausnahmen
417
Ausnahmsweise behandelt
418
Eine kleine Geschichte der Ausnahmen
420
Noch mal langsam: Mit SY-SUBRC. Ausnahmewert wird gesetzt …
424
… und von dir behandelt
425
It’s RAISING man, hallelujah.
426
Ausnahmen melden …
426
… und behandeln
427
The Catcher in the System
430
Ausnahmen melden (mit Nummern) …
430
… und behandeln (nach Nummern)
431
Ausnahmslos Objekte
433
Definieren geht vor
435
Ausnahmen melden (mit Ausnahmeklassen) …
437
… und Ausnahmen behandeln, aber richtig! Mit Ausnahmeklassen.
440
Das ausnahmengespickte Projekt
441
12 Spaghetti-Programmierung – Selektionsbilder, Listen und Nachrichten (GUI I)
447
Vom kleinen Window-Farmer bis zum Groß-GUI-Besitzer: Jeder will ein Selektionsbild!
448
Selektionsbild für Beschränkte mit Liste
450
PARAMETERS: Das kleinere der Selektionsbild-Ungeheuer
452
Typ und Vorschlag
455
Hey, Checker!
457
Rund wie ein Radiobutton
459
„Du darfst“ war gestern, heute ist „Du musst“
461
Abflug in den Keller
462
Aber satt war er noch immer nicht: SELECT-OPTIONS
465
Mehr, Mehrere, Mehreres (ohne Rauschen)
470
Zur Anwendung gebracht … fast
474
Graue Theorie: Eingabehilfe, Prüftabelle
476
Entfessle den Künstler in dir: Screen-Gestaltung
478
Endlich Texte!
482
Wie im Hamsterrad
484
Ereignisreich geht’s weiter
490
Tagesschau … also eine Nachrichtensendung
493
L – Li – Lis – List – Liste
497
Keine Beichte notwendig: Interaktion mit einer Liste
504
13 Lasagne aufs Auge – Dynpro-Programmierung (GUI II)
507
Dynamisch programmieren
508
Wer schreit hier so? Rahmenprogramme, die Dynpros rufen!
512
Dreieinigkeit
515
Alles ist im Fluss und manchmal geht es im Kreis
517
Wohin soll ich mich wenden?
521
Wo Module bestimmen
522
Mit welchem Titel darf ich dich ansprechen?
525
Über der Fläche steht die Oberfläche
528
Die Gestaltung eines eigenen Menüs
531
Kannst du mit dem Druck umgehen?
534
FFFFF
537
Weck den Künstler in dir
539
Dein Dynpro
547
Sammle Elemente
549
Wohin mit den Daten?
551
Ablauflogik Reloaded
553
Dynpro rufen mal anders
561
14 Ravioli – Web-Dynpro-ABAP-Programmierung (GUI III)
565
15 Wie Phönix aus der Asche – SAPUI5 oder wie baue ich eine moderne Webanwendung (aus Sicht von SAP ;-))
567
SAP Ju-Ai-Feif
568
Der kleinstmögliche SAPUI5-Werkzeugkoffer
571
Hello OData-World!
575
Bei Aufruf Service (und dessen Analyse)
578
Jetzt aber: Daten anzeigen lassen
581
Destinationen muss man haben
583
Was ist Ihre Destination, Herr Schödinger?
584
Eine Architektur für SAPUI5-Anwendungen
586
Wir generieren uns eine Anwendung
587
16 Raus aus meiner Küche! – Berechtigungen
593
Berechtigungsrundumschlag – Überblick Berechtigungen
594
Am Anfang steht das Objekt mit Klasse – Berechtigungsobjekt
597
Die Details zur Berechtigung
600
Der Berechtigungs-Selbstchecker – S_TCODE prüfen
602
Experimente mit AUTHORITY-CHECK
604
Warum mag mich keiner – SU53
605
Finger weg von meinem View!
607
17 Vorratskammer einrichten  mit ziemlich viel Schnickschnack – DB-Tabellen erstellen
611
Freiland-Datenhaltung – Daten persistieren
612
Warum einfach, wenn es mit Schnittstelle geht – Die Datenbankschnittstelle
614
Transparente Tabelle en Detail
617
Spalten und der Rest – Tabellenfelder
620
Ohne Technik keine Tabelle – Technische Einstellungen
625
Mehr als eine Tabelle
630
Welcher Wert ist möglich – Fremdschlüssel
633
Ich will auch anders suchen – Sekundärindex
638
Ändern oder nicht, was geht – Erweiterungskategorie
641
Definieren und Realisieren – Datenbankobjekt
643
Mein erster Eintrag – Datenbanktabellen-Einträge erzeugen
644
Artenvielfalt im Dictionary – Weitere Tabellenarten
646
18 Vorratskammer plündern – DB-Tabellen auslesen
647
Erster Takt – SQL
648
Zweiter Takt – SQL
648
Eingelagert und geplündert – Datenpufferung
649
Datenmanipulator nativ – DML mit Native SQL
650
Einfach definieren – Datendefinition mit dem ABAP Dictionary
650
Alles recht und schön – Berechtigungen und Konsistenzprüfungen
651
Open SQL grundiert – Basisbefehlssatz aus Open SQL
651
Verklausuliert – SELECT-Klausel
653
Wohin damit – INTO target
656
Woher – FROM source
657
Aber bitte nicht alles – WHERE-Klausel
659
Da geht noch mehr – Weitere Klauseln
660
Und jetzt alles kombiniert – SELECT-Beispiel
661
Mehr als eine Tabelle ist auch okay – Views
666
Schritt für Schritt zum View mit relationalen Operatoren
670
Da will ich auch nicht alles – Selektionsbedingungen
679
Zusammenfassung in Bildern – View-Definition
680
Mit Views programmieren
682
Weil du so brav warst – Programmieren mit Views
684
Die CDS-Beziehungskiste: Von Joins und Assoziationen
686
Mit CDS-Views programmieren
688
19 Vorratskammer in Schuss halten – DB-Daten pflegen
691
Lesen ist Silber, Schreiben ist Gold – DELETE, UPDATE, MODIFY und INSERT
692
Sichere Daten – Transaktionskonzept
692
Von einem Zustand zum nächsten – Datenbank-LUW
694
Bist du konsistent?
697
Aktionen bündeln – SAP-LUW
698
Und jetzt auch noch transaktional – SAP-Transaktion
699
Datenmanipulator-Entwicklungsrahmen – Das Programm für die Open-SQL-Anweisungen
701
Und noch eins und noch eins und … – INSERT
706
Massendaten einfügen
708
Ändern muss man auch ab und zu – UPDATE
711
Massendaten
712
Weg damit – DELETE
714
Kombianweisung – MODIFY
717
Halt, Sperre! – Sperrkonzept
719
Die fünf Gebote der performanten DB-Programmierung
720
20 Mit Schirm, Charme – und vielleicht noch einem Melonensorbet – Daten in Dateien, Datenablage ohne DB
721
Daten ohne Datenbank
722
GUI-Loads – Upload und Download
722
Frontend Services
724
Pfad ermitteln
727
Download now, zumindest vorbereitet – Download vorbereiten
729
Auch nett für Datenwiederverwendung – Clipboard
730
Download now!
732
Einen hamma noch – Upload
735
Daten auf dem Applikationsserver
737
OPEN House – OPEN DATASET
738
DatenTRANSFER – Daten schreiben
739
READ DATASET – Daten lesen
741
21 Täglich wechselnde Speisekarten – Dynamische Programmierung
743
Dynamische Programmierung hat nichts mit Beweglichkeit zu tun
744
Feldsymbole
744
Datenrefs
746
RTTS = RTTI + RTTC
748
Überschrift finden
749
Dynamische Tokens
751
Dynamisches Feld
753
Dynamischer Typ
753
Dynamische Komponente
754
Dynamische Bedingung
754
Dynamisches Unterprogramm
756
Programmerzeugung im Hauptspeicher
756
Programmerzeugung im Repository
757
Bildnachweis
760
Index
761