# ABAP v Maguyva: grafy tříd pro vlastní kód SAP

Canonical source: https://maguyva.ai/cs/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 podporuje ABAP s AST, symboly a grafem, takže AI agenti mapují třídy, rozhraní, redefinice a výjimky ve vlastním kódu SAP.

## Přehled podpory

- Úroveň: Podpora AST a symbolů
- Programování
- Přípony: .abap
- Skutečné parsování AST pro vyhledávání citlivé na syntaxi a strukturální kontext.
- Pojmenované symboly napájejí sémantické vyhledávání a křížové odkazy. Navigace v grafu je k dispozici, když je povolena extrakce vztahů.
- Tento jazyk přispívá symboly a vztahy do vyhledávání využívajícího graf; podporované typy hran se liší podle jeho nativních konstrukcí.
- K dispozici je parsování AST i extrakce symbolů.

## Nejlépe se hodí pro

- Týmy SAP, které vlastní ABAP ukládají v Gitu jako zdrojové soubory `.abap` a potřebují mu porozumět před migrací nebo revizí clean core.
- Objektově orientované prostředí ABAP, kde hierarchie tříd, rozhraní a redefinice zakrývají, která implementace se skutečně spouští.
- Analýzy dopadu s podporou agentů, kde zní otázka: „co se rozbije, když se tato třída změní?“

## Workflow agentů

- Zmapovat, které třídy dědí ze základní třídy a které metody redefinují.
- Najít všechny třídy implementující rozhraní, než se změní signatury jeho metod.
- Dohledat, kde se třída výjimky vyvolává a kde se zachytává.

## Proč se vyplatí ABAP zmapovat před změnou

Vlastní ABAP často nese desítky let obchodních pravidel. Kód je místy objektově orientovaný, místy procedurální a to, která metoda se spustí, rozhoduje struktura dědičnosti a rozhraní. Při čtení jedné třídy po druhé to vidět není.

Maguyva dá agentovi nejdřív graf tříd, takže plán změny začíná u toho, co na třídě závisí, a ne u odhadu.

## Co Maguyva v ABAP extrahuje

Maguyva parsuje zdrojový kód `.abap` vyhrazenou gramatikou ABAP. Symboly zahrnují definice a implementace tříd, rozhraní, deklarace a implementace metod a rutiny `FORM`.

Graf zaznamenává vazby, na kterých vývojářům ABAP záleží:

- Dědičnost z `CLASS ... INHERITING FROM`.
- Implementaci rozhraní z `INTERFACES`.
- Přepisy z `METHODS ... REDEFINITION`.
- Výjimky z `RAISE EXCEPTION` a `CATCH`.
- Volání metod (`obj->m( )`, `cls=>m( )`, `CALL METHOD`), odkazy na typy z `TYPE` a `TYPE REF TO` a exporty metod z veřejné sekce přiřazené jejich třídě.
- Čtení, zápisy a tok řízení (`IF`, `CASE`, `LOOP`, `TRY`) v tělech metod.

## Ukázkové prompty pro agenty

- „Které třídy dědí z `zcl_order_base` a které její metody redefinují?“ (`find_symbol`, pak `dependency_search` incoming)
- „Kde se vyvolává `zcx_pricing_error` a kdo ji zachytává?“ (`dependency_search`)
- „Shrň, jak tok vytváření dodávek vede od reportu ke třídě perzistence.“ (`get_task_context`)

## Známá omezení

- Open SQL (`SELECT ... FROM ... INTO`), `EXEC SQL` a `AUTHORITY-CHECK` současná gramatika ABAP neparsuje, takže čtení tabulek přes SQL zatím nejsou hranami grafu. Pro názvy tabulek použijte `text_pattern_search`.
- Klauzule `INTERFACES` jsou vazby implementace, ne importy. Ve strukturním vyhledávání se jako importy vybírají jen příkazy `INCLUDE`.
- Maguyva indexuje ABAP uložený v repozitáři Git jako soubory `.abap`. K systému SAP se nepřipojuje.

## Další kroky

Připojte repozitář podle [rychlého startu](/cs/docs/quickstart) a pak si prohlédněte matici podpory na [stránce kompatibility](/cs/docs/compatibility). Pro další starší systémy si přečtěte [průvodce jazykem COBOL](/cs/languages/cobol).

## Podrobnosti enginu

- ABAP se parsuje vyhrazenou gramatikou. Symboly jsou třídy, rozhraní, deklarace a implementace metod a rutiny `FORM`.
- Graf zaznamenává dědičnost přes `INHERITING FROM`, implementaci přes `INTERFACES`, přepisy přes `REDEFINITION`, `RAISE EXCEPTION` a `CATCH` a volání jako `obj->m( )` a `cls=>m( )`.
- Open SQL, `EXEC SQL` a `AUTHORITY-CHECK` současná gramatika neparsuje, takže čtení tabulek přes SQL zatím nejsou hranami grafu.

## Užitečné vstupní body MCP

- `find_symbol`: Použijte s názvem třídy, rozhraní nebo metody, když potřebujete definici a odkazy.
- `dependency_search`: Před změnou použijte procházení incoming na základní třídě nebo rozhraní a najdete podtřídy, implementace i volající.
- `text_pattern_search`: Použijte pro názvy databázových tabulek a příkazy SQL, které graf zatím nepokrývá.
