Pular para o conteúdo
cd /languages
  • Núcleo corporativo
  • Programação
  • Suporte a AST e símbolos

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

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.

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 e depois confira a matriz de suporte na página de compatibilidade. Para outros sistemas legados, veja o guia de COBOL.

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.

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.