# ABAP di Maguyva: graf kelas untuk kode SAP kustom

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

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

## Snapshot dukungan

- Tier: Dukungan AST dan simbol
- Pemrograman
- Ekstensi: .abap
- Parsing AST sungguhan untuk pencarian sadar-syntax dan konteks struktural.
- Simbol bernama menggerakkan pencarian semantik dan cross-reference. Navigasi graf tersedia saat ekstraksi relasi diaktifkan.
- Bahasa ini menyumbangkan simbol dan relasi ke pencarian berbasis graf; jenis edge yang didukung bervariasi sesuai konstruk bawaan bahasa tersebut.
- Parsing AST dan ekstraksi simbol sama-sama tersedia.

## 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.

## 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](/id/docs/quickstart), lalu periksa matriks dukungan di [halaman kompatibilitas](/id/docs/compatibility). Untuk lingkungan lama lainnya, lihat [panduan COBOL](/id/languages/cobol).

## 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.
