Vai al contenuto
cd /languages
  • Cuore aziendale
  • Programmazione
  • Supporto AST e simboli

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

Maguyva supporta ABAP con AST, simboli e grafo, così gli agenti IA mappano classi, interfacce, ridefinizioni ed eccezioni nel codice custom SAP.

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, poi consulta la matrice di supporto nella pagina di compatibilità. Per altri sistemi legacy, consulta la guida a COBOL.

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.

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.