# ABAP sa Maguyva: mga class graph para sa custom na SAP code

Canonical source: https://maguyva.ai/fil/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).

Sinusuportahan ng Maguyva ang ABAP gamit ang AST, mga symbol at graph, para ma-map ng mga AI agent ang mga class, interface, redefinition at exception sa custom na SAP code.

## Snapshot ng support

- Antas: Support para sa AST at mga simbolo
- Programming
- Mga extension: .abap
- Tunay na AST parsing para sa syntax-aware search at structural context.
- Pinapagana ng mga named symbol ang semantic lookup at cross-reference. Available ang graph navigation kapag naka-enable ang pagkuha ng mga ugnayan.
- Nag-aambag ang wikang ito ng mga simbolo at ugnayan sa graph-aware search; nag-iiba ang mga sinusuportahang uri ng edge ayon sa mga native construct nito.
- Available ang AST parsing at symbol extraction.

## Pinakabagay

- Mga SAP team na nag-iingat ng custom ABAP sa Git bilang mga `.abap` source file at kailangang maintindihan ito bago ang migration o clean-core review.
- Mga object-oriented na ABAP environment kung saan tinatago ng class hierarchy, mga interface at redefinition kung aling implementation talaga ang tumatakbo.
- Agent-assisted na impact analysis kung saan ang tanong ay: “ano ang masisira kapag nagbago ang class na ito?”

## Mga workflow ng agent

- I-map ang mga class na nagmamana mula sa isang base class at ang mga method na nire-redefine nila.
- Hanapin ang lahat ng class na nag-i-implement ng isang interface bago magbago ang mga method signature nito.
- I-trace kung saan nire-raise ang isang exception class at kung saan ito kinakatch.

## Bakit dapat i-map muna ang ABAP bago ito baguhin

Kadalasang dala ng custom ABAP ang mga business rule na naipon sa loob ng ilang dekada. May bahaging object-oriented ang code at may bahaging procedural, at ang structure ng inheritance at interface ang nagdedesisyon kung aling method ang tatakbo. Hindi iyon makikita kapag isang class lang ang binabasa mo sa bawat pagkakataon.

Ibinibigay muna ng Maguyva sa agent ang class graph, para magsimula ang change plan sa kung ano ang umaasa sa isang class, hindi sa hula.

## Ano ang kinukuha ng Maguyva mula sa ABAP

Pina-parse ng Maguyva ang `.abap` source gamit ang dedikadong ABAP grammar. Kasama sa mga symbol ang mga class definition at implementation, mga interface, mga method declaration at implementation, at mga `FORM` routine.

Itinatala ng graph ang mga relationship na mahalaga sa mga ABAP developer:

- Inheritance mula sa `CLASS ... INHERITING FROM`.
- Interface implementation mula sa `INTERFACES`.
- Mga override mula sa `METHODS ... REDEFINITION`.
- Mga exception mula sa `RAISE EXCEPTION` at `CATCH`.
- Mga method call (`obj->m( )`, `cls=>m( )`, `CALL METHOD`), mga type reference mula sa `TYPE` at `TYPE REF TO`, at mga export ng public-section method na naka-attribute sa class nila.
- Mga read, write at control flow (`IF`, `CASE`, `LOOP`, `TRY`) sa loob ng mga method body.

## Mga halimbawang agent prompt

- "Aling mga class ang nagmamana mula sa `zcl_order_base`, at aling mga method nito ang nire-redefine nila?" (`find_symbol`, tapos `dependency_search` na incoming)
- "Saan nire-raise ang `zcx_pricing_error`, at sino ang kumakatch nito?" (`dependency_search`)
- "Ibuod kung paano umuusad ang delivery creation flow mula sa report papunta sa persistence class." (`get_task_context`)

## Mga kilalang limitasyon

- Hindi pa pina-parse ng kasalukuyang ABAP grammar ang Open SQL (`SELECT ... FROM ... INTO`), `EXEC SQL` at `AUTHORITY-CHECK`, kaya hindi pa graph edge ang mga table read gamit ang SQL. Gamitin ang `text_pattern_search` para sa mga pangalan ng table.
- Implementation relationship ang mga `INTERFACES` statement, hindi import. Sa structural search, mga `INCLUDE` statement lang ang pinipili bilang import.
- Ini-index ng Maguyva ang ABAP na nasa Git repository bilang mga `.abap` file. Hindi ito kumokonekta sa isang SAP system.

## Mga susunod na hakbang

Mag-connect ng repository gamit ang [quickstart](/fil/docs/quickstart), tapos tingnan ang support matrix sa [compatibility page](/fil/docs/compatibility). Para sa iba pang legacy environment, tingnan ang [gabay sa COBOL](/fil/languages/cobol).

## Mga detalye ng engine

- Pina-parse ang ABAP gamit ang dedikadong grammar. Mga symbol ang mga class, interface, method declaration at implementation, at mga `FORM` routine.
- Itinatala ng graph ang inheritance gamit ang `INHERITING FROM`, implementation gamit ang `INTERFACES`, override gamit ang `REDEFINITION`, ang `RAISE EXCEPTION` at `CATCH`, at mga call tulad ng `obj->m( )` at `cls=>m( )`.
- Hindi pa pina-parse ng kasalukuyang grammar ang Open SQL, `EXEC SQL` at `AUTHORITY-CHECK`, kaya hindi pa graph edge ang mga table read gamit ang SQL.

## Mga kapaki-pakinabang na MCP entry point

- `find_symbol`: Gamitin kasama ang pangalan ng class, interface o method kapag kailangan mo ang definition at mga reference.
- `dependency_search`: Bago magbago, gumamit ng incoming traversal sa isang base class o interface para mahanap ang mga subclass, implementation at tumatawag.
- `text_pattern_search`: Gamitin para sa mga pangalan ng database table at mga SQL statement na hindi pa sakop ng graph.
