Roland Schwaiger
Schrödinger programmiert ABAP
Die volle Ladung ABAP: Programmieren lernen im Comic-Stil
Roland Schwaiger
Schrödinger programmiert ABAP
Die volle Ladung ABAP: Programmieren lernen im Comic-Stil
- Broschiertes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
Schrödinger kann schon ein bisschen programmieren, aber ABAP - so stellt er fest - ist eine ganz eigene Welt. Deshalb bringt ihm der Schwaiger Roland jetzt alles bei. Da raucht Schrödinger manchmal schon der Kopf vor lauter Datentypen, Klassen und Funktionsbausteinen. Doch dank vieler Übungen und Tipps hat er bald den Durchblick. Wetten, du auch?
Aus dem Inhalt:
ABAP-Grundlagen verstehenDatentypen anlegenObjekte und Interfaces einsetzenCode in Module und Funktionen verpackenDynpros und Ereignisse verwendenGUIs und Fiori-Oberflächen erstellenDatenbanken, SAP HANA, SQL, CDSZugriffsschutz einrichtenDynamische Programmierung …mehr
Andere Kunden interessierten sich auch für
- Winfried SchwarzmannAgile ABAP-Entwicklung79,90 €
- Felix RothABAP - Das umfassende Handbuch89,90 €
- Thomas SchneiderErweiterungen für SAP S/4HANA79,90 €
- Paul HardyABAP to the Future94,99 €
- Rene GlavanovitsSAP Fiori Elements79,90 €
- Michael WegelinSAP-Schnittstellenprogrammierung79,90 €
- Thorsten FranzEinstieg in ABAP39,90 €
-
-
-
Schrödinger kann schon ein bisschen programmieren, aber ABAP - so stellt er fest - ist eine ganz eigene Welt. Deshalb bringt ihm der Schwaiger Roland jetzt alles bei. Da raucht Schrödinger manchmal schon der Kopf vor lauter Datentypen, Klassen und Funktionsbausteinen. Doch dank vieler Übungen und Tipps hat er bald den Durchblick. Wetten, du auch?
Aus dem Inhalt:
ABAP-Grundlagen verstehenDatentypen anlegenObjekte und Interfaces einsetzenCode in Module und Funktionen verpackenDynpros und Ereignisse verwendenGUIs und Fiori-Oberflächen erstellenDatenbanken, SAP HANA, SQL, CDSZugriffsschutz einrichtenDynamische Programmierung
Aus dem Inhalt:
ABAP-Grundlagen verstehenDatentypen anlegenObjekte und Interfaces einsetzenCode in Module und Funktionen verpackenDynpros und Ereignisse verwendenGUIs und Fiori-Oberflächen erstellenDatenbanken, SAP HANA, SQL, CDSZugriffsschutz einrichtenDynamische Programmierung
Produktdetails
- Produktdetails
- SAP PRESS
- Verlag: Rheinwerk Verlag
- Artikelnr. des Verlages: 459/06607
- 3., erw. Aufl.
- Seitenzahl: 788
- Erscheinungstermin: 26. März 2019
- Deutsch
- Abmessung: 233mm x 203mm x 53mm
- Gewicht: 1872g
- ISBN-13: 9783836266079
- ISBN-10: 3836266075
- Artikelnr.: 54341278
- SAP PRESS
- Verlag: Rheinwerk Verlag
- Artikelnr. des Verlages: 459/06607
- 3., erw. Aufl.
- Seitenzahl: 788
- Erscheinungstermin: 26. März 2019
- Deutsch
- Abmessung: 233mm x 203mm x 53mm
- Gewicht: 1872g
- ISBN-13: 9783836266079
- ISBN-10: 3836266075
- Artikelnr.: 54341278
Dr. Roland Schwaiger studierte an der Bowling Green State University, OH (USA) Computer Science und an der Universität Salzburg (Österreich) Angewandte Informatik und Mathematik und promovierte dort im Bereich Mathematik. Nach mehrjähriger Assistententätigkeit an der Universität Salzburg kam er 1996 als Softwareentwickler zur SAP AG und entfaltete dort seine Fähigkeiten für drei Jahre im Bereich Human Resources in einem anregenden und inspirierenden Umfeld. Seit 1999 ist er als freiberuflicher Trainer, Lektor, Berater und Entwickler tätig (Zertifizierter Development Consultant SAP NetWeaver 2004 - Application Development Focus ABAP). Er setzt seine akademische Vorbildung und das bei SAP erworbene Wissen, abgerundet durch einen MBA in Prozess- und Projektmanagement, für die Softwareentwicklung in konkreten Entwicklungsprojekten und SAP-Schulungen ein. Die dort wiederum erworbenen Erkenntnisse trägt er zurück in die akademische Welt und verknüpft so Theorie und Praxis.
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 II ... 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
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 II ... 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
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 II ... 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
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 II ... 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