- SAP Core
- Modernizing
- Deep Dive
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:
- Doğrudan standart tablo okuma/yazma yasaktır.
- Yalnızca Released APIs (Serbest Bırakılmış API’ler) ve Core Data Services (CDS) kullanılabilir.
- Eski prosedürel yapılar (Function Group, Macro, Subroutine) yerini nesne yönelimli mimariye (OO-ABAP) ve RESTful Application Programming Model (RAP) mimarisine bırakır.
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:
- ABAP Cloud dil kısıtlamalarını (strict syntax) doğuştan bilir.
- Serbest bırakılmamış SAP API’lerinin (klasik fonksiyon modülleri, BAPI’ler, standart sınıflar) ABAP Cloud karşılıklarını (Released APIs, BAdI veya CDS) eşleştirmede yüksek doğruluk sunar.
- Otomatik unit test (ABAP Unit) senaryoları kurgulayabilir.
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:
- Veritabanı Katmanı İhlalleri: Klasik veritabanı tablolarına yapılan doğrudan
SELECT,INSERTveyaUPDATEişlemleri. - 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ı. - Kullanıcı Arayüzü Bağımlılıkları: Koda gömülmüş Dynpro ekran kodları,
WRITEkomutları veya ALV grid çağrıları. - Eski Prosedürel Kalıplar:
FORMrutinleri,TABLESbildirimleri 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:
- Doğrudan veritabanı erişimleri yerine, SAP standart veya custom CDS View katmanlarını önerir ya da sıfırdan CDS DDL oluşturur.
- Serbest bırakılmamış fonksiyon modülleri yerine, SAP’nin duyurduğu Released Interface veya Released Class yapılarını koyar. Eğer standart bir karşılık yoksa, Tier 2 katmanında bir “Wrapper” nesnesi tasarlayarak kodun ana gövdesini Tier 1 (Clean Core) seviyesinde tutar.
- Prosedürel mantığı fully-typed nesne yönelimli ABAP (OO-ABAP) sınıflarına dönüştürür.
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:
ztb_legacy_ordtablosuna 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ğinzi_order_view) yazılmalıdır.EXPORTINGparametresi yerineRETURNINGdeğer döndüren functional method yapısı kullanılmalıdır.- Tablo tiplerinde
WITH DEFAULT KEYkullanımı eskimiştir;WITH EMPTY KEYveya açıkça tanımlanmış anahtar yapısı seçilmelidir. - Hata yönetimi için exception sınıfları eklenmelidir.
- Konsol çıktısı veya test yürütümü için
if_oo_adt_classrunarayü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:
- Strict Syntax ve Host Variables: Modern ABAP SQL kurallarına uygun olarak değişkenler
@işareti ile işaretlenmiş, alanlar virgülle ayrılmıştır. - Kapsülleme (Encapsulation): Doğrudan veritabanı erişimi kaldırılmış, mantık bir CDS View (
zi_order_view) arkasına gizlenmiştir. - Tip Güvenliği ve Clean Key:
WITH EMPTY KEYkullanılarak tablo belleği optimize edilmiş ve tip güvenliği sağlanmıştır. - Hata Yönetimi: Prosedürel
sy-subrckontrolleri çağıran katmana nesne tabanlı exception (zcx_order_error) fırlatacak şekilde mimariye dahil edilmiştir.
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
-
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.
-
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-serverveya custom ABAP MCP sunucularını aktif tutarak, AI modelinin veritabanı ve API kataloğu metadata’sını canlı olarak sorgulamasını sağlayın. -
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.
-
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)
- Yapay Zekânın Ürettiği Kodları Denetlemeden Onaylamak:
SAP-ABAP-1gelişmiş bir model olmasına rağmen, var olmayan bir Released API adı önerebilir (hallucination). Yapay zekâ çıktısı her zaman ADT derleyicisi ve ABAP Test Cockpit (ATC) kontrollerinden geçirilmelidir. - UI ve İş Mantığını Birlikte Dönüştürmeye Çalışmak:
Klasik ABAP kodlarındaki Dynpro,
CALL SCREENveya ALV mantıklarını doğrudan ABAP Cloud’a taşımaya çalışmak hatalıdır. Kullanıcı arayüzü katmanı tamamen ayrıştırılmalı, arka plan iş mantığı RAP (RESTful Application Programming Model) business object’lerine, ön yüz ise SAP Fiori / UI5 katmanına devredilmelidir. - Büyüklük ve Bağımlılık Ağını İhmal Etmek:
Binlerce satırlık tek parça (monolithic) bir
FUNCTION GROUPveya sınıfı tek bir prompt ile dönüştürmeye çalışmak modelin bağlam penceresini (context window) şişirir. Dönüşüm, bağımlılık ağacı (dependency tree) analiz edilerek en alt bağımsız bileşenlerden başlanarak parçalar halinde yapılmalıdır.
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
- ABAP Cloud
- Clean Core
- SAP-ABAP-1
- Joule for Developers
- Model Context Protocol
- CDS
- ABAP Unit
