İçeriğe atla
cd /languages
  • Kurumsal çekirdek
  • Programlama
  • AST ve sembol desteği

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

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.

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ıç ile bir repo bağlayın, ardından destek matrisi için uyumluluk sayfasına bakın. Diğer eski ortamlar için COBOL rehberine göz atın.

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.

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.