# ABAP in Maguyva: klassengrafen voor SAP-maatwerk

Canonical source: https://maguyva.ai/nl/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 ondersteunt ABAP met AST, symbolen en graaf, zodat AI-agents klassen, interfaces, herdefinities en exceptions in SAP-maatwerkcode in kaart brengen.

## Ondersteuningsoverzicht

- Tier: AST- en symboolondersteuning
- Programmeren
- Extensies: .abap
- Echte AST-parsing voor syntaxbewust zoeken en structurele context.
- Benoemde symbolen voeden semantische lookup en kruisverwijzingen. Graafnavigatie is beschikbaar wanneer relatie-extractie is ingeschakeld.
- Deze taal draagt symbolen en relaties bij aan graafbewust zoeken; ondersteunde kanttypen variëren met de eigen constructies van de taal.
- Zowel AST-parsing als symboolextractie zijn beschikbaar.

## Beste toepassing

- SAP-teams die hun ABAP-maatwerk als `.abap`-bronbestanden in Git bewaren en het moeten begrijpen vóór een migratie of clean-core-review.
- Objectgeoriënteerde ABAP-omgevingen waarin klassenhiërarchieën, interfaces en herdefinities verbergen welke implementatie echt draait.
- Door agents ondersteunde impactanalyses waarbij de vraag is: "wat breekt er als deze klasse verandert?"

## Agentworkflows

- In kaart brengen welke klassen van een basisklasse erven en welke methoden ze herdefiniëren.
- Elke klasse vinden die een interface implementeert voordat de methodesignaturen veranderen.
- Nagaan waar een exceptionklasse wordt opgeworpen en waar die wordt afgevangen.

## Waarom het loont om ABAP in kaart te brengen voordat je het wijzigt

ABAP-maatwerk bevat vaak tientallen jaren aan bedrijfsregels. De code is op sommige plekken objectgeoriënteerd en op andere procedureel, en de overervings- en interfacestructuur bepaalt welke methode draait. Wie klasse voor klasse leest, ziet dat niet.

Maguyva geeft een agent eerst de klassengraaf, zodat een wijzigingsplan begint bij wat van een klasse afhangt in plaats van bij een gok.

## Wat Maguyva in ABAP extraheert

Maguyva parseert `.abap`-broncode met een eigen ABAP-grammatica. Symbolen zijn onder meer klassedefinities en -implementaties, interfaces, methodedeclaraties en -implementaties, en `FORM`-routines.

De graaf legt de relaties vast waar ABAP-ontwikkelaars om geven:

- Overerving uit `CLASS ... INHERITING FROM`.
- Interface-implementatie uit `INTERFACES`.
- Overrides uit `METHODS ... REDEFINITION`.
- Exceptions uit `RAISE EXCEPTION` en `CATCH`.
- Methodeaanroepen (`obj->m( )`, `cls=>m( )`, `CALL METHOD`), typeverwijzingen uit `TYPE` en `TYPE REF TO`, en exports van methoden uit de public section die aan hun klasse worden toegeschreven.
- Lees- en schrijfacties en control flow (`IF`, `CASE`, `LOOP`, `TRY`) binnen methodebodies.

## Voorbeeldprompts voor agents

- "Welke klassen erven van `zcl_order_base`, en welke van zijn methoden herdefiniëren ze?" (`find_symbol`, daarna `dependency_search` incoming)
- "Waar wordt `zcx_pricing_error` opgeworpen, en wie vangt hem af?" (`dependency_search`)
- "Vat samen hoe de flow voor het aanmaken van leveringen van het report naar de persistentieklasse loopt." (`get_task_context`)

## Bekende beperkingen

- Open SQL (`SELECT ... FROM ... INTO`), `EXEC SQL` en `AUTHORITY-CHECK` worden door de huidige ABAP-grammatica niet geparseerd, dus tabellezingen via SQL zijn nog geen randen in de graaf. Gebruik `text_pattern_search` voor tabelnamen.
- `INTERFACES`-clausules zijn implementatierelaties, geen imports. In structureel zoeken worden alleen `INCLUDE`-statements als imports geselecteerd.
- Maguyva indexeert ABAP dat als `.abap`-bestanden in een Git-repository staat. Het maakt geen verbinding met een SAP-systeem.

## Volgende stappen

Koppel een repository via de [snelstart](/nl/docs/quickstart) en bekijk daarna de ondersteuningsmatrix op de [compatibiliteitspagina](/nl/docs/compatibility). Voor andere legacy-omgevingen, zie de [COBOL-gids](/nl/languages/cobol).

## Enginedetails

- ABAP wordt geparseerd met een eigen grammatica. Klassen, interfaces, methodedeclaraties en -implementaties, en `FORM`-routines zijn symbolen.
- De graaf legt overerving via `INHERITING FROM` vast, implementatie via `INTERFACES`, overrides via `REDEFINITION`, `RAISE EXCEPTION` en `CATCH`, en aanroepen zoals `obj->m( )` en `cls=>m( )`.
- Open SQL, `EXEC SQL` en `AUTHORITY-CHECK` worden door de huidige grammatica niet geparseerd, dus tabellezingen via SQL zijn nog geen randen in de graaf.

## Nuttige MCP-instappunten

- `find_symbol`: Gebruik het voor een klasse-, interface- of methodenaam wanneer je de definitie en verwijzingen nodig hebt.
- `dependency_search`: Gebruik vóór een wijziging incoming-traversal op een basisklasse of interface om subklassen, implementaties en aanroepers te vinden.
- `text_pattern_search`: Gebruik het voor databasetabelnamen en SQL-statements die de graaf nog niet dekt.
