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

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

## Resumen de soporte

- Nivel: Soporte de AST y símbolos
- Programación
- Extensiones: .abap
- Análisis AST real para búsqueda con reconocimiento de sintaxis y contexto estructural.
- Los símbolos con nombre alimentan la búsqueda semántica y las referencias cruzadas. La navegación por grafo está disponible cuando la extracción de relaciones está habilitada.
- Este lenguaje aporta símbolos y relaciones a la búsqueda basada en grafos; los tipos de arista disponibles varían según sus construcciones nativas.
- Están disponibles tanto el análisis AST como la extracción de símbolos.

## 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.

## 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](/es/docs/quickstart) y luego revisa la matriz de compatibilidad en la [página de compatibilidad](/es/docs/compatibility). Para otros sistemas heredados, consulta la [guía de COBOL](/es/languages/cobol).

## 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.
