ABAP Objects

Objektorientiertes ABAP für moderne Clean Core SAP Systeme

Motivation

Was ist Objektorientierung (OO)?

Objektorientierung in Programmiersprachen ist ein Programmierparadigma, bei dem wir Software nicht als eine Abfolge von Anweisungen, sondern als eine Sammlung von Objekten entwerfen.

Jedes Objekt ist wie ein kleines, autonomes Paket, das sowohl Daten (seine Eigenschaften) als auch Funktionen (sein Verhalten) bündelt, die auf diese Daten wirken.

Wir machen das, weil es uns hilft, komplexe Probleme in kleinere, besser verwaltbare Teile zu zerlegen.

(Google Gemini)

Orientierung auf Objekte

Interpretation

Orientierung hier im Sinne von Ausrichtung auf eine bestimmte Perspektive oder ein Ziel.
Objekte sind das, was wir in der Realität wahrnehmen: z.B. Auto, Maschine, Paket. Aus Sicht der SAP Entwicklung reden wir häufig über Business Objekte wie Kunde, Ansprechpartner, Auftrag, Produkt, Charge, Arbeitsplatz.

Orientierung Ziel/Fokus
Prozessorientierung Effizienz, Fehlerreduktion, Standardisierung
Kundenorientierung Kundenzufriedenheit, Bindung, Marktanpassung
Serviceorientierung Optimaler Service & Support
Datenorientierung Datenqualität, Echtzeit, Transparenz, Regeln
Produktorientierung Kundennutzen, iterative Weiterentwicklung
Qualitätsorientierung Fehlervermeidung, Exzellenz
Werteorientierung Handeln nach Prinzipien/Werten
Ergebnisorientierung Zielerreichung, Output

Objektorientierung = "aus der Perspektive des Objektes"


Perspektive Gesamtsystem

Perspektive Gesamtsystem

Perspektive des Objektes "Ameise"

Perspektive Ameise

Warum Objektorientierung?

Wir nutzen Objektorientierung, um:

  • Komplexität zu reduzieren:
    Sie hilft uns, große Systeme in kleinere, verständliche Module zu zerlegen.
  • Wiederverwendbarkeit zu fördern:
    Einmal definierte Klassen können an verschiedenen Stellen im Programm oder sogar in anderen Projekten wiederverwendet werden. Das spart Zeit und Aufwand.
  • Code lesbarer und wartbarer zu machen:
    Da Daten und Funktionen, die zusammengehören, in einem Objekt gebündelt sind, ist der Code logischer strukturiert und Fehler können leichter gefunden und behoben werden.
  • API Definition
    Die objektorientierten Grundkonzepte unterstützen den Entwicklungsansatz API First. In SAP Systemen werden objektorientierte Konzepte deshalb häufig von Frameworks, Anwendungen u.a. als Erweiterungskonzept verwendet.

Wann objektorientierte Programmierung (OOP) nutzen und wann nicht?

Geeignet

  • Entwicklung von grafischen Benutzeroberflächen (GUI), bei denen Fenster, Buttons und Events als Objekte modelliert werden.
  • Simulationssoftware, etwa zur Modellierung von Fahrzeugen oder Tieren, mit verschiedenen Eigenschaften und Verhaltensweisen pro Objekt.
  • Spieleentwicklung, bei der Spielfiguren, Gegner, Boni und Level als Objekte mit speziellen Eigenschaften agieren.
  • Unternehmensanwendungen wie Warenwirtschafts- oder Buchhaltungssysteme, in denen Kunden, Rechnungen und Artikel klar abgegrenzt werden.
  • Verwaltung komplexer Datenstrukturen
    Wenn das Denken in Tabellen nicht mehr ausreicht: z.B. Graph Daten

Eher ungeeignet

  • Mathematische Algorithmen (z. B. Sortier-, Matrix- oder numerische Methoden), wo prozedurale oder funktionale Ansätze meist effizienter sind.
  • Skripting kleiner Automatisierungsaufgaben, wie einfache Texttransformationen oder Batch-Verarbeitung.
  • Anbindung und Verarbeitung großer Mengen relationaler Daten aus Datenbanken.
  • Systemprogrammierung, etwa für Betriebssysteme, Treiber oder eingebettete Systeme, bei denen Ressourcenknappheit und Effizienz entscheidend sind.
  • Daten-Streaming- oder Pipeline-Anwendungen, die auf funktionsorientierten Verarbeitungsschritten beruhen.

Quelle: Perplexity

Objektorientierung einfach erklärt

  • Unterscheidung Klasse (der "Bauplan") und Objekt (die konkrete Ausprägung, auch "Instanz")
  • Die Klasse definiert Eigenschaften und Methoden
  • Jedes Objekt hat individuelle Eigenschaften, die durch Methoden gelesen oder verändert werden können
  • Zusatzkonzept Ereignisse: Objekte können anderen Objekten - auch Objekten anderer Klassen - "Bescheid sagen"


Anmerkung: im linken Bild statt Eigentum das Wort Attribute verwenden.

Quelle: https://www.computerweekly.com/de/definition/Objektorientierte-Programmierung-OOP

Wo begegnet uns Objektorientierung in der Praxis?

Objektorientierung in Computerspielen: "Doom" (1993)

Objektorientierung in Film und Fernsehen: "Herr der Ringe" (2002)

  • Für den zweiten Teil der Herr der Ringe Trilogie (Kinostart 2002) wurde eine gigantische Schlacht benötigt
  • Die größte Herausforderung war, die unglaubliche Menge an benötigten Kämpfern zu simulieren
  • Dies wurde mit Computergrafik gelöst: die Kämpfer wurden einzeln betrachtet, bekamen Aktionen/Bewegungen und konnten über ein simuliertes "Gehirn" selbständig Entscheidungen treffen
  • Lustig: in den ersten Versuchen sind die Orks vor der Schlacht weggelaufen...

Objektorientierung in grafischen Oberflächen (Windows 3.0 - 1990)

Objektorientierung in Werkzeugen für grafische Oberflächen (Delphi 1.0 - 1995)

  • In Rapid Application Development Werkzeugen (RAD) werden UI Elemente objektorientiert programmiert
  • In vielen aktuellen Low-Code/No-Code-Lösungen wurde dieses RAD-Konzept jetzt "wiederentdeckt"
  • Quelle: https://gdksoftware.com/how-to-update-delphi

Objektorientierung in Physik-Simulationen

  • Komplexe Szenarien der Realität werden in Einzelobjekte zerlegt und ihre Eigenschaften und Verhaltensweisen objektorientiert abgebildet
  • In einer virtuellen Simulationsumgebung werden die Objekte in einer Szene platziert und mit vorgegebenen aber auch zufälligen Rahmenbedingungen über einen gewissen Zeitraum beobachtet
  • Quelle: https://ekiefl.github.io/2021/03/25/pooltool-start/

Objektorientierung in Mixed Reality

Objektorientierung in "alten" SAP Welt

Objektorientierung für SAPGUI Kontrollen

Objektorientierung in "neuen" SAP Welt

Objektorientierte Konzepte im SAP ABAP (Beispiele)

  • SAP-Standard-Frameworks
    • SAPGUI Controls
    • Web Dynpro für ABAP (WDA)
    • Business Object Processing Framework (BOPF)
    • ABAP RESTful Application Programming Model (RAP)
  • Business-Objekte und Services
    • SAP Business Workflow
    • Business Add-Ins (BAdIs)
    • Business APIs (BAPIs)
  • ABAP Hilfsklassen und Utilities
    • Klassenbasierte APIs: z.B. CL_GUI_FRONTEND_SERVICES
    • ABAP Unit Tests
    • Ausnahmeklassen
  • Kundenindividuelle Toolboxen und APIs

SAP Praxisbeispiel: Marketingkampagnen

Standardmarketingkampagne

Standardvorgehen

  • Es werden Kunden selektiert, die sich für ein bestimmtes Produkt interessieren könnten
  • Es wird ein "Werbeanstoß" generiert: z.B. E-Mail, Werbepost, Benachrichtigung im Kundenportal
  • Der Kunde bekommt das, was die Produkt-Manager denken...

kundenorientierte Kampagne

Objektorientierte Lösung

  • Aus Sicht der Kunden wird geprüft, welche die "Next best action" wäre und ein entsprechender "Werbeanstoß" generiert
  • Das bisherige Kaufverhalten, bereits erhaltene Werbeanstöße, persönliche Vorlieben, Sperren, Aktionen u.a. werden berücksichtigt
  • Jeder Kunde kann "selbst einkaufen"

Übungsszenario: Würfel-Casino

Demoszenario Würfelspiel

  • Über verschiedene Übungen werden einzelne Aspekte der objektorientierten Programmierung mit SAP ABAP vorgestellt
  • Moderne ABAP Syntax und der Umgang mit den neuen SAP Entwicklungswerkzeugen stehen ebenfalls im Fokus

Funktionsbeschreibung

  • Es wird die Realität eines Würfel-Casinos simuliert
  • Die Teilnehmer würfeln in verschiedenen Würfelspielen gegeneinander
  • Ein Spielführer leitet das Würfelspiel am Tisch und wacht über die Einhaltung der Regeln
  • Am Ende der Runde bzw. des Spiels wird der Sieger gekürt und die Rangliste veröffentlicht
  • Ein Assistent kümmert sich um die Teilnehmer...

Lernziele

  • Grundkonzepte der Objektorientierung
  • Grundlagen ABAP Objects
  • ABAP OO Code verstehen und debuggen können
  • Architektur und Entwurfsmuster

| Innovationsorientierung | Neuerungen, Differenzierung am Markt | | Mitarbeiterorientierung | Zufriedenheit, Motivation, Bindung | Easy Soft GmbH (Work-Life-Blend), Google (Arbeitsumfeld) | Nachhaltigkeitsorientierung | Ressourcenschonung, Umweltfreundlichkeit | Unternehmen mit ESG-Strategien, Toyota Hybrid | Qualitätsorientierung | Fehlervermeidung, Exzellenz | Deutsche Mittelständler, japanische Industrie | Wettbewerbsorientierung | Marktanteile, Konkurrenzfähigkeit | Aggressive Pricing-Strategien z.B. bei Discountern | Sicherheitsorientierung | Risikominimierung, Schutz | Versicherungsbranche, Chemieindustrie