Passer au contenu
cd /languages
  • Cœur de l'entreprise
  • Programmation
  • Prise en charge de l’AST et des symboles

ABAP dans Maguyva : des graphes de classes pour le code spécifique SAP

Maguyva prend en charge ABAP avec AST, symboles et graphe, pour que les agents IA cartographient classes, interfaces, redéfinitions et exceptions du code spécifique SAP.

Pourquoi cartographier ABAP avant de le modifier

L’ABAP spécifique porte souvent des décennies de règles métier. Le code est orienté objet à certains endroits et procédural à d’autres, et c’est la structure d’héritage et d’interfaces qui décide quelle méthode s’exécute. Lire une classe après l’autre ne le montre pas.

Maguyva donne d’abord à l’agent le graphe des classes, de sorte qu’un plan de modification part de ce qui dépend d’une classe plutôt que d’une supposition.

Ce que Maguyva extrait en ABAP

Maguyva analyse les sources .abap avec une grammaire ABAP dédiée. Les symboles comprennent les définitions et implémentations de classes, les interfaces, les déclarations et implémentations de méthodes, ainsi que les routines FORM.

Le graphe enregistre les relations qui comptent pour les développeurs ABAP :

  • L’héritage issu de CLASS ... INHERITING FROM.
  • L’implémentation d’interfaces issue de INTERFACES.
  • Les surcharges issues de METHODS ... REDEFINITION.
  • Les exceptions issues de RAISE EXCEPTION et CATCH.
  • Les appels de méthode (obj->m( ), cls=>m( ), CALL METHOD), les références de type issues de TYPE et TYPE REF TO, et les exports de méthodes de la section publique rattachés à leur classe.
  • Les lectures, écritures et le flux de contrôle (IF, CASE, LOOP, TRY) dans le corps des méthodes.

Exemples de prompts pour agents

  • « Quelles classes héritent de zcl_order_base, et lesquelles de ses méthodes redéfinissent-elles ? » (find_symbol, puis dependency_search en incoming)
  • « Où zcx_pricing_error est-elle levée, et qui l’intercepte ? » (dependency_search)
  • « Résume comment le flux de création de livraison passe du report à la classe de persistance. » (get_task_context)

Limites connues

  • Open SQL (SELECT ... FROM ... INTO), EXEC SQL et AUTHORITY-CHECK ne sont pas analysés par la grammaire ABAP actuelle ; les lectures de tables via SQL ne sont donc pas encore des arêtes du graphe. Utilisez text_pattern_search pour les noms de tables.
  • Les clauses INTERFACES sont des relations d’implémentation, pas des imports. Seules les instructions INCLUDE sont sélectionnées comme imports dans la recherche structurelle.
  • Maguyva indexe l’ABAP stocké dans un dépôt Git sous forme de fichiers .abap. Il ne se connecte pas à un système SAP.

Étapes suivantes

Connectez un dépôt avec le démarrage rapide, puis consultez la matrice de prise en charge sur la page de compatibilité. Pour d’autres patrimoines historiques, voir le guide COBOL.

Idéal pour

  • > Les équipes SAP qui versionnent leur ABAP spécifique dans Git sous forme de fichiers source `.abap` et doivent le comprendre avant une migration ou une revue clean core.
  • > Les patrimoines ABAP orientés objet où hiérarchies de classes, interfaces et redéfinitions masquent l'implémentation réellement exécutée.
  • > Les analyses d'impact assistées par agent où la question est : « Qu'est-ce qui casse si cette classe change ? »

Workflows d'agent

  • > Cartographier les classes qui héritent d'une classe de base et les méthodes qu'elles redéfinissent.
  • > Trouver toutes les classes qui implémentent une interface avant d'en modifier les signatures de méthode.
  • > Retracer où une classe d'exception est levée et où elle est interceptée.

Détails du moteur

  • > ABAP est analysé avec une grammaire dédiée. Les classes, interfaces, déclarations et implémentations de méthodes, et les routines `FORM` sont des symboles.
  • > Le graphe enregistre l'héritage `INHERITING FROM`, l'implémentation `INTERFACES`, les surcharges `REDEFINITION`, `RAISE EXCEPTION` et `CATCH`, ainsi que des appels comme `obj->m( )` et `cls=>m( )`.
  • > Open SQL, `EXEC SQL` et `AUTHORITY-CHECK` ne sont pas analysés par la grammaire actuelle ; les lectures de tables via SQL ne sont donc pas encore des arêtes du graphe.

Points d'entrée MCP utiles

  • find_symbol

    Utilisez-le pour un nom de classe, d'interface ou de méthode quand vous avez besoin de sa définition et de ses références.

  • dependency_search

    Utilisez la traversée incoming sur une classe de base ou une interface pour trouver sous-classes, implémentations et appelants avant un changement.

  • text_pattern_search

    Utilisez-le pour les noms de tables et les instructions SQL que le graphe ne couvre pas encore.