Blog · S/4HANA Migration

ATC-XML-Reports automatisiert auswerten: Was die Praxis aus 50.000 Zeilen Custom-Code-Analyse zeigt

Wer einen S/4HANA-Brownfield-Migrationsplan für einen regulierten Mandanten geschrieben hat, kennt das Gefühl: 27 ATC-Befunde pro Programm, hundert Programme, drei Wochen Auswertung in Excel. Es geht schneller — aber nicht durch Excel-Makros, sondern durch eine Auswertungs-Pipeline, die die ATC-XML-Struktur direkt liest und die Befunde nach Komplexität, Risiko und Migrationsstrategie clustert.

Dieser Beitrag zeigt, wie eine solche Pipeline aufgebaut wird, was sie aus 50.000 Zeilen Custom-Code-Analyse herausholt, und wo die Grenzen liegen — vor allem bei DSGVO-Anforderungen, die in DACH-Projekten oft das Tooling treiben.

1. Das ATC-XML-Format: Was drinsteht und was nicht

Das ABAP Test Cockpit (Transaktion ATC, Bestandteil von SAP NetWeaver Application Server) liefert nach einem Lauf eine Befund-Liste. Über /UI2/ATC_RUN_RESULT_DOWNLOAD oder den Custom Code Migration Cockpit kann diese als XML exportiert werden. Pro Befund enthält die XML genau diese Felder:

Was das XML nicht enthält und worauf Auswertungstools oft hereinfallen:

Eine Excel-Auswertung scheitert nicht daran, dass Excel zu schwach ist, sondern daran, dass die zur belastbaren Klassifikation nötigen Datenquellen erst kombiniert werden müssen. Pivots über OBJ_TYPE × PRIORITY ergeben Übersicht, aber keine Migrations-Empfehlung.

2. Die Komplexitäts-Heuristiken: Was wirklich greift

Eine produktive Pipeline kombiniert vier Heuristik-Quellen pro Befund:

Erstens, Cyclomatic Complexity — entweder aus einer ergänzenden ATC-Custom-Check-Suite oder aus externen ABAP-Metrics-Tools (Code Inspector mit erweiterten Profilen, Linecount-Aggregation). Eine Methode mit zyklomatischer Komplexität > 15 ist ein anderer Migrationsfall als ein einfacher SELECT-WRITE-Report.

Zweitens, Risiko-Hotspot-Cluster — bestimmte ABAP-Sprachfeatures sind in S/4HANA obsolet oder verboten:

Drittens, Migrations-Klassifikation — vier Stufen, die sich als Workflow-Tag bewährt haben:

Viertens, kundenspezifische Cleansing-Regeln — nicht jede Heuristik ist allgemeingültig. Ein Versorger mit 30 Jahren ABAP-Historie hat andere «Quick-Win»-Muster als eine Stadtverwaltung mit hauptsächlich SAP-Standard und wenig Custom-Code. Diese Regeln gehören in eine externe Konfiguration, nicht in den Pipeline-Kern.

3. SYCM als zweite Datenquelle

Eine Beobachtung aus den ersten Pilot-Gesprächen, die immer wieder auftaucht: Beratungen unterstützen S/4-Migrationen primär mit ATC, weil ATC bereits Teil des Standard-Workflows ist. SYCM (System Custom-Code-Migration-Cockpit, Transaktion SYCM oder /SDF/CUSTCODE_REPORT) wird oft übersprungen, weil der Output sperriger ist und kein Standard-Excel-Template existiert.

Das ist eine vertane Chance. Die SYCM-Reference-Daten beantworten eine Frage, die ATC strukturell nicht beantworten kann: Welche Custom-Code-Objekte werden überhaupt noch produktiv genutzt? Bei einem typischen DACH-Mandantensystem zeigt SYCM, dass 20-40 Prozent der Custom-Code-Objekte zwar im System liegen, aber seit über 12 Monaten keinen Aufruf mehr hatten. Diese Out-of-scope-Befunde müssen bei der S/4-Migration nicht refaktoriert werden — sie gehören stillgelegt.

Die Kombination ATC + SYCM erlaubt drei Aussagen pro Befund: (a) ist es ein Migrations-Pflichtthema, (b) ist das betroffene Objekt überhaupt aktiv im Einsatz, (c) wer ruft es auf (Fachbereich, Schnittstelle, Hintergrundjob). Erst aus dieser Kombination wird die Quick-Win/Refactor/Re-implement/Out-of-scope-Klassifikation belastbar.

Eine bekannte Limitierung: das aktuelle SYCM-Reference-Format speichert maximal 5.000 Einträge pro Audit. Bei NIE-Klasse-Mandanten (mehrere zehntausend Custom-Code-Objekte) läuft die Reference-Auswertung deshalb im Sample-Modus. Das ist eine Roadmap-Limitierung, die offen kommuniziert gehört, weil sie die Aussagekraft der Out-of-scope-Klassifikation beschränkt.

4. DSGVO als Constraint: Warum das Tooling oft das Projektkonzept bestimmt

Beraterprojekte mit öffentlichem Sektor, Banken, Energieversorgern oder anderen KRITIS-Betreibern stehen vor einer einfachen Frage: Darf der ATC-XML-Export zu einem US-Cloud-Tool fließen? In den meisten DACH-Compliance-Regimen lautet die Antwort nein — auch wenn der Export technisch keine personenbezogenen Daten enthält.

Konsequenzen für die Tool-Auswahl:

Das schließt die naheliegende Lösung (ATC-XML in ChatGPT pasten, Klassifikation per Prompt anfragen) für regulierte Mandanten praktisch aus. SaaS-Lösungen mit EU-Hosting + ohne SAP-Direktzugang gewinnen in dieser Klasse.

5. Praxis-Beispiel: Anonymisiertes Mini-Case

Ein Pilot mit einem kommunalen Versorger in NRW, im Brownfield-Migrationspfad nach S/4HANA:

Die Klassifikation ist immer ein Vorschlag, kein Urteil. Der Senior-Berater reviewt jeden Quick-Win-Vorschlag und überstimmt die Heuristik, wo nötig. Der Wertbeitrag der Pipeline ist nicht «Ersatz der Senior-Beurteilung», sondern «Wegfall der Erstsichtung».

6. Was nicht funktioniert: Ehrlichkeit baut Vertrauen

Drei Dinge, die in der Praxis nicht greifen — wichtig vor jedem Pilot-Gespräch zu kommunizieren:

Erstens, generische Code-Quality-Metriken treffen oft daneben. SonarQube-Ports auf ABAP, generische Linter, externe Cyclomatic-Complexity-Tools messen Eigenschaften, die in der ABAP-Welt nicht 1:1 das Migrations-Risiko abbilden. Ein hochkomplexer ABAP-Report, der seit 15 Jahren stabil läuft, ist ein anderer Migrations-Fall als ein neuer, einfacher Report mit fragwürdigen BSEG-Zugriffen.

Zweitens, automatisches Refactoring durch KI ist noch nicht produktionsnah genug. Auswertung und Klassifizierung — ja, mit guter Genauigkeit (>90 % bei klaren Fällen, deutlich niedriger bei Grenzfällen). Automatisches Refactoring im Sinne von «die KI schreibt den S/4-konformen Ersatzcode und der wird produktiv eingesetzt» — nein. Der generierte Code braucht denselben Senior-Review wie manuell geschriebener Code, sonst verschiebt sich das Risiko nur.

Drittens, ATC-Custom-Checks brauchen weiterhin manuelle Pflege. Wenn ein Beratungshaus eigene Custom-Checks unterhält (für unternehmensspezifische Coding-Conventions oder Mandanten-spezifische Migrations-Heuristiken), liegen diese in der eigenen Z_CL_CI_*-Familie und gehen nicht in die Pipeline ein, sofern die Pipeline nicht explizit damit gefüttert wird.

7. Take-aways

Habt ihr ähnliche Pipelines aufgebaut? Wie aggregiert ihr ATC-Befunde über mehrere Pakete? Welche Heuristiken funktionieren bei euren Mandanten zuverlässig, welche nicht? Antworten gerne per E-Mail an [email protected] — der Austausch in der Community ist genauso wichtig wie der Code.