TDEV
İletişime Geçin
← Blog

AI Destekli ABAP Cloud ve Clean Core Kod Dönüşümü

Bu yazı, klasik ABAP sistemlerinden modern SAP ABAP Cloud ve Clean Core mimarisine geçiş sürecini yapay zekâ desteğiyle hızlandırmak isteyen yazılım mimarları ve ABAP geliştiricileri içindir.


1. Giriş: Legacy Kod Yükü ve Clean Core Zorunluluğu

SAP ekosisteminde onlarca yıldır biriken Z’li ve Y’li özel geliştirmeler (Custom Code), kurumların dijital dönüşüm süreçlerindeki en büyük teknik borç (technical debt) kaynağını oluşturmaktadır. Klasik ECC ve S/4HANA On-Premise sistemlerde yazılan ABAP kodları; doğrudan standart veritabanı tablolarına erişim, serbest bırakılmamış (non-released) SAP fonksiyon modülleri ve sınıflarının kullanımı, Dynpro/ALV tabanlı kullanıcı arayüzleri ve katmanlar arası sınırların belirsizleştiği monolithic mimari kalıplarıyla doludur.

Bu durum, SAP çekirdek sisteminin güncellenmesini (upgrade) zorlaştırmakta ve yeni sürümlere geçiş maliyetlerini katlanılmaz hale getirmektedir. SAP’nin bu soruna çözümü olan Clean Core stratejisi, uygulama çekirdeğinin özelleştirmelerden tamamen izole edilmesini şart koşar. Modern SAP mimarisinde uyarlanabilirlik ve sürdürülebilirlik sağlamak için izlenmesi gereken temel ilke ABAP Cloud geliştirme modelidir.

ABAP Cloud; SAP BTP ABAP Environment, S/4HANA Cloud Public Edition ve S/4HANA Cloud Private Edition üzerinde ortak programlama dili sürümü (Language Version: ABAP Cloud) olarak tanımlanmıştır. Bu modelde:

Ancak milyonlarca satırlık legacy ABAP kodunun manuel olarak analiz edilmesi, serbest bırakılmamış bağımlılıkların tespiti ve ABAP Cloud standartlarına dönüştürülmesi insan gücüyle aylar hatta yıllar alabilir. İşte bu noktada, SAP-ABAP-1 temel yapay zekâ modeli ve Joule for Developers asistanının Agentic AI yetenekleri devreye girmektedir.


2. Temel Kavramlar ve AI Destekli Dönüşüm Ekosistemi

Legacy kodların Clean Core uyumlu projelere dönüştürülmesini sağlayan yeni nesil mimari, birbiriyle entegre çalışan birkaç temel teknolojiye dayanmaktadır.

flowchart TD
    subgraph IDE_Layer ["Geliştirme Ortamı (IDE)"]
        VSCode["VS Code (ADT Extension)"]
        BAS["SAP Business Application Studio"]
    end

    subgraph MCP_Layer ["Context & Protocol Layer"]
        MCP["Model Context Protocol (MCP) Server"]
        ABAP_LS["ABAP Language Server"]
    end

    subgraph AI_Engine ["SAP AI Foundation"]
        Joule["Joule for Developers"]
        Model["SAP-ABAP-1 Core AI Model"]
    end

    subgraph Core_System ["SAP ABAP System"]
        ATC["ABAP Test Cockpit (ATC)"]
        API_Catalog["Released APIs & CDS Catalog"]
    end

    VSCode <-->|JSON-RPC / Streamable HTTP| MCP
    MCP <-->|Context Injection| Joule
    Joule <-->|Prompt & Inference| Model
    MCP <-->|Metadata & Syntax Check| ABAP_LS
    ABAP_LS <-->|API Check & ATC Checks| Core_System

SAP-ABAP-1 Temel AI Modeli

SAP-ABAP-1, SAP AI Core üzerinde barındırılan ve kurumsal kurallarla eğitilmiş özel bir temel yapay zekâ modelidir. 250 milyon satırdan fazla kurumsal ABAP kodu, CDS view tanımları, RAP behavior definition’ları ve SAP standart nesneleri üzerinde eğitilmiştir. Genel amaçlı büyük dil modellerinden (LLM) farklı olarak:

Joule for Developers

Joule for Developers, geliştirici ortamlarına (Eclipse ADT, Visual Studio Code veya SAP Business Application Studio) entegre çalışan AI asistanıdır. Geliştiricinin yazdığı veya incelediği koda bağlamsal (context-aware) olarak yaklaşır. Kod analizleri yapar, refactoring önerileri sunar ve tespit edilen mimari hataları otomatik olarak giderir.

Model Context Protocol (MCP) ve ADT for VS Code

2026 itibarıyla SAP ekosistemindeki en radikal değişimlerden biri, ADT for VS Code eklentisinin çıkışı ve Model Context Protocol (MCP) standartlarının benimsenmesidir. Language Server ve MCP mimarisine dayanan bu yapı, IDE içerisindeki Joule asistanının ABAP sistemindeki veri modellerini, CDS yapılarını ve API serbest bırakılma durumlarını (Release State) anlık olarak “okumasını” sağlar. Böylece yapay zekâ modeline sistemin güncel durumu bir bağlam (context) olarak iletilir ve hayal ürünü (hallucination) kod üretimi engellenir.


3. Nasıl Çalışır? Legacy Kod Analizi ve Dönüşüm Adımları

Legacy kodun Clean Core uyumlu hale getirilmesi rastgele bir yönlendirme (prompting) süreci değildir; disiplinli bir analiz, tespit ve yeniden yapılandırma (refactoring) akışıdır.

Aşama 1: Bağlam Analizi ve Serbest Bırakılmamış API Tespiti

İlk aşamada legacy ABAP nesnesi (örneğin eski bir rapor veya Z’li bir sınıf), ABAP Test Cockpit (ATC) ve SAP-ABAP-1 modeli tarafından taranır. Model, koddaki şu uygunsuzlukları tespit eder:

  1. Veritabanı Katmanı İhlalleri: Klasik veritabanı tablolarına yapılan doğrudan SELECT, INSERT veya UPDATE işlemleri.
  2. Serbest Bırakılmamış API Kullanımı: C-Kernel düzeyindeki kodlar, serbest bırakılmamış fonksiyon modülleri (örn. CALL FUNCTION '...'), standart SAP sınıfları veya serbest bırakılmamış BAPI çağrıları.
  3. Kullanıcı Arayüzü Bağımlılıkları: Koda gömülmüş Dynpro ekran kodları, WRITE komutları veya ALV grid çağrıları.
  4. Eski Prosedürel Kalıplar: FORM rutinleri, TABLES bildirimleri ve tip güvenliği olmayan işaretçiler (FIELD-SYMBOLS).
sequenceDiagram
    autonumber
    actor Dev as Developer
    participant IDE as ADT for VS Code / BAS
    participant Agent as Joule for Developers
    participant MCP as ABAP MCP Server
    participant Model as SAP-ABAP-1 Model
    participant Backend as SAP ABAP System

    Dev->>IDE: Legacy ABAP Kodunu Seç ve "Analyze for Clean Core" İsteği Gönder
    IDE->>MCP: Bağlam İsteği (AST, ATC Bulguları, Metadata)
    MCP->>Backend: API Release Status ve CDS Metadata Sorgula
    Backend-->>MCP: API Kısıtlamaları ve Dönüşüm Kuralları
    MCP->>Agent: Zenginleştirilmiş Bağlam (Enriched Context)
    Agent->>Model: Prompt + Bağlam Gönder (Analyze & Refactor Request)
    Model-->>Agent: ABAP Cloud Uyumlu Kod ve Analiz Raporu
    Agent-->>IDE: Önerilen Kod Değişikliğini Diff Formatında Göster
    Dev->>IDE: Değişikliği Onayla ve ABAP Unit Testlerini Çalıştır

Aşama 2: AI Destekli Yeniden Yapılandırma (Refactoring)

SAP-ABAP-1 modeli tespit edilen sorunları gidermek için şu stratejileri uygular:

Aşama 3: Otomatik Test Üretimi ve Temizlik (ABAP Cleaner)

Kod ABAP Cloud kısıtlamalarına uygun hale getirildikten sonra, Joule for Developers otomatik olarak bu kodun davranışsal doğruluğunu garanti altına alacak ABAP Unit test sınıflarını üretir. Son adımda, kod stili ve formatlama standartları için açık kaynaklı ABAP Cleaner kuralları uygulanır.


4. Uygulamalı Kod Dönüşüm Örneği

Süreci uygulamalı olarak inceleyelim. Elimizde klasik bir SAP sisteminde bulunan, veritabanı tablolarına doğrudan erişen ve eski prosedürel/inline yapıları kullanan bir Z’li sınıf bulunsun.

Legacy ABAP Kodu (Clean Core Dışı / Klasik ABAP)

Aşağıdaki kod, ABAP Cloud dil sürümünde (Language Version: ABAP Cloud) derleme hatası verir. Çünkü serbest bırakılmamış bağımlılıklar ve modern olmayan SQL syntax’ı barındırmaktadır.

CLASS zcl_legacy_order_processor DEFINITION
  PUBLIC
  CREATE PUBLIC.

  PUBLIC SECTION.
    TYPES: BEGIN OF ty_order,
             order_id   TYPE c LENGTH 10,
             customer   TYPE c LENGTH 10,
             total_amt  TYPE p LENGTH 8 DECIMALS 2,
           END OF ty_order.
    TYPES tt_orders TYPE STANDARD TABLE OF ty_order WITH DEFAULT KEY.

    METHODS get_orders_legacy
      IMPORTING iv_customer TYPE c
      EXPORTING et_orders   TYPE tt_orders.
ENDCLASS.

CLASS zcl_legacy_order_processor IMPLEMENTATION.
  METHOD get_orders_legacy.
    " HATA (ABAP Cloud): Doğrudan custom/standart veritabanı tablosuna erişim
    " HATA (ABAP Cloud): ESCAPE karakteri eksik SQL bildirimleri ve eski syntax
    SELECT order_id customer total_amt
      FROM ztb_legacy_ord
      INTO TABLE et_orders
      WHERE customer = iv_customer.
  ENDMETHOD.
ENDCLASS.

Analiz ve Joule / SAP-ABAP-1 Müdahalesi

Joule for Developers bu kodu incelediğinde SAP-ABAP-1 modeli üzerinden şu tespitleri yapar:

  1. ztb_legacy_ord tablosuna doğrudan erişim Clean Core ilkesine aykırıdır. Tablo üzerine veri erişimini kapsülleyen bir Core Data Services (CDS) view (örneğin zi_order_view) yazılmalıdır.
  2. EXPORTING parametresi yerine RETURNING değer döndüren functional method yapısı kullanılmalıdır.
  3. Tablo tiplerinde WITH DEFAULT KEY kullanımı eskimiştir; WITH EMPTY KEY veya açıkça tanımlanmış anahtar yapısı seçilmelidir.
  4. Hata yönetimi için exception sınıfları eklenmelidir.
  5. Konsol çıktısı veya test yürütümü için if_oo_adt_classrun arayüzü entegre edilebilir.

Dönüştürülmüş Kod (ABAP Cloud ve Clean Core Uyumlu)

SAP-ABAP-1 tarafından yeniden yazılan ve Clean Core uyumlu hale getirilen modern ABAP Cloud kodu:

CLASS zcl_clean_order_processor DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC.

  PUBLIC SECTION.
    INTERFACES if_oo_adt_classrun.

    TYPES: BEGIN OF ty_order_result,
             order_id     TYPE c LENGTH 10,
             customer_id  TYPE c LENGTH 10,
             total_amount TYPE p LENGTH 8 DECIMALS 2,
           END OF ty_order_result.
    TYPES tt_order_results TYPE STANDARD TABLE OF ty_order_result WITH EMPTY KEY.

    METHODS get_orders_cloud
      IMPORTING
        iv_customer_id   TYPE c
      RETURNING
        VALUE(rt_orders) TYPE tt_order_results
      RAISING
        zcx_order_error.
ENDCLASS.

CLASS zcl_clean_order_processor IMPLEMENTATION.
  METHOD if_oo_adt_classrun~main.
    TRY.
        DATA(lt_orders) = get_orders_cloud( 'CUST001' ).
        out->write( lt_orders ).
      CATCH zcx_order_error INTO DATA(lx_error).
        out->write( lx_error->get_text( ) ).
    ENDTRY.
  ENDMETHOD.

  METHOD get_orders_cloud.
    " Clean Core Uyumlu: CDS View üzerinden modern ABAP SQL erişimi
    SELECT order_id,
           customer_id,
           total_amount
      FROM zi_order_view
      WHERE customer_id = @iv_customer_id
      INTO TABLE @rt_orders.

    IF sy-subrc <> 0.
      RAISE EXCEPTION TYPE zcx_order_error.
    ENDIF.
  ENDMETHOD.
ENDCLASS.

Kod Dönüşümündeki Mimarî İyileştirmeler:


5. En İyi Uygulamalar (Best Practices) ve Tuzaklar

AI destekli kod modernizasyonu büyüleyici bir hız kazandırsa da, kurumsal projelerde dikkat edilmesi gereken stratejik noktalar ve kaçınılması gereken kritik hatalar vardır.

En İyi Uygulamalar

  1. Katmanlı Dönüşüm Stratejisi (Tiering Concept): Her legacy kod tek bir adımda Tier 1 (tam ABAP Cloud) seviyesine çekilemeyebilir. Karşılığı olmayan serbest bırakılmamış bir API varsa, öncelikle Tier 2 (Cloud-Ready Wrapper) katmanı oluşturulmalı, ana mantık yapay zekâya dönüştürtülmeli ve Wrapper API serbest bırakıldıktan sonra Tier 1’e geçilmelidir.

  2. Model Context Protocol (MCP) Sunucularını Etkin Kullanın: Joule for Developers veya VS Code asistanlarını yalın (raw) prompt’larla çalıştırmayın. Ortamda @cap-js/mcp-server veya custom ABAP MCP sunucularını aktif tutarak, AI modelinin veritabanı ve API kataloğu metadata’sını canlı olarak sorgulamasını sağlayın.

  3. ABAP Cleaner ve Test Driven Modernization Entegrasyonu: Yapay zekâ tarafından dönüştürülen koda derleme (syntax check) aşamasından hemen sonra otomatik unit testler uygulayın. Kodu refactor etmeden önce mevcut koda unit test yazıp (behavior preservation), dönüşüm sonrası testlerin geçtiğini doğrulamak en güvenli yoldur.

  4. IDE Bağımsızlığını Benimseyin: VS Code için çıkan ADT eklentisini yapay zekâ araçlarıyla (Joule, Cline, Cursor vb.) entegre ederek, hem UI5/Fiori geliştirmelerini hem de ABAP Cloud geliştirmelerini tek bir agentic workflow üzerinde birleştirin.

graph LR
    A[Legacy Monolithic Code] --> B[ATC Analysis & API Check]
    B --> C{Released API Exists?}
    C -- Yes --> D[Tier 1: Refactor to ABAP Cloud via SAP-ABAP-1]
    C -- No --> E[Tier 2: Build Cloud-Ready Wrapper]
    E --> D
    D --> F[Generate ABAP Unit Tests]
    F --> G[Run ABAP Cleaner]
    G --> H[Clean Core Ready Code]

Sık Yapılan Tuzaklar (Pitfalls)


6. Sonuç

ABAP Cloud ve Clean Core dönüşümü, SAP kullanıcıları için bir tercih değil, sürdürülebilir bir dijital gelecek için zorunluluktur. Bu dönüşümün getirdiği devasa kod analizi ve refactoring yükü, geleneksel yöntemlerle yönetilemeyecek boyuttadır.

SAP-ABAP-1 temel modeli, Joule for Developers asistanı ve MCP mimarisi sayesinde, legacy ABAP kodlarının analizi, serbest bırakılmamış API’lerin tespiti ve Clean Core uyumlu projelere dönüştürülmesi otomatikleşmiş ve standartlaşmış bir süreç haline gelmiştir. Geliştiricilerin rolü, ham kod yazmaktan; AI ajanlarını doğru bağlamla besleyen, üretilen mimariyi denetleyen ve Clean Core ilkelerini koruyan bir Sistem Mimarisi Doğrulayıcısı seviyesine evrilmektedir.

Kaynaklar

Anahtar Kelimeler