Перейти до вмісту
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-операторів, яких граф поки не охоплює.