# ABAP i Maguyva: klassegrafer til egenudviklet SAP-kode

Canonical source: https://maguyva.ai/da/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 understøtter ABAP med AST, symboler og graf, så AI-agenter kan kortlægge klasser, interfaces, redefinitioner og undtagelser i egenudviklet SAP-kode.

## Øjebliksbillede af understøttelse

- Niveau: AST- og symbolunderstøttelse
- Programmering
- Filendelser: .abap
- Rigtig AST-parsing til syntaksbevidst søgning og strukturel kontekst.
- Navngivne symboler understøtter semantisk opslag og krydsreferencer. Grafnavigation er tilgængelig, når relationsudtræk er aktiveret.
- Dette sprog bidrager med symboler og relationer til grafbaseret søgning; de understøttede kanttyper varierer med sprogets egne konstruktioner.
- Både AST-parsing og symboludtræk er tilgængelige.

## Bedst egnet til

- SAP-teams, der gemmer egen ABAP i Git som `.abap`-kildefiler og skal forstå den før en migrering eller en clean core-gennemgang.
- Objektorienterede ABAP-miljøer, hvor klassehierarkier, interfaces og redefinitioner skjuler, hvilken implementering der faktisk kører.
- Agentunderstøttede konsekvensanalyser, hvor spørgsmålet er: "hvad går i stykker, hvis denne klasse ændres?"

## Agent-arbejdsgange

- Kortlægge, hvilke klasser der arver fra en basisklasse, og hvilke metoder de redefinerer.
- Finde alle klasser, der implementerer et interface, før dets metodesignaturer ændres.
- Spore, hvor en undtagelsesklasse kastes, og hvor den fanges.

## Hvorfor det betaler sig at kortlægge ABAP, før du ændrer det

Egenudviklet ABAP bærer ofte på årtiers forretningsregler. Koden er objektorienteret nogle steder og proceduremæssig andre steder, og det er nedarvnings- og interfacestrukturen, der afgør, hvilken metode der kører. Det ser man ikke ved at læse én klasse ad gangen.

Maguyva giver agenten klassegrafen først, så en ændringsplan tager udgangspunkt i det, der afhænger af en klasse, og ikke i et gæt.

## Hvad Maguyva udtrækker i ABAP

Maguyva parser `.abap`-kildekode med en dedikeret ABAP-grammatik. Symbolerne omfatter klassedefinitioner og -implementeringer, interfaces, metodeerklæringer og -implementeringer samt `FORM`-rutiner.

Grafen registrerer de relationer, ABAP-udviklere går op i:

- Nedarvning fra `CLASS ... INHERITING FROM`.
- Interfaceimplementering fra `INTERFACES`.
- Overskrivninger fra `METHODS ... REDEFINITION`.
- Undtagelser fra `RAISE EXCEPTION` og `CATCH`.
- Metodekald (`obj->m( )`, `cls=>m( )`, `CALL METHOD`), typereferencer fra `TYPE` og `TYPE REF TO` samt eksport af metoder i den offentlige sektion, tilskrevet deres klasse.
- Læsninger, skrivninger og kontrolflow (`IF`, `CASE`, `LOOP`, `TRY`) i metodekroppe.

## Eksempler på prompts til agenter

- "Hvilke klasser arver fra `zcl_order_base`, og hvilke af dens metoder redefinerer de?" (`find_symbol`, derefter `dependency_search` incoming)
- "Hvor kastes `zcx_pricing_error`, og hvem fanger den?" (`dependency_search`)
- "Opsummer, hvordan flowet til oprettelse af leverancer går fra rapporten til persistensklassen." (`get_task_context`)

## Kendte begrænsninger

- Open SQL (`SELECT ... FROM ... INTO`), `EXEC SQL` og `AUTHORITY-CHECK` parses ikke af den nuværende ABAP-grammatik, så tabellæsninger via SQL er endnu ikke kanter i grafen. Brug `text_pattern_search` til tabelnavne.
- `INTERFACES`-klausuler er implementeringsrelationer, ikke importer. I strukturel søgning vælges kun `INCLUDE`-sætninger som importer.
- Maguyva indekserer ABAP, der ligger i et Git-repository som `.abap`-filer. Den forbinder ikke til et SAP-system.

## Næste skridt

Tilslut et repository med [hurtigstarten](/da/docs/quickstart), og se derefter understøttelsesmatricen på [kompatibilitetssiden](/da/docs/compatibility). Se [guiden til COBOL](/da/languages/cobol) for andre ældre miljøer.

## Motordetaljer

- ABAP parses med en dedikeret grammatik. Klasser, interfaces, metodeerklæringer og -implementeringer samt `FORM`-rutiner er symboler.
- Grafen registrerer nedarvning via `INHERITING FROM`, implementering via `INTERFACES`, overskrivninger via `REDEFINITION`, `RAISE EXCEPTION` og `CATCH` samt kald som `obj->m( )` og `cls=>m( )`.
- Open SQL, `EXEC SQL` og `AUTHORITY-CHECK` parses ikke af den nuværende grammatik, så tabellæsninger via SQL er endnu ikke kanter i grafen.

## Nyttige MCP-indgange

- `find_symbol`: Brug det til et klasse-, interface- eller metodenavn, når du har brug for definitionen og referencerne.
- `dependency_search`: Brug incoming-gennemløb på en basisklasse eller et interface før en ændring for at finde subklasser, implementeringer og kaldere.
- `text_pattern_search`: Brug det til databasetabelnavne og SQL-sætninger, som grafen endnu ikke dækker.
