# ABAP no Maguyva: grafos de classes para código customizado SAP

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

O Maguyva oferece suporte a ABAP com AST, símbolos e grafo, para que agentes de IA mapeiem classes, interfaces, redefinições e exceções no código customizado SAP.

## Panorama de suporte

- Nível: Suporte a AST e símbolos
- Programação
- Extensões: .abap
- Parsing real de AST para busca com consciência de sintaxe e contexto estrutural.
- Símbolos nomeados alimentam a busca semântica e as referências cruzadas. A navegação por grafo fica disponível quando a extração de relações está habilitada.
- Esta linguagem fornece símbolos e relações para a busca orientada por grafo; os tipos de aresta compatíveis variam de acordo com seus construtos nativos.
- A análise de AST e a extração de símbolos estão disponíveis.

## Uso ideal

- Equipes SAP que guardam o ABAP customizado no Git como arquivos-fonte `.abap` e precisam entendê-lo antes de uma migração ou revisão de clean core.
- Acervos de ABAP orientado a objetos em que hierarquias de classes, interfaces e redefinições escondem qual implementação realmente roda.
- Análises de impacto assistidas por agentes em que a pergunta é: "o que quebra se esta classe mudar?"

## Fluxos de trabalho de agente

- Mapear quais classes herdam de uma classe base e quais métodos elas redefinem.
- Encontrar todas as classes que implementam uma interface antes de mudar as assinaturas dos métodos.
- Rastrear onde uma classe de exceção é lançada e onde é capturada.

## Por que vale a pena mapear ABAP antes de mudá-lo

O ABAP customizado costuma carregar décadas de regras de negócio. O código é orientado a objetos em algumas partes e procedural em outras, e a estrutura de herança e interfaces decide qual método roda. Ler uma classe de cada vez não revela isso.

O Maguyva entrega primeiro ao agente o grafo de classes, de modo que o plano de mudança parte do que depende de uma classe, e não de um palpite.

## O que o Maguyva extrai em ABAP

O Maguyva analisa o código-fonte `.abap` com uma gramática ABAP dedicada. Os símbolos incluem definições e implementações de classes, interfaces, declarações e implementações de métodos e rotinas `FORM`.

O grafo registra as relações que importam para quem desenvolve em ABAP:

- Herança a partir de `CLASS ... INHERITING FROM`.
- Implementação de interfaces a partir de `INTERFACES`.
- Sobrescritas a partir de `METHODS ... REDEFINITION`.
- Exceções a partir de `RAISE EXCEPTION` e `CATCH`.
- Chamadas de método (`obj->m( )`, `cls=>m( )`, `CALL METHOD`), referências de tipo a partir de `TYPE` e `TYPE REF TO`, e exportações de métodos da seção pública atribuídas à sua classe.
- Leituras, escritas e fluxo de controle (`IF`, `CASE`, `LOOP`, `TRY`) dentro do corpo dos métodos.

## Exemplos de prompts para agentes

- "Quais classes herdam de `zcl_order_base` e quais dos seus métodos elas redefinem?" (`find_symbol`, depois `dependency_search` incoming)
- "Onde `zcx_pricing_error` é lançada e quem a captura?" (`dependency_search`)
- "Resuma como o fluxo de criação de remessas vai do report até a classe de persistência." (`get_task_context`)

## Limitações conhecidas

- Open SQL (`SELECT ... FROM ... INTO`), `EXEC SQL` e `AUTHORITY-CHECK` não são analisados pela gramática ABAP atual, então leituras de tabelas via SQL ainda não são arestas do grafo. Use `text_pattern_search` para nomes de tabelas.
- Cláusulas `INTERFACES` são relações de implementação, não importações. Na busca estrutural, apenas instruções `INCLUDE` são selecionadas como importações.
- O Maguyva indexa o ABAP que fica em um repositório Git como arquivos `.abap`. Ele não se conecta a um sistema SAP.

## Próximos passos

Conecte um repositório pelo [início rápido](/pt-br/docs/quickstart) e depois confira a matriz de suporte na [página de compatibilidade](/pt-br/docs/compatibility). Para outros sistemas legados, veja o [guia de COBOL](/pt-br/languages/cobol).

## Detalhes do motor

- ABAP é analisado com uma gramática dedicada. Classes, interfaces, declarações e implementações de métodos e rotinas `FORM` são símbolos.
- O grafo registra herança via `INHERITING FROM`, implementação via `INTERFACES`, sobrescritas via `REDEFINITION`, `RAISE EXCEPTION` e `CATCH`, e chamadas como `obj->m( )` e `cls=>m( )`.
- Open SQL, `EXEC SQL` e `AUTHORITY-CHECK` não são analisados pela gramática atual, então leituras de tabelas via SQL ainda não são arestas do grafo.

## Pontos de entrada MCP úteis

- `find_symbol`: Use com o nome de uma classe, interface ou método quando precisar da definição e das referências.
- `dependency_search`: Use a travessia incoming em uma classe base ou interface para encontrar subclasses, implementações e chamadores antes de uma mudança.
- `text_pattern_search`: Use para nomes de tabelas do banco de dados e instruções SQL que o grafo ainda não cobre.
