ABAP Cloud Migrationsmuster: Strategien für die Codemodernisierung

Start Blog ABAP Cloud Migrationsmuster
Dezember 2025
15 Min. Lesezeit

Die Migration von klassischem ABAP zu ABAP Cloud erfordert mehr als nur das Beheben von Syntaxfehlern – sie verlangt nach durchdachten Mustern und Strategien, um Legacy-Code in zukunftssichere Lösungen zu transformieren.

Entwicklungsteams weltweit stehen vor der Aufgabe, bestehenden ABAP-Code für die Cloud-Welt fit zu machen. Dieser Artikel präsentiert bewährte Migrationsmuster, die den Übergang systematisch und effizient gestalten.

Das Migrationsspektrum verstehen

Nicht jede Migration folgt demselben Pfad. Je nach Ausgangssituation und Zielarchitektur ergeben sich unterschiedliche Strategien. Das Spektrum reicht von der einfachen API-Substitution, bei der ein nicht freigegebener Funktionsbaustein durch sein freigegebenes Äquivalent ersetzt wird, bis hin zur vollständigen Neuarchitektur, bei der monolithische Programme in modulare, serviceorientierte Komponenten transformiert werden.

Zwischen diesen Extremen finden sich Muster wie die Datenzugriffsabstraktion, die Kapselung von Geschäftslogik in Klassen und die Extraktion von UI-Code aus der Backend-Logik. Die Wahl des richtigen Musters hängt von Faktoren wie dem Geschäftswert des Codes, seiner technischen Schuld und den verfügbaren Ressourcen ab.

Muster 1: Der API-Wrapper

Anwendungsfall

Dieses Muster eignet sich, wenn Code auf nicht freigegebene SAP-Funktionalität zugreift, aber die Geschäftslogik selbst solide strukturiert ist. Anstatt den gesamten Code umzuschreiben, wird eine Abstraktionsschicht eingefügt, die den Zugriff auf die problematischen APIs kapselt.

Umsetzung

Der erste Schritt besteht darin, alle Aufrufe nicht freigegebener APIs zu identifizieren. Diese werden dann durch Aufrufe einer eigenen Wrapper-Klasse ersetzt. Die Wrapper-Klasse implementiert intern zunächst weiterhin die nicht freigegebene API, kann aber später – sobald freigegebene Alternativen verfügbar sind – ohne Änderung am aufrufenden Code angepasst werden.

Der Vorteil dieses Ansatzes liegt in der Isolation der technischen Schuld. Der Großteil des Codes wird sofort Clean Core-konform, während die verbleibenden Probleme klar lokalisiert und dokumentiert sind. Dies ermöglicht auch eine schrittweise Migration, bei der die Wrapper nacheinander durch echte freigegebene APIs ersetzt werden.

Muster 2: Die CDS-View-Brücke

Anwendungsfall

Klassischer ABAP-Code greift häufig direkt auf SAP-Standardtabellen zu. Diese direkten Zugriffe sind in ABAP Cloud nicht erlaubt. Die CDS-View-Brücke bietet einen eleganten Ausweg, indem sie eine saubere Datenzugriffsschicht zwischen der Anwendungslogik und den Datenquellen etabliert.

Umsetzung

Zunächst werden alle SELECT-Statements analysiert, die auf SAP-Tabellen zugreifen. Für jeden Datenzugriff wird geprüft, ob eine freigegebene CDS-View existiert, die die benötigten Daten liefert. In vielen Fällen stellt SAP bereits entsprechende I_-Views (Interface Views) zur Verfügung.

Wo keine passende freigegebene View existiert, wird eine eigene CDS-View erstellt, die auf freigegebenen Views basiert. Diese Custom Views können Felder umbenennen, Assoziationen definieren und berechnete Felder hinzufügen – alles ohne direkten Tabellenzugriff.

Der eigentliche ABAP-Code wird dann so angepasst, dass er ausschließlich auf CDS-Views zugreift. Diese Trennung verbessert nicht nur die Clean Core-Konformität, sondern erhöht auch die Wartbarkeit, da Änderungen am Datenmodell in der View-Schicht absorbiert werden können.

Muster 3: Die Klassenhierarchie-Extraktion

Anwendungsfall

Älterer ABAP-Code verwendet häufig FORM-Routinen, globale Variablen und prozedurale Strukturen. Dieses Muster transformiert solchen Code in eine saubere objektorientierte Architektur, die besser testbar, wartbar und erweiterbar ist.

Umsetzung

Die Extraktion beginnt mit der Identifikation von Verantwortlichkeiten im bestehenden Code. Zusammengehörige FORM-Routinen werden gruppiert und als Kandidaten für Klassen identifiziert. Globale Variablen werden zu Instanzattributen, FORM-Routinen zu Methoden.

Besondere Aufmerksamkeit verdienen Abhängigkeiten. Wo FORM-Routinen direkt auf globale Daten zugreifen, müssen diese Abhängigkeiten explizit gemacht werden – entweder durch Konstruktorparameter oder durch Dependency Injection. Dies verbessert nicht nur die Codequalität, sondern ermöglicht auch Unit-Tests mit Mock-Objekten.

Ein häufiger Fehler besteht darin, zu große Klassen zu erstellen. Besser ist es, nach dem Single Responsibility Principle zu arbeiten: Jede Klasse sollte genau einen Grund haben, sich zu ändern. Lieber mehrere kleine, fokussierte Klassen als eine große, die alles macht.

Muster 4: Das Interface-First-Design

Anwendungsfall

Bei der Migration komplexer Systeme mit vielen Abhängigkeiten empfiehlt sich das Interface-First-Design. Hierbei werden zuerst Interfaces definiert, bevor die Implementierungen migriert werden. Dies ermöglicht parallele Arbeit und reduziert das Migrationsrisiko.

Umsetzung

Der Prozess beginnt mit der Analyse der bestehenden Schnittstellen – nicht im technischen Sinne, sondern im Sinne von "welche Funktionalität wird von außen benötigt". Diese Funktionalität wird in ABAP-Interfaces formalisiert.

Anschließend werden zwei Implementierungen erstellt: eine Legacy-Implementierung, die den bestehenden Code kapselt, und eine neue Implementierung, die Clean Core-konform ist. Durch Dependency Injection kann zwischen beiden Implementierungen gewechselt werden, was schrittweise Migration und parallelen Betrieb ermöglicht.

Dieses Muster ist besonders wertvoll bei kritischen Geschäftsprozessen, wo ein Big-Bang-Umstieg zu riskant wäre. Die alte und neue Implementierung können parallel laufen, und bei Problemen kann schnell zurückgewechselt werden.

Muster 5: Die RAP-Transformation

Anwendungsfall

Für Anwendungen, die nicht nur migriert, sondern auch modernisiert werden sollen, bietet die Transformation zu RAP (RESTful ABAP Programming) den umfassendsten Ansatz. Hierbei wird klassischer Code in vollwertige RAP Business Objects umgewandelt.

Umsetzung

Die RAP-Transformation erfordert ein Umdenken in der Architektur. Der erste Schritt ist die Identifikation der Geschäftsobjekte im bestehenden Code. Was sind die zentralen Entitäten? Welche Operationen werden auf ihnen ausgeführt?

Diese Geschäftsobjekte werden dann als CDS-Views modelliert, komplett mit Assoziationen und Annotationen. Die Verhaltenslogik wird in Behavior Definitions und Behavior Implementations überführt. Dabei werden Determinations für automatische Feldberechnungen, Validations für Geschäftsregeln und Actions für spezielle Operationen definiert.

Der Aufwand für die RAP-Transformation ist höher als bei den anderen Mustern, aber die Vorteile sind erheblich: native Fiori-Integration, eingebaute Draft-Handling-Fähigkeit, standardisierte OData-Schnittstellen und vollständige Clean Core-Konformität.

Werkzeugunterstützung für die Migration

SAP stellt verschiedene Werkzeuge bereit, die die Migration unterstützen. Der ABAP Test Cockpit (ATC) identifiziert nicht konforme Codemuster und kategorisiert sie nach Schweregrad. Die Custom Code Migration Worklist in SAP Cloud ALM bietet eine zentrale Übersicht über alle Migrationsaufgaben und deren Status.

In ADT helfen Quick Fixes dabei, einfache Migrationsprobleme automatisch zu beheben. Für komplexere Fälle bieten die Refactoring-Werkzeuge Unterstützung bei der Extraktion von Methoden, dem Umbenennen von Variablen und der Einführung von Interfaces.

Besonders wertvoll ist die Released Objects Browser in ADT, die das Auffinden freigegebener APIs vereinfacht. Statt manuell nach Alternativen zu suchen, können Entwickler hier gezielt nach freigegebenen Klassen, Interfaces und CDS-Views suchen.

Risikomanagement bei der Migration

Jede Migration birgt Risiken. Das größte Risiko ist oft nicht technischer, sondern organisatorischer Natur: zu ambitionierte Zeitpläne, unzureichende Tests oder mangelnde Stakeholder-Kommunikation.

Ein bewährter Ansatz ist die Pilotierung. Anstatt alle Migrationen gleichzeitig anzugehen, wird zunächst ein repräsentativer Codebereich vollständig migriert. Die dabei gewonnenen Erkenntnisse fließen in die Planung der restlichen Migrationen ein.

Unverzichtbar ist eine umfassende Teststrategie. Idealerweise existieren bereits Unit-Tests, die das erwartete Verhalten dokumentieren. Falls nicht, sollten vor der Migration zumindest Characterization Tests erstellt werden, die das aktuelle Verhalten festhalten. Nach der Migration müssen diese Tests weiterhin bestehen.

Priorisierung der Migrationsarbeit

Nicht aller Code verdient den gleichen Migrationseinsatz. Eine sinnvolle Priorisierung berücksichtigt mehrere Faktoren: die tatsächliche Nutzung des Codes, seinen strategischen Wert, die technische Komplexität der Migration und die Verfügbarkeit freigegebener Alternativen.

Code, der nie ausgeführt wird, sollte nicht migriert, sondern stillgelegt werden. Aktiv genutzter, geschäftskritischer Code verdient Priorität und sorgfältige Migration. Code mittlerer Priorität kann mit einfacheren Mustern wie dem API-Wrapper behandelt werden, um schnelle Fortschritte zu erzielen.

Fazit

Die Migration zu ABAP Cloud ist keine einmalige Aktion, sondern ein fortlaufender Transformationsprozess. Die hier vorgestellten Muster bieten ein Repertoire an Werkzeugen, aus dem je nach Situation das passende gewählt werden kann.

Der Schlüssel zum Erfolg liegt in der systematischen Herangehensweise: gründliche Analyse vor der Migration, Auswahl des geeigneten Musters, sorgfältige Umsetzung mit Tests und kontinuierliche Verbesserung der Migrationspraktiken. Organisationen, die diese Prinzipien beherzigen, werden ihre Codebasis nicht nur Clean Core-konform machen, sondern dabei auch die Qualität und Wartbarkeit signifikant verbessern.

Passender Workshop

Vertiefen Sie Ihr Wissen in unserem eintägigen Workshop:

ABAP Cloud & RAP Workshop

Noch Fragen?

Wir unterstützen Sie bei Ihrer ABAP Cloud Migration.