Naar inhoud springen
cd /languages
  • Kern van de onderneming
  • Programmeren
  • AST- en symboolondersteuning

ABAP in Maguyva: klassengrafen voor SAP-maatwerk

Maguyva ondersteunt ABAP met AST, symbolen en graaf, zodat AI-agents klassen, interfaces, herdefinities en exceptions in SAP-maatwerkcode in kaart brengen.

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 en bekijk daarna de ondersteuningsmatrix op de compatibiliteitspagina. Voor andere legacy-omgevingen, zie de COBOL-gids.

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.

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.