# Maguyva'da ABAP: özel SAP kodu için sınıf grafları

Canonical source: https://maguyva.ai/tr/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, ABAP'ı AST, sembol ve graf desteğiyle sunar; böylece yapay zeka ajanları özel SAP kodundaki sınıfları, arayüzleri, yeniden tanımlamaları ve istisnaları haritalayabilir.

## Destek anlık görüntüsü

- Katman: AST ve sembol desteği
- Programlama
- Uzantılar: .abap
- Sözdizimi farkında arama ve yapısal bağlam için gerçek AST ayrıştırması.
- Adlandırılmış semboller anlamsal aramayı ve çapraz referansı besler. İlişki çıkarımı etkinleştirildiğinde graf gezinmesi kullanılabilir.
- Bu dil, graf farkındalıklı aramaya semboller ve ilişkiler sağlar; desteklenen kenar türleri dilin yerel yapılarına göre değişir.
- Hem AST ayrıştırma hem de sembol çıkarma kullanılabilir.

## En uygun kullanım

- Özel ABAP kodunu Git'te `.abap` kaynak dosyaları olarak tutan ve bir geçiş veya clean core incelemesinden önce bu kodu anlaması gereken SAP ekipleri.
- Sınıf hiyerarşilerinin, arayüzlerin ve yeniden tanımlamaların gerçekte hangi uygulamanın çalıştığını gizlediği nesne yönelimli ABAP ortamları.
- Sorunun “bu sınıf değişirse ne bozulur?” olduğu, ajan destekli etki analizleri.

## Ajan iş akışları

- Bir temel sınıftan kalıtım alan sınıfları ve yeniden tanımladıkları yöntemleri haritalamak.
- Yöntem imzaları değişmeden önce bir arayüzü uygulayan tüm sınıfları bulmak.
- Bir istisna sınıfının nerede tetiklendiğini ve nerede yakalandığını izlemek.

## ABAP'ı değiştirmeden önce neden haritalamalısınız

Özel ABAP genellikle onlarca yıllık iş kurallarını taşır. Kod kimi yerde nesne yönelimli, kimi yerde yordamsaldır ve hangi yöntemin çalışacağına kalıtım ve arayüz yapısı karar verir. Her seferinde tek bir sınıf okuduğunuzda bu görünmez.

Maguyva ajana önce sınıf grafını verir; böylece bir değişiklik planı tahminle değil, bir sınıfa bağlı olan her şeyle başlar.

## Maguyva ABAP'tan neleri çıkarır

Maguyva `.abap` kaynak kodunu ABAP'a özel bir dilbilgisiyle ayrıştırır. Semboller; sınıf tanımlarını ve uygulamalarını, arayüzleri, yöntem bildirimlerini ve uygulamalarını ve `FORM` rutinlerini içerir.

Graf, ABAP geliştiricileri için önemli olan ilişkileri kaydeder:

- `CLASS ... INHERITING FROM` ifadesinden kalıtım.
- `INTERFACES` ifadesinden arayüz uygulaması.
- `METHODS ... REDEFINITION` ifadesinden geçersiz kılmalar.
- `RAISE EXCEPTION` ve `CATCH` ifadelerinden istisnalar.
- Yöntem çağrıları (`obj->m( )`, `cls=>m( )`, `CALL METHOD`), `TYPE` ve `TYPE REF TO` ifadelerinden tür referansları ve sınıflarına atfedilen genel bölüm yöntemlerinin dışa aktarımları.
- Yöntem gövdeleri içindeki okumalar, yazmalar ve denetim akışı (`IF`, `CASE`, `LOOP`, `TRY`).

## Örnek ajan istemleri

- "Hangi sınıflar `zcl_order_base` sınıfından kalıtım alıyor ve hangi yöntemlerini yeniden tanımlıyor?" (`find_symbol`, ardından gelen yönde `dependency_search`)
- "`zcx_pricing_error` nerede tetikleniyor ve kim yakalıyor?" (`dependency_search`)
- "Teslimat oluşturma akışının rapordan kalıcılık sınıfına nasıl ilerlediğini özetle." (`get_task_context`)

## Bilinen sınırlar

- Open SQL (`SELECT ... FROM ... INTO`), `EXEC SQL` ve `AUTHORITY-CHECK` mevcut ABAP dilbilgisi tarafından ayrıştırılmaz; bu nedenle SQL ile yapılan tablo okumaları henüz graf kenarı değildir. Tablo adları için `text_pattern_search` kullanın.
- `INTERFACES` ifadeleri içe aktarma değil, uygulama ilişkileridir. Yapısal aramada yalnızca `INCLUDE` ifadeleri içe aktarma olarak seçilir.
- Maguyva, Git reposunda `.abap` dosyası olarak bulunan ABAP kodunu dizinler. Bir SAP sistemine bağlanmaz.

## Sonraki adımlar

[Hızlı başlangıç](/tr/docs/quickstart) ile bir repo bağlayın, ardından destek matrisi için [uyumluluk sayfasına](/tr/docs/compatibility) bakın. Diğer eski ortamlar için [COBOL rehberine](/tr/languages/cobol) göz atın.

## Motor ayrıntıları

- ABAP özel bir dilbilgisiyle ayrıştırılır. Sınıflar, arayüzler, yöntem bildirimleri ve uygulamaları ile `FORM` rutinleri semboldür.
- Graf `INHERITING FROM` ile kalıtımı, `INTERFACES` ile uygulamayı, `REDEFINITION` ile geçersiz kılmaları, `RAISE EXCEPTION` ve `CATCH` ifadelerini ve `obj->m( )` ile `cls=>m( )` gibi çağrıları kaydeder.
- Open SQL, `EXEC SQL` ve `AUTHORITY-CHECK` mevcut dilbilgisi tarafından ayrıştırılmaz; bu nedenle SQL ile yapılan tablo okumaları henüz graf kenarı değildir.

## Yararlı MCP giriş noktaları

- `find_symbol`: Tanıma ve referanslara ihtiyacınız olduğunda bir sınıf, arayüz veya yöntem adıyla kullanın.
- `dependency_search`: Bir değişiklikten önce alt sınıfları, uygulamaları ve çağıranları bulmak için bir temel sınıfta veya arayüzde gelen yönde dolaşım kullanın.
- `text_pattern_search`: Grafın henüz kapsamadığı veritabanı tablo adları ve SQL ifadeleri için kullanın.
