Lompat ke konten
cd /languages
  • Inti perusahaan
  • Pemrograman
  • Dukungan AST dan simbol

ABAP di Maguyva: graf kelas untuk kode SAP kustom

Maguyva mendukung ABAP dengan AST, simbol, dan graf, sehingga agen AI dapat memetakan kelas, interface, redefinisi, dan eksepsi dalam kode SAP kustom.

Mengapa ABAP layak dipetakan sebelum diubah

ABAP kustom sering membawa aturan bisnis yang terkumpul selama puluhan tahun. Kodenya sebagian berorientasi objek dan sebagian prosedural, dan struktur pewarisan serta interface menentukan metode mana yang dijalankan. Hal itu tidak terlihat saat Anda membaca satu kelas setiap kali.

Maguyva memberi agen graf kelas lebih dulu, sehingga rencana perubahan dimulai dari apa yang bergantung pada sebuah kelas, bukan dari tebakan.

Apa yang diekstrak Maguyva dari ABAP

Maguyva mengurai sumber .abap dengan tata bahasa ABAP khusus. Simbolnya mencakup definisi dan implementasi kelas, interface, deklarasi dan implementasi metode, serta rutin FORM.

Graf mencatat relasi yang penting bagi pengembang ABAP:

  • Pewarisan dari CLASS ... INHERITING FROM.
  • Implementasi interface dari INTERFACES.
  • Override dari METHODS ... REDEFINITION.
  • Eksepsi dari RAISE EXCEPTION dan CATCH.
  • Panggilan metode (obj->m( ), cls=>m( ), CALL METHOD), referensi tipe dari TYPE dan TYPE REF TO, serta ekspor metode bagian public yang diatribusikan ke kelasnya.
  • Pembacaan, penulisan, dan alur kontrol (IF, CASE, LOOP, TRY) di dalam badan metode.

Contoh prompt agen

  • “Kelas mana yang mewarisi dari zcl_order_base, dan metode mana yang mereka redefinisikan?” (find_symbol, lalu dependency_search arah masuk)
  • “Di mana zcx_pricing_error dimunculkan, dan siapa yang menangkapnya?” (dependency_search)
  • “Rangkum bagaimana alur pembuatan pengiriman bergerak dari laporan ke kelas persistensi.” (get_task_context)

Batasan yang diketahui

  • Open SQL (SELECT ... FROM ... INTO), EXEC SQL, dan AUTHORITY-CHECK belum diurai oleh tata bahasa ABAP saat ini, sehingga pembacaan tabel melalui SQL belum menjadi edge graf. Gunakan text_pattern_search untuk nama tabel.
  • Pernyataan INTERFACES adalah relasi implementasi, bukan impor. Dalam pencarian struktural, hanya pernyataan INCLUDE yang dipilih sebagai impor.
  • Maguyva mengindeks ABAP yang ada di repositori Git sebagai berkas .abap. Maguyva tidak terhubung ke sistem SAP.

Langkah berikutnya

Hubungkan repositori dengan panduan memulai cepat, lalu periksa matriks dukungan di halaman kompatibilitas. Untuk lingkungan lama lainnya, lihat panduan COBOL.

Paling cocok untuk

  • > Tim SAP yang menyimpan ABAP kustom di Git sebagai berkas sumber `.abap` dan perlu memahaminya sebelum migrasi atau tinjauan clean core.
  • > Lingkungan ABAP berorientasi objek, tempat hierarki kelas, interface, dan redefinisi menyembunyikan implementasi mana yang benar-benar berjalan.
  • > Analisis dampak berbantuan agen, dengan pertanyaan: “apa yang rusak jika kelas ini berubah?”

Workflow agent

  • > Memetakan kelas yang mewarisi dari kelas dasar dan metode yang mereka redefinisikan.
  • > Menemukan semua kelas yang mengimplementasikan sebuah interface sebelum signature metodenya berubah.
  • > Menelusuri tempat sebuah kelas eksepsi dimunculkan dan tempat ia ditangkap.

Detail engine

  • > ABAP diurai dengan tata bahasa khusus. Kelas, interface, deklarasi dan implementasi metode, serta rutin `FORM` adalah simbol.
  • > Graf mencatat pewarisan melalui `INHERITING FROM`, implementasi melalui `INTERFACES`, override melalui `REDEFINITION`, `RAISE EXCEPTION` dan `CATCH`, serta panggilan seperti `obj->m( )` dan `cls=>m( )`.
  • > Open SQL, `EXEC SQL`, dan `AUTHORITY-CHECK` belum diurai oleh tata bahasa saat ini, sehingga pembacaan tabel melalui SQL belum menjadi edge graf.

Titik masuk MCP yang berguna

  • find_symbol

    Gunakan dengan nama kelas, interface, atau metode saat Anda membutuhkan definisi dan referensi.

  • dependency_search

    Sebelum perubahan, gunakan penelusuran arah masuk pada kelas dasar atau interface untuk menemukan subkelas, implementasi, dan pemanggil.

  • text_pattern_search

    Gunakan untuk nama tabel basis data dan pernyataan SQL yang belum dicakup graf.