Перейти к содержимому
cd /languages
  • Ядро предприятия
  • Программирование
  • Поддержка AST и символов

ABAP в Maguyva: графы классов для собственного кода SAP

Maguyva поддерживает ABAP с AST, символами и графом, чтобы ИИ-агенты картировали классы, интерфейсы, переопределения и исключения в собственном коде SAP.

Почему ABAP стоит картировать перед изменением

Собственный ABAP часто несёт в себе десятилетия бизнес-правил. Код где-то объектно-ориентированный, где-то процедурный, а то, какой метод выполнится, решает структура наследования и интерфейсов. Если читать по одному классу, этого не видно.

Maguyva сначала даёт агенту граф классов, и план изменений начинается с того, что зависит от класса, а не с догадки.

Что Maguyva извлекает из ABAP

Maguyva разбирает исходный код .abap с помощью отдельной грамматики ABAP. Символы включают определения и реализации классов, интерфейсы, объявления и реализации методов, а также процедуры FORM.

Граф фиксирует связи, важные для разработчиков на ABAP:

  • Наследование из CLASS ... INHERITING FROM.
  • Реализацию интерфейсов из INTERFACES.
  • Переопределения из METHODS ... REDEFINITION.
  • Исключения из RAISE EXCEPTION и CATCH.
  • Вызовы методов (obj->m( ), cls=>m( ), CALL METHOD), ссылки на типы из TYPE и TYPE REF TO, а также экспорт методов публичной секции, привязанный к их классу.
  • Чтения, записи и поток управления (IF, CASE, LOOP, TRY) внутри тел методов.

Примеры промптов для агентов

  • «Какие классы наследуют от zcl_order_base и какие из его методов переопределяют?» (find_symbol, затем dependency_search incoming)
  • «Где выбрасывается zcx_pricing_error и кто её перехватывает?» (dependency_search)
  • «Кратко опиши, как процесс создания поставки проходит от отчёта до класса хранения данных.» (get_task_context)

Известные ограничения

  • Open SQL (SELECT ... FROM ... INTO), EXEC SQL и AUTHORITY-CHECK не разбираются текущей грамматикой ABAP, поэтому чтение таблиц через SQL пока не становится рёбрами графа. Для имён таблиц используйте text_pattern_search.
  • Предложения INTERFACES — это связи реализации, а не импорты. В структурном поиске импортами считаются только операторы INCLUDE.
  • Maguyva индексирует ABAP, который хранится в Git-репозитории в виде файлов .abap. К системе SAP она не подключается.

Следующие шаги

Подключите репозиторий по быстрому старту, затем изучите матрицу поддержки на странице совместимости. Для других унаследованных систем смотрите руководство по COBOL.

Лучше всего подходит

  • > Команды SAP, которые хранят собственный ABAP в Git как исходные файлы `.abap` и должны разобраться в нём перед миграцией или ревью clean core.
  • > Объектно-ориентированные ABAP-системы, где иерархии классов, интерфейсы и переопределения скрывают, какая реализация выполняется на самом деле.
  • > Анализ влияния с участием агентов, где главный вопрос: «что сломается, если изменить этот класс?»

Сценарии работы агента

  • > Составить карту классов, наследующих от базового класса, и методов, которые они переопределяют.
  • > Найти все классы, реализующие интерфейс, прежде чем менять сигнатуры его методов.
  • > Проследить, где класс исключения выбрасывается и где перехватывается.

Детали движка

  • > ABAP разбирается отдельной грамматикой. Классы, интерфейсы, объявления и реализации методов, а также процедуры `FORM` являются символами.
  • > Граф фиксирует наследование через `INHERITING FROM`, реализацию через `INTERFACES`, переопределения через `REDEFINITION`, `RAISE EXCEPTION` и `CATCH`, а также вызовы вроде `obj->m( )` и `cls=>m( )`.
  • > Open SQL, `EXEC SQL` и `AUTHORITY-CHECK` не разбираются текущей грамматикой, поэтому чтение таблиц через SQL пока не становится рёбрами графа.

Полезные точки входа MCP

  • find_symbol

    Используйте с именем класса, интерфейса или метода, когда нужны определение и ссылки.

  • dependency_search

    Перед изменением используйте обход incoming для базового класса или интерфейса, чтобы найти подклассы, реализации и вызывающих.

  • text_pattern_search

    Используйте для имён таблиц базы данных и SQL-операторов, которые граф пока не покрывает.