# ABAP in Maguyva: grafi delle classi per il codice custom SAP

Canonical source: https://maguyva.ai/it/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 supporta ABAP con AST, simboli e grafo, così gli agenti IA mappano classi, interfacce, ridefinizioni ed eccezioni nel codice custom SAP.

## Istantanea del supporto

- Livello: Supporto AST e simboli
- Programmazione
- Estensioni: .abap
- Analisi AST reale per ricerca sintattica e contesto strutturale.
- I simboli nominati alimentano la ricerca semantica e i riferimenti incrociati. La navigazione del grafo è disponibile quando è abilitata l’estrazione delle relazioni.
- Questo linguaggio contribuisce con simboli e relazioni alla ricerca basata sul grafo; i tipi di arco supportati variano in base ai suoi costrutti nativi.
- Sono disponibili sia l’analisi AST sia l’estrazione dei simboli.

## Il più adatto per

- Team SAP che conservano l'ABAP custom in Git come file sorgente `.abap` e devono capirlo prima di una migrazione o di una revisione clean core.
- Patrimoni ABAP orientati agli oggetti in cui gerarchie di classi, interfacce e ridefinizioni nascondono quale implementazione viene davvero eseguita.
- Analisi d'impatto assistite da agenti in cui la domanda è: "cosa si rompe se cambia questa classe?"

## Workflow degli agenti

- Mappare quali classi ereditano da una classe base e quali metodi ridefiniscono.
- Trovare tutte le classi che implementano un'interfaccia prima di cambiarne le firme dei metodi.
- Tracciare dove una classe di eccezione viene sollevata e dove viene intercettata.

## Perché conviene mappare ABAP prima di modificarlo

L'ABAP custom porta spesso con sé decenni di regole di business. Il codice è orientato agli oggetti in alcune parti e procedurale in altre, e la struttura di ereditarietà e interfacce decide quale metodo viene eseguito. Leggere una classe alla volta non lo mostra.

Maguyva fornisce prima all'agente il grafo delle classi, così un piano di modifica parte da ciò che dipende da una classe e non da un'ipotesi.

## Cosa estrae Maguyva in ABAP

Maguyva analizza i sorgenti `.abap` con una grammatica ABAP dedicata. I simboli includono definizioni e implementazioni di classi, interfacce, dichiarazioni e implementazioni di metodi e routine `FORM`.

Il grafo registra le relazioni che contano per chi sviluppa in ABAP:

- Ereditarietà da `CLASS ... INHERITING FROM`.
- Implementazione di interfacce da `INTERFACES`.
- Override da `METHODS ... REDEFINITION`.
- Eccezioni da `RAISE EXCEPTION` e `CATCH`.
- Chiamate di metodo (`obj->m( )`, `cls=>m( )`, `CALL METHOD`), riferimenti di tipo da `TYPE` e `TYPE REF TO` ed export dei metodi della sezione pubblica attribuiti alla loro classe.
- Letture, scritture e flusso di controllo (`IF`, `CASE`, `LOOP`, `TRY`) nei corpi dei metodi.

## Esempi di prompt per agenti

- "Quali classi ereditano da `zcl_order_base` e quali dei suoi metodi ridefiniscono?" (`find_symbol`, poi `dependency_search` incoming)
- "Dove viene sollevata `zcx_pricing_error` e chi la intercetta?" (`dependency_search`)
- "Riassumi come il flusso di creazione delle consegne passa dal report alla classe di persistenza." (`get_task_context`)

## Limiti noti

- Open SQL (`SELECT ... FROM ... INTO`), `EXEC SQL` e `AUTHORITY-CHECK` non vengono analizzati dall'attuale grammatica ABAP, quindi le letture di tabelle via SQL non sono ancora archi del grafo. Usa `text_pattern_search` per i nomi delle tabelle.
- Le clausole `INTERFACES` sono relazioni di implementazione, non import. Nella ricerca strutturale solo le istruzioni `INCLUDE` vengono selezionate come import.
- Maguyva indicizza l'ABAP che si trova in un repository Git come file `.abap`. Non si collega a un sistema SAP.

## Prossimi passi

Collega un repository con la [guida rapida](/it/docs/quickstart), poi consulta la matrice di supporto nella [pagina di compatibilità](/it/docs/compatibility). Per altri sistemi legacy, consulta la [guida a COBOL](/it/languages/cobol).

## Dettagli del motore

- ABAP viene analizzato con una grammatica dedicata. Classi, interfacce, dichiarazioni e implementazioni di metodi e routine `FORM` sono simboli.
- Il grafo registra l'ereditarietà da `INHERITING FROM`, l'implementazione da `INTERFACES`, gli override da `REDEFINITION`, `RAISE EXCEPTION` e `CATCH`, e chiamate come `obj->m( )` e `cls=>m( )`.
- Open SQL, `EXEC SQL` e `AUTHORITY-CHECK` non vengono analizzati dalla grammatica attuale, quindi le letture di tabelle via SQL non sono ancora archi del grafo.

## Punti di ingresso MCP utili

- `find_symbol`: Usalo con il nome di una classe, interfaccia o metodo quando ti servono definizione e riferimenti.
- `dependency_search`: Usa la navigazione incoming su una classe base o un'interfaccia per trovare sottoclassi, implementazioni e chiamanti prima di una modifica.
- `text_pattern_search`: Usalo per i nomi delle tabelle del database e le istruzioni SQL che il grafo non copre ancora.
