# ABAP i Maguyva: klassegrafer for egenutviklet SAP-kode

Canonical source: https://maguyva.ai/nb/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 støtter ABAP med AST, symboler og graf, slik at AI-agenter kan kartlegge klasser, grensesnitt, redefinisjoner og unntak i egenutviklet SAP-kode.

## Støtteoversikt

- Nivå: AST- og symbolstøtte
- Programmering
- Filendelser: .abap
- Ekte AST-analyse for syntaksbevisst søk og strukturell kontekst.
- Navngitte symboler mater semantisk oppslag og kryssreferanser. Grafnavigasjon er tilgjengelig når relasjonsuttrekk er aktivert.
- Dette språket bidrar med symboler og relasjoner til grafbasert søk; støttede kanttyper varierer med språkets egne konstruksjoner.
- Både AST-analyse og symboluttrekk er tilgjengelige.

## 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.

## 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](/nb/docs/quickstart), og se deretter støttematrisen på [kompatibilitetssiden](/nb/docs/compatibility). For andre eldre miljøer, se [veiledningen for COBOL](/nb/languages/cobol).

## 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.
