E-Book, Deutsch, 788 Seiten
Reihe: SAP Press
Schwaiger Schrödinger programmiert ABAP
3. Auflage 2019
ISBN: 978-3-8362-8210-9
Verlag: Rheinwerk
Format: PDF
Kopierschutz: 0 - No protection
Das etwas andere Fachbuch
E-Book, Deutsch, 788 Seiten
Reihe: SAP Press
ISBN: 978-3-8362-8210-9
Verlag: Rheinwerk
Format: PDF
Kopierschutz: 0 - No protection
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 verstehen
- Datentypen anlegen
- Objekte und Interfaces einsetzen
- Code in Module und Funktionen verpacken
- Dynpros und Ereignisse verwenden
- GUIs und Fiori-Oberflächen erstellen
- Datenbanken, SAP HANA, SQL, CDS
- Zugriffsschutz einrichten
- Dynamische Programmierung
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.
Autoren/Hrsg.
Weitere Infos & Material
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