# ABAP dalam Maguyva: graf kelas untuk kod SAP tersuai

Canonical source: https://maguyva.ai/ms/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 menyokong ABAP dengan AST, simbol dan graf, supaya ejen AI boleh memetakan kelas, antara muka, takrif semula dan pengecualian dalam kod SAP tersuai.

## Gambaran sokongan

- Peringkat: Sokongan AST dan simbol
- Pengaturcaraan
- Sambungan fail: .abap
- Penghuraian AST sebenar untuk carian sedar-sintaks dan konteks struktur.
- Simbol bernama menyokong carian semantik dan rujukan silang. Navigasi graf tersedia apabila pengekstrakan hubungan didayakan.
- Bahasa ini menyumbang simbol dan hubungan kepada carian berasaskan graf; jenis edge yang disokong berbeza mengikut binaan aslinya.
- Penghuraian AST dan pengekstrakan simbol kedua-duanya tersedia.

## Paling sesuai

- Pasukan SAP yang menyimpan ABAP tersuai dalam Git sebagai fail sumber `.abap` dan perlu memahaminya sebelum migrasi atau semakan clean core.
- Persekitaran ABAP berorientasikan objek, tempat hierarki kelas, antara muka dan takrif semula menyembunyikan pelaksanaan yang benar-benar berjalan.
- Analisis impak dibantu ejen, dengan soalan: “apa yang rosak jika kelas ini berubah?”

## Aliran kerja ejen

- Memetakan kelas yang mewarisi daripada kelas asas dan kaedah yang ditakrif semula oleh kelas itu.
- Mencari semua kelas yang melaksanakan sesuatu antara muka sebelum tandatangan kaedahnya berubah.
- Menjejak tempat kelas pengecualian dibangkitkan dan tempat ia ditangkap.

## Mengapa ABAP wajar dipetakan sebelum diubah

ABAP tersuai selalunya membawa peraturan perniagaan yang terkumpul selama berdekad-dekad. Kodnya sebahagian berorientasikan objek dan sebahagian prosedural, dan struktur pewarisan serta antara muka menentukan kaedah mana yang berjalan. Perkara itu tidak kelihatan apabila anda membaca satu kelas pada satu masa.

Maguyva memberikan graf kelas kepada ejen dahulu, supaya pelan perubahan bermula daripada apa yang bergantung pada sesuatu kelas, bukan daripada tekaan.

## Apa yang diekstrak oleh Maguyva daripada ABAP

Maguyva menghuraikan sumber `.abap` dengan tatabahasa ABAP khusus. Simbol merangkumi definisi dan pelaksanaan kelas, antara muka, pengisytiharan dan pelaksanaan kaedah, serta rutin `FORM`.

Graf merekodkan hubungan yang penting kepada pembangun ABAP:

- Pewarisan daripada `CLASS ... INHERITING FROM`.
- Pelaksanaan antara muka daripada `INTERFACES`.
- Penggantian daripada `METHODS ... REDEFINITION`.
- Pengecualian daripada `RAISE EXCEPTION` dan `CATCH`.
- Panggilan kaedah (`obj->m( )`, `cls=>m( )`, `CALL METHOD`), rujukan jenis daripada `TYPE` dan `TYPE REF TO`, serta eksport kaedah bahagian public yang dikaitkan dengan kelasnya.
- Bacaan, tulisan dan aliran kawalan (`IF`, `CASE`, `LOOP`, `TRY`) di dalam badan kaedah.

## Contoh gesaan ejen

- "Kelas mana yang mewarisi daripada `zcl_order_base`, dan kaedah mana yang ditakrif semula?" (`find_symbol`, kemudian `dependency_search` arah masuk)
- "Di mana `zcx_pricing_error` dibangkitkan, dan siapa yang menangkapnya?" (`dependency_search`)
- "Ringkaskan cara aliran penciptaan penghantaran bergerak daripada laporan ke kelas penyimpanan." (`get_task_context`)

## Had yang diketahui

- Open SQL (`SELECT ... FROM ... INTO`), `EXEC SQL` dan `AUTHORITY-CHECK` belum dihuraikan oleh tatabahasa ABAP semasa, jadi bacaan jadual melalui SQL belum menjadi tepi graf. Gunakan `text_pattern_search` untuk nama jadual.
- Pernyataan `INTERFACES` ialah hubungan pelaksanaan, bukan import. Dalam carian berstruktur, hanya pernyataan `INCLUDE` dipilih sebagai import.
- Maguyva mengindeks ABAP yang berada dalam repositori Git sebagai fail `.abap`. Ia tidak bersambung ke sistem SAP.

## Langkah seterusnya

Sambungkan repositori dengan [panduan permulaan pantas](/ms/docs/quickstart), kemudian semak matriks sokongan di [halaman keserasian](/ms/docs/compatibility). Untuk persekitaran lama yang lain, lihat [panduan COBOL](/ms/languages/cobol).

## Butiran enjin

- ABAP dihuraikan dengan tatabahasa khusus. Kelas, antara muka, pengisytiharan dan pelaksanaan kaedah, serta rutin `FORM` ialah simbol.
- Graf merekodkan pewarisan melalui `INHERITING FROM`, pelaksanaan melalui `INTERFACES`, penggantian melalui `REDEFINITION`, `RAISE EXCEPTION` dan `CATCH`, serta panggilan seperti `obj->m( )` dan `cls=>m( )`.
- Open SQL, `EXEC SQL` dan `AUTHORITY-CHECK` belum dihuraikan oleh tatabahasa semasa, jadi bacaan jadual melalui SQL belum menjadi tepi graf.

## Titik masuk MCP yang berguna

- `find_symbol`: Gunakan dengan nama kelas, antara muka atau kaedah apabila anda memerlukan definisi dan rujukan.
- `dependency_search`: Sebelum perubahan, gunakan penjelajahan arah masuk pada kelas asas atau antara muka untuk mencari subkelas, pelaksanaan dan pemanggil.
- `text_pattern_search`: Gunakan untuk nama jadual pangkalan data dan pernyataan SQL yang belum diliputi oleh graf.
