Hoppa till innehåll
cd /languages
  • Företagets kärna
  • Programmering
  • Stöd för AST och symboler

ABAP i Maguyva: klassgrafer för egenutvecklad SAP-kod

Maguyva stöder ABAP med AST, symboler och graf, så att AI-agenter kan kartlägga klasser, gränssnitt, omdefinitioner och undantag i egenutvecklad SAP-kod.

Varför det lönar sig att kartlägga ABAP innan du ändrar det

Egenutvecklad ABAP bär ofta på årtionden av affärsregler. Koden är objektorienterad på vissa ställen och procedurell på andra, och arvs- och gränssnittsstrukturen avgör vilken metod som körs. Det syns inte om man läser en klass i taget.

Maguyva ger agenten klassgrafen först, så att en ändringsplan utgår från det som beror på en klass i stället för från en gissning.

Vad Maguyva extraherar i ABAP

Maguyva parsar .abap-källkod med en egen ABAP-grammatik. Symbolerna omfattar klassdefinitioner och -implementationer, gränssnitt, metoddeklarationer och -implementationer samt FORM-rutiner.

Grafen registrerar de relationer som ABAP-utvecklare bryr sig om:

  • Arv från CLASS ... INHERITING FROM.
  • Gränssnittsimplementation från INTERFACES.
  • Överskrivningar från METHODS ... REDEFINITION.
  • Undantag från RAISE EXCEPTION och CATCH.
  • Metodanrop (obj->m( ), cls=>m( ), CALL METHOD), typreferenser från TYPE och TYPE REF TO samt exporter av metoder i den publika sektionen som tillskrivs sin klass.
  • Läsningar, skrivningar och kontrollflöde (IF, CASE, LOOP, TRY) i metodkroppar.

Exempel på prompter för agenter

  • “Vilka klasser ärver från zcl_order_base, och vilka av dess metoder omdefinierar de?” (find_symbol, sedan dependency_search incoming)
  • “Var kastas zcx_pricing_error, och vem fångar den?” (dependency_search)
  • “Sammanfatta hur flödet för att skapa leveranser går från rapporten till persistensklassen.” (get_task_context)

Kända begränsningar

  • Open SQL (SELECT ... FROM ... INTO), EXEC SQL och AUTHORITY-CHECK parsas inte av den nuvarande ABAP-grammatiken, så tabelläsningar via SQL är ännu inte kanter i grafen. Använd text_pattern_search för tabellnamn.
  • INTERFACES-satser är implementationsrelationer, inte importer. I strukturell sökning väljs bara INCLUDE-satser som importer.
  • Maguyva indexerar ABAP som ligger i ett Git-repo som .abap-filer. Den ansluter inte till ett SAP-system.

Nästa steg

Anslut ett repo med snabbstarten och kontrollera sedan stödmatrisen på kompatibilitetssidan. För andra äldre miljöer, se guiden för COBOL.

Bäst lämpad för

  • > SAP-team som lagrar egen ABAP i Git som `.abap`-källfiler och behöver förstå den före en migrering eller en clean core-granskning.
  • > Objektorienterade ABAP-miljöer där klasshierarkier, gränssnitt och omdefinitioner döljer vilken implementation som faktiskt körs.
  • > Agentstödda konsekvensanalyser där frågan är: "vad går sönder om den här klassen ändras?"

Agentarbetsflöden

  • > Kartlägga vilka klasser som ärver från en basklass och vilka metoder de omdefinierar.
  • > Hitta alla klasser som implementerar ett gränssnitt innan dess metodsignaturer ändras.
  • > Spåra var en undantagsklass kastas och var den fångas.

Motordetaljer

  • > ABAP parsas med en egen grammatik. Klasser, gränssnitt, metoddeklarationer och -implementationer samt `FORM`-rutiner är symboler.
  • > Grafen registrerar arv via `INHERITING FROM`, implementation via `INTERFACES`, överskrivningar via `REDEFINITION`, `RAISE EXCEPTION` och `CATCH` samt anrop som `obj->m( )` och `cls=>m( )`.
  • > Open SQL, `EXEC SQL` och `AUTHORITY-CHECK` parsas inte av den nuvarande grammatiken, så tabelläsningar via SQL är ännu inte kanter i grafen.

Användbara MCP-ingångar

  • find_symbol

    Använd det för ett klass-, gränssnitts- eller metodnamn när du behöver definitionen och referenserna.

  • dependency_search

    Använd incoming-traversering på en basklass eller ett gränssnitt före en ändring för att hitta subklasser, implementationer och anropare.

  • text_pattern_search

    Använd det för databastabellnamn och SQL-satser som grafen ännu inte täcker.