Hopp til innhold
cd /languages
  • Virksomhetens kjerne
  • Programmering
  • AST- og symbolstøtte

ABAP i Maguyva: klassegrafer for egenutviklet SAP-kode

Maguyva støtter ABAP med AST, symboler og graf, slik at AI-agenter kan kartlegge klasser, grensesnitt, redefinisjoner og unntak i egenutviklet SAP-kode.

Hvorfor det lønner seg å kartlegge ABAP før du endrer den

Egenutviklet ABAP bærer ofte på flere tiår med forretningsregler. Koden er objektorientert noen steder og prosedyrisk andre steder, og det er arve- og grensesnittstrukturen som avgjør hvilken metode som kjører. Det ser du ikke når du leser én klasse om gangen.

Maguyva gir agenten klassegrafen først, slik at en endringsplan tar utgangspunkt i det som er avhengig av en klasse, og ikke i en gjetning.

Hva Maguyva henter ut i ABAP

Maguyva parser .abap-kildekode med en egen ABAP-grammatikk. Symbolene omfatter klassedefinisjoner og -implementasjoner, grensesnitt, metodedeklarasjoner og -implementasjoner samt FORM-rutiner.

Grafen registrerer relasjonene ABAP-utviklere bryr seg om:

  • Arv fra CLASS ... INHERITING FROM.
  • Grensesnittimplementasjon fra INTERFACES.
  • Overstyringer fra METHODS ... REDEFINITION.
  • Unntak fra RAISE EXCEPTION og CATCH.
  • Metodekall (obj->m( ), cls=>m( ), CALL METHOD), typereferanser fra TYPE og TYPE REF TO samt eksport av metoder i den offentlige seksjonen, tilskrevet klassen sin.
  • Lesinger, skrivinger og kontrollflyt (IF, CASE, LOOP, TRY) i metodekropper.

Eksempler på prompter for agenter

  • «Hvilke klasser arver fra zcl_order_base, og hvilke av metodene redefinerer de?» (find_symbol, deretter dependency_search incoming)
  • «Hvor kastes zcx_pricing_error, og hvem fanger den?» (dependency_search)
  • «Oppsummer hvordan flyten for å opprette leveranser går fra rapporten til persistensklassen.» (get_task_context)

Kjente begrensninger

  • Open SQL (SELECT ... FROM ... INTO), EXEC SQL og AUTHORITY-CHECK parses ikke av dagens ABAP-grammatikk, så tabellesinger via SQL er ennå ikke kanter i grafen. Bruk text_pattern_search for tabellnavn.
  • INTERFACES-klausuler er implementasjonsrelasjoner, ikke importer. I strukturelt søk velges bare INCLUDE-setninger som importer.
  • Maguyva indekserer ABAP som ligger i et Git-repositorium som .abap-filer. Den kobler seg ikke til et SAP-system.

Neste steg

Koble til et repositorium med hurtigstarten, og se deretter støttematrisen på kompatibilitetssiden. For andre eldre miljøer, se veiledningen for COBOL.

Best egnet

  • > SAP-team som lagrer egen ABAP i Git som `.abap`-kildefiler og må forstå den før en migrering eller en clean core-gjennomgang.
  • > Objektorienterte ABAP-miljøer der klassehierarkier, grensesnitt og redefinisjoner skjuler hvilken implementasjon som faktisk kjører.
  • > Agentstøttede konsekvensanalyser der spørsmålet er: «hva brekker hvis denne klassen endres?»

Agent-arbeidsflyter

  • > Kartlegge hvilke klasser som arver fra en basisklasse, og hvilke metoder de redefinerer.
  • > Finne alle klasser som implementerer et grensesnitt før metodesignaturene endres.
  • > Spore hvor en unntaksklasse kastes, og hvor den fanges.

Motordetaljer

  • > ABAP parses med en egen grammatikk. Klasser, grensesnitt, metodedeklarasjoner og -implementasjoner samt `FORM`-rutiner er symboler.
  • > Grafen registrerer arv via `INHERITING FROM`, implementasjon via `INTERFACES`, overstyringer via `REDEFINITION`, `RAISE EXCEPTION` og `CATCH` samt kall som `obj->m( )` og `cls=>m( )`.
  • > Open SQL, `EXEC SQL` og `AUTHORITY-CHECK` parses ikke av dagens grammatikk, så tabellesinger via SQL er ennå ikke kanter i grafen.

Nyttige MCP-inngangspunkter

  • find_symbol

    Bruk det for et klasse-, grensesnitt- eller metodenavn når du trenger definisjonen og referansene.

  • dependency_search

    Bruk incoming-traversering på en basisklasse eller et grensesnitt før en endring for å finne subklasser, implementasjoner og kallere.

  • text_pattern_search

    Bruk det for databasetabellnavn og SQL-setninger som grafen ennå ikke dekker.