# ABAP in Maguyva: Klassengraphen für SAP-Eigenentwicklungen

Canonical source: https://maguyva.ai/de/languages/abap

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Maguyva unterstützt ABAP mit AST, Symbolen und Graph, damit KI-Agenten Klassen, Interfaces, Redefinitionen und Ausnahmen in SAP-Eigenentwicklungen erfassen können.

## Unterstützungsüberblick

- Stufe: AST- und Symbol-Support
- Programmierung
- Dateiendungen: .abap
- Echtes AST-Parsing für syntaxbewusste Suche und strukturellen Kontext.
- Benannte Symbole speisen semantisches Lookup und Cross-Referenzierung. Graph-Navigation ist verfügbar, wenn die Beziehungsextraktion aktiviert ist.
- Diese Sprache liefert Symbole und Beziehungen für die graphgestützte Suche; die unterstützten Kantentypen variieren je nach nativen Konstrukten der Sprache.
- AST-Parsing und Symbolextraktion sind beide verfügbar.

## Am besten geeignet

- SAP-Teams, die eigenes ABAP als `.abap`-Quelldateien in Git ablegen und es vor einer Migration oder einem Clean-Core-Review verstehen müssen.
- Objektorientierte ABAP-Bestände, in denen Klassenhierarchien, Interfaces und Redefinitionen verbergen, welche Implementierung tatsächlich läuft.
- Agentengestützte Auswirkungsanalysen, bei denen die Frage lautet: „Was bricht, wenn sich diese Klasse ändert?“

## Agentenabläufe

- Erfassen, welche Klassen von einer Basisklasse erben und welche Methoden sie redefinieren.
- Jede Klasse finden, die ein Interface implementiert, bevor sich dessen Methodensignaturen ändern.
- Nachverfolgen, wo eine Ausnahmeklasse ausgelöst und wo sie abgefangen wird.

## Warum es sich lohnt, ABAP vor einer Änderung zu kartieren

Eigenes ABAP trägt oft Geschäftsregeln aus Jahrzehnten. Der Code ist stellenweise objektorientiert, stellenweise prozedural, und die Vererbungs- und Interface-Struktur entscheidet, welche Methode läuft. Wer eine Klasse nach der anderen liest, sieht das nicht.

Maguyva gibt einem Agenten zuerst den Klassengraphen. So beginnt ein Änderungsplan bei dem, was von einer Klasse abhängt, statt bei einer Vermutung.

## Was Maguyva in ABAP extrahiert

Maguyva parst `.abap`-Quelltext mit einer eigenen ABAP-Grammatik. Zu den Symbolen gehören Klassendefinitionen und -implementierungen, Interfaces, Methodendeklarationen und -implementierungen sowie `FORM`-Routinen.

Der Graph erfasst die Beziehungen, auf die es ABAP-Entwicklern ankommt:

- Vererbung aus `CLASS ... INHERITING FROM`.
- Interface-Implementierung aus `INTERFACES`.
- Overrides aus `METHODS ... REDEFINITION`.
- Ausnahmen aus `RAISE EXCEPTION` und `CATCH`.
- Methodenaufrufe (`obj->m( )`, `cls=>m( )`, `CALL METHOD`), Typreferenzen aus `TYPE` und `TYPE REF TO` sowie Exporte von Methoden der Public Section, die ihrer Klasse zugeordnet werden.
- Lese- und Schreibzugriffe sowie Kontrollfluss (`IF`, `CASE`, `LOOP`, `TRY`) innerhalb von Methodenrümpfen.

## Beispiel-Prompts für Agenten

- „Welche Klassen erben von `zcl_order_base`, und welche ihrer Methoden redefinieren sie?“ (`find_symbol`, dann `dependency_search` incoming)
- „Wo wird `zcx_pricing_error` ausgelöst, und wer fängt sie ab?“ (`dependency_search`)
- „Fasse zusammen, wie der Ablauf zur Lieferungsanlage vom Report bis zur Persistenzklasse verläuft.“ (`get_task_context`)

## Bekannte Grenzen

- Open SQL (`SELECT ... FROM ... INTO`), `EXEC SQL` und `AUTHORITY-CHECK` lassen sich mit der aktuellen ABAP-Grammatik nicht parsen, daher sind Tabellenlesezugriffe über SQL noch keine Graphkanten. Verwende `text_pattern_search` für Tabellennamen.
- `INTERFACES`-Klauseln sind Implementierungsbeziehungen, keine Importe. In der Struktursuche werden nur `INCLUDE`-Anweisungen als Importe ausgewählt.
- Maguyva indexiert ABAP, das als `.abap`-Dateien in einem Git-Repository liegt. Es verbindet sich nicht mit einem SAP-System.

## Nächste Schritte

Verbinde ein Repository über den [Schnellstart](/de/docs/quickstart) und prüfe dann die Unterstützungsmatrix auf der [Kompatibilitätsseite](/de/docs/compatibility). Für andere Legacy-Bestände lies den [COBOL-Leitfaden](/de/languages/cobol).

## Engine-Einordnung

- ABAP wird mit einer eigenen Grammatik geparst. Klassen, Interfaces, Methodendeklarationen und -implementierungen sowie `FORM`-Routinen sind Symbole.
- Der Graph erfasst Vererbung über `INHERITING FROM`, Implementierung über `INTERFACES`, Overrides über `REDEFINITION`, `RAISE EXCEPTION` und `CATCH` sowie Aufrufe wie `obj->m( )` und `cls=>m( )`.
- Open SQL, `EXEC SQL` und `AUTHORITY-CHECK` lassen sich mit der aktuellen Grammatik nicht parsen, daher sind Tabellenlesezugriffe über SQL noch keine Graphkanten.

## Nützliche MCP-Einstiegspunkte

- `find_symbol`: Nutz es für einen Klassen-, Interface- oder Methodennamen, wenn du Definition und Referenzen brauchst.
- `dependency_search`: Nutz vor einer Änderung die eingehende Traversierung auf einer Basisklasse oder einem Interface, um Unterklassen, Implementierungen und Aufrufer zu finden.
- `text_pattern_search`: Nutz es für Datenbanktabellennamen und SQL-Anweisungen, die der Graph noch nicht abdeckt.
