
ABAP Tipp - Clean Core
In diesem Artikel mal etwas zum Thema Clean Core, was bedeutet es für den Entwickler, was sind Vorraussetzungen und auf was muss man achten.
Inhaltsverzeichnis
Das Thema Clean Core geistert aktuell bei vielen Unternehmen durch die Gänge, doch was bedeutet es eigentlich und wie kannst du es erreichen? In diesem Artikel wollen wir der Frage was genau dahinter steckt und wie du es heute schon bei dir umsetzen kannst.
Begriffserklärung
Wie der Begriff vermuten lässt, wollen wir unser Kernsystem sauber halten, also das System auf dem unsere Hauptprozesse laufen. Was bedeutet aber sauber? Hier geht es um den Anteil Eigenentwicklung und den Einfluss auf das System. Es gibt eine breite Palette von Erweiterungstechniken für ein SAP System, wie zum Beispiel: BADI, Enhancement oder Userexit. Am Ende aber auch die Möglichkeit für Modifikationen, dass heißt wir ändern den ausgelieferten Standard.
Und genau hier liegt das Problem, wir ändern Standardcoding, kopieren Funktionen oder nutzen nicht freigegebene APIs von der SAP. Das sorgt für einen gewissen Aufwand beim Upgrade, da wir den Standard abgleichen müssen zu unseren Änderungen und im Anschluss die Eigenentwicklungen ebenfalls komplett testen müssen. Denn nicht freigegebene Objekte bedeuten auch, dass diese sich ändern können oder gelöscht werden.
All dies verzögert einen Upgrade des Systems und bedeutet viel Aufwand beim Kunden. Mittlerweile liefert die SAP auch alle 3 Monate neue Releases aus, um neue Features zu bringen und Fehler zu beseitigen.
Konsequenz
Für dich als Entwickler bedeutet dies nun, dass du das System nur über freigegebene Erweiterungspunkte erweitern und freigegebenen Objekte nutzen solltest. Vor allem bei Eigenentwicklungen musst du dir dann Gedanken über die Verwendung und Anlage von neuen Datenelementen machen, da die meisten Datenelemente nicht freigegeben sind. Wieso solltest du keine Elemente von SAP verwenden die nicht freigegeben sind? Ganz einfach, da sich diese ebenso ändern können wie der Standard. Bei Datenelementen passiert das nicht so oft, erfordert aber jedes Mal einen entsprechenden Testaufwand.
Cloud Ready
Dazu sollten wir uns noch den zweiten Begriff anschauen, dieser heißt Cloud Ready. Dieser Zustand bezieht sich auf ein S/4 Cloud System, welches als SaaS Lösung zur Verfügung gestellt wird und nur einen sehr spartanischen Ansatz zur Erweiterung bietet. Der Upgrade des Systems erfolgt durch die SAP und damit ist so ein System automatisch Clean Core, bietet aber nicht den vollen Umfang zur Erweiterung.
Im Cloud Ready Kontext gibt es auch keine SAP GUI und Transaktionen mehr, alles basiert auf Fiori als Frontend, was die klassischen Transaktionen maximal über GUI for HTML funktioniert.
Erweiterung
Alles was eine Eigenentwicklung ist, stellt eine Erweiterung des Systems dar und ist im ersten Moment nicht Clean Core. Dazu stellt SAP drei verschiedene Erweiterungsmodelle zur Verfügung die du nutzen kannst:
- Keyuser Extensibility - Ist die Möglichkeit über Fiori Apps Erweiterungen am System vorzunehmen, z.B. um Z-Felder im Datenmodell anzulegen und auf das UI zu bringen, BADIs auszuprägen oder eigene CDS Views auf freigegebenen Views zu erstellen und als API zur Verfügung zu stellen.
- Side-by-Side Extensibility - Erstellung eigener Anwendungen im Z und Y Bereich auf einem eigenen System, meist in der Cloud (ABAP Environment aka Steampunk). Dabei werden APIs des Kernsystems konsumiert, um an Daten und Funktionen zu gelangen.
- Embedded Steambunk - Wird auch Developer Extensibility genannt, da hier dem Entwickler On-Stack die Möglichkeit gegeben wird, das System nach Clean Core Pattern zu erweitern.
Grundlage der beiden letzten Methoden ist das ABAP RESTful Programming Model (kurz RAP), welches in ABAP entwickelt wird und eine Fiori Anwendung am Ende zur Verfügung stellt.
Freigegebene Objekte
Freigegebene Objekte findest du über die ABAP Development Tools über die Suche oder über einen eigenen Baum, den du dir im Project Explorer erstellen kannst. Über den Project Explorer würde es entsprechend so aussehen:
Wenn du ein Objekt hast und nicht sicher bist, ob es freigegeben ist, dann kannst du über den "Properties" View aufrufen und bekommst die entsprechende Information über den API Status des Objekts. Hier einmal ein Besipiel für einen Core Data Service für den Business Partner:
Wichtig ist hier der C1 Contract, ob und wo das Objekt genutzt werden kann. Ist ein solcher Vertrag vorhanden, ist das Objekt freigegeben und kann genutzt werden. Der C0 Contract ist ein ganz neuer Status und bedeutet, dass das Objekt auch für die Erweiterung freigegeben ist.
Probleme
Die neue Welt klingt erst einmal in sich logisch und scheint einige Vorteile mitzubringen. Aber wenn man dann einmal auf die Möglichkeiten der kundenindividuellen Erweiterungen schaut, wird man schnell feststellen, dass noch vieles an Features fehlt, die man eigentlich bräuchte. APIs zur Bereitstellung der Daten gibt es noch nicht für alle Module und auch nicht für alle Tabellen gibt es bereits Core Data Services.
Mit Embedded Steampunk wartet zwar bereits ein erster Ansatz sich seine eigenen APIs zu bauen und viel direkt im System zu machen, doch wird es noch ein paar Jahre brauchen, bis es alle Kundenwünsche abdeckt.
Fazit
Du solltest nun erfahren haben was Clean Core eigentlich bedeutet und wofür es benötigt wird. Vor SAP liegt noch ein längerer Weg um den Kunden alles zu liefern, was sie für die saubere Erweiterung eines Systems benötigen. Doch die Grundsteine sind gelegt und du kannst sie bereits heute nutzen, um dein System in die richtige Richtung zu lenken.