Saltar al contenido
cd /languages
  • Núcleo empresarial
  • Programación
  • Soporte de AST y símbolos

ABAP en Maguyva: grafos de clases para el código a medida de SAP

Maguyva admite ABAP con AST, símbolos y grafo, para que los agentes de IA mapeen clases, interfaces, redefiniciones y excepciones en el código a medida de SAP.

Por qué vale la pena mapear ABAP antes de cambiarlo

El ABAP a medida suele contener décadas de reglas de negocio. El código es orientado a objetos en algunas partes y procedural en otras, y la estructura de herencia e interfaces decide qué método se ejecuta. Leer una clase a la vez no lo deja ver.

Maguyva entrega primero al agente el grafo de clases, de modo que un plan de cambio parte de lo que depende de una clase y no de una suposición.

Qué extrae Maguyva en ABAP

Maguyva analiza el código fuente .abap con una gramática ABAP dedicada. Los símbolos incluyen definiciones e implementaciones de clases, interfaces, declaraciones e implementaciones de métodos y rutinas FORM.

El grafo registra las relaciones que importan a quienes desarrollan en ABAP:

  • Herencia a partir de CLASS ... INHERITING FROM.
  • Implementación de interfaces a partir de INTERFACES.
  • Sobrescrituras a partir de METHODS ... REDEFINITION.
  • Excepciones a partir de RAISE EXCEPTION y CATCH.
  • Llamadas a métodos (obj->m( ), cls=>m( ), CALL METHOD), referencias de tipo a partir de TYPE y TYPE REF TO, y exportaciones de métodos de la sección pública atribuidas a su clase.
  • Lecturas, escrituras y flujo de control (IF, CASE, LOOP, TRY) dentro del cuerpo de los métodos.

Ejemplos de prompts para agentes

  • “¿Qué clases heredan de zcl_order_base y cuáles de sus métodos redefinen?” (find_symbol y luego dependency_search incoming)
  • “¿Dónde se lanza zcx_pricing_error y quién la captura?” (dependency_search)
  • “Resume cómo el flujo de creación de entregas va del reporte a la clase de persistencia.” (get_task_context)

Limitaciones conocidas

  • Open SQL (SELECT ... FROM ... INTO), EXEC SQL y AUTHORITY-CHECK no se analizan con la gramática ABAP actual, así que las lecturas de tablas mediante SQL todavía no son aristas del grafo. Usa text_pattern_search para los nombres de tablas.
  • Las cláusulas INTERFACES son relaciones de implementación, no importaciones. En la búsqueda estructural solo las sentencias INCLUDE se seleccionan como importaciones.
  • Maguyva indexa el ABAP que vive en un repositorio Git como archivos .abap. No se conecta a un sistema SAP.

Próximos pasos

Conecta un repositorio con el inicio rápido y luego revisa la matriz de compatibilidad en la página de compatibilidad. Para otros sistemas heredados, consulta la guía de COBOL.

Mejor uso

  • > Equipos de SAP que guardan su ABAP a medida en Git como archivos fuente `.abap` y necesitan entenderlo antes de una migración o una revisión de clean core.
  • > Patrimonios de ABAP orientado a objetos donde las jerarquías de clases, las interfaces y las redefiniciones ocultan qué implementación se ejecuta realmente.
  • > Análisis de impacto asistidos por agentes en los que la pregunta es: "¿qué se rompe si cambia esta clase?"

Flujos de trabajo del agente

  • > Mapear qué clases heredan de una clase base y qué métodos redefinen.
  • > Encontrar todas las clases que implementan una interfaz antes de cambiar las firmas de sus métodos.
  • > Rastrear dónde se lanza una clase de excepción y dónde se captura.

Detalles del motor

  • > ABAP se analiza con una gramática dedicada. Las clases, interfaces, declaraciones e implementaciones de métodos y las rutinas `FORM` son símbolos.
  • > El grafo registra la herencia de `INHERITING FROM`, la implementación de `INTERFACES`, las sobrescrituras de `REDEFINITION`, `RAISE EXCEPTION` y `CATCH`, y llamadas como `obj->m( )` y `cls=>m( )`.
  • > Open SQL, `EXEC SQL` y `AUTHORITY-CHECK` no se analizan con la gramática actual, así que las lecturas de tablas mediante SQL todavía no son aristas del grafo.

Puntos de entrada MCP útiles

  • find_symbol

    Úsalo con el nombre de una clase, interfaz o método cuando necesites su definición y sus referencias.

  • dependency_search

    Usa el recorrido incoming sobre una clase base o interfaz para encontrar subclases, implementaciones y llamadores antes de un cambio.

  • text_pattern_search

    Úsalo para nombres de tablas de base de datos y sentencias SQL que el grafo todavía no cubre.