TDEV
İletişime Geçin
← Blog

VS Code Üzerinde ABAP Geliştirme Araçları (ADT) Rehberi

Bu yazı, Eclipse ekosisteminden Visual Studio Code tabanlı modern ABAP geliştirme ortamına geçmek ve yapay zeka entegrasyonlarıyla günlük geliştirme süreçlerini modernleştirmek isteyen ABAP geliştiricileri içindir.

Yıllardır SAP geliştiricilerinin ana çalışma alanı olan SAP GUI (SE80) ve sonrasında gelen Eclipse tabanlı ABAP Development Tools (ADT), ABAP ekosisteminin temel taşlarını oluşturdu. Ancak bulut tabanlı mimariler, ABAP Cloud, SAP BTP ve yapay zeka destekli kodlama araçlarının (GitHub Copilot, Cursor, SAP Joule, MCP sunucuları) hızla yaygınlaşması, geliştirici deneyimini tek bir çoklu dil (polyglot) editörde toplama ihtiyacını doğurdu. Visual Studio Code için geliştirilen ADT eklentileri (ADT on VS Code), ABAP geliştirme süreçlerini modern yazılım mühendisliği araçlarıyla buluşturan bu dönüşümün merkezinde yer almaktadır.


Temel Kavramlar ve Mimari Yapı

Eclipse tabanlı ADT ile VS Code üzerindeki ADT yaklaşımı aynı arka plan altyapısını paylaşır. Her iki geliştirme ortamı da SAP ABAP Uygulama Sunucusu (AS ABAP) üzerindeki REST tabanlı ADT uç noktalarıyla (ABAP RESTful Application Programming Model ve ADT backend servisleri) HTTP/HTTPS protokolü üzerinden haberleşir.

flowchart TD
    subgraph VSCodeEnv["Visual Studio Code Environment"]
        VSC["VS Code Editor"]
        ADT_EXT["ABAP ADT Extension"]
        AI_EXT["AI Extensions / MCP Agents"]
    end

    subgraph SAPBackend["SAP ABAP System (On-Premise / Cloud)"]
        REST_API["ADT REST Services (/sap/bc/adt)"]
        REPO["ABAP Repository"]
        ABAP_RUNTIME["ABAP Runtime & DB"]
    end

    VSC --> ADT_EXT
    ADT_EXT <-->|HTTP/HTTPS REST| REST_API
    AI_EXT <-->|Model Context Protocol| ADT_EXT
    REST_API --> REPO
    REST_API --> ABAP_RUNTIME

Mimari Bileşenler

  1. ADT REST API Interface (/sap/bc/adt): ABAP uygulama sunucusunda çalışan ve nesne kilitleme (locking), sözdizimi kontrolü (syntax check), etkinleştirme (activation) ve nesne okuma/yazma işlemlerini yürüten standart SAP servis katmanıdır.
  2. Language Server Protocol (LSP) ve Extension: VS Code, dil özelliklerini (autocompletion, go-to-definition, code outline) LSP mimarisiyle sunar. ADT eklentisi, SAP arka planından aldığı ABAP AST (Abstract Syntax Tree) bilgilerini LSP standartlarına çevirerek editöre aktarır.
  3. Model Context Protocol (MCP) ve AI Katmanı: VS Code ekosisteminde çalışan AI kodlama asistanları (Cursor, Copilot, Claude Code vb.), SAP tarafından sunulan (@cap-js/mcp-server, @sap-ux/fiori-mcp-server, @ui5/mcp-server) veya topluluk tarafından geliştirilen yerel MCP sunucuları aracılığıyla ABAP veri modellerine, CDS view yapılarına ve sistem metadata’sına güvenli bir şekilde erişebilir.

Eclipse ve VS Code ADT Karşılaştırması

Özellik Eclipse (ADT) VS Code (ADT Extension)
Açılış Performansı ve Kaynak Kullanımı Yüksek bellek tüketimi, yavaş başlatma Hafif sıklet (lightweight), çok hızlı açılış
Çoklu Dil Desteği (Polyglot) Sınırlı (Ağırlıklı ABAP ve CDS) Mükemmel (ABAP, CAP, UI5, TypeScript, Python)
Yapay Zeka (AI) Entegrasyonu Sınırlı eklenti desteği Yerel Copilot, Cursor, Joule ve MCP desteği
Ekran / Workspace Esnekliği Esnek olmayan perspektif yapısı Modern split-editor, esnek panel mimarisi
Hata Ayıklama (Debugging) Gelişmiş GUI tabanlı ABAP Debugger Temel ve sürekli gelişen breakpoint/debug desteği

Adım Adım ADT Kurulumu ve Sistem Bağlantı Yapılandırması

VS Code üzerinde ABAP geliştirmeye başlamak için gerekli adımlar üç ana başlıkta toplanır: Ön gereksinimlerin sağlanması, eklentinin kurulması ve sistem bağlantı dosyasının hazırlanması.

1. Ön Gereksinimler

2. Eklentinin Yüklenmesi

  1. VS Code içerisinde Ctrl+Shift+X (macOS: Cmd+Shift+X) tuş kombinasyonu ile Extensions sekmesini açın.
  2. Arama çubuğuna ABAP Remote FS veya resmi SAP ADT Extension terimini yazın.
  3. Eklentiyi Install butonuna tıklayarak yükleyin.

3. Bağlantı Yapılandırması (adt-config.json / Workspace Settings)

Sistem bağlantısı, proje dizininde bulunan .vscode klasöründeki konfigürasyon dosyaları veya global VS Code ayarları üzerinden yönetilir.

Aşağıdaki JSON örneği, hem On-Premise bir SAP sistemine hem de SAP BTP ABAP Environment (Cloud) ortamına nasıl bağlanılacağını göstermektedir:

{
  "abapfs.remote": {
    "S4HANA_DEV": {
      "text": "S/4HANA Development System",
      "url": "https://vhcal4dsci.dummy.sap.com:44300",
      "client": "100",
      "username": "ABAP_DEV_USER",
      "password": "${env:SAP_DEV_PASSWORD}",
      "allowSelfSigned": true,
      "customParams": {
        "sap-language": "EN"
      }
    },
    "BTP_ABAP_CLOUD": {
      "text": "SAP BTP ABAP Environment",
      "url": "https://your-btp-tenant.abap.eu10.hana.ondemand.com",
      "oauth": {
        "tokenUrl": "https://your-btp-tenant.authentication.eu10.hana.ondemand.com/oauth/token",
        "clientId": "sb-clone-xxx",
        "clientSecret": "${env:BTP_CLIENT_SECRET}"
      }
    }
  }
}

Güvenlik Uyarısı: Parolalarınızı veya OAuth secret bilgilerinizi kesinlikle kod depolarına (Git) düz metin (plain text) olarak commit etmeyin. Yukarıdaki örnekte gösterildiği gibi VS Code ortam değişkeni (${env:VARIABLE_NAME}) referanslarını kullanın.


Günlük Kullanım Pratikleri

VS Code üzerinde ABAP geliştirme yaparken en sık kullanılan iş akışları; nesne arama, kod düzenleme, sözdizimi denetimi, etkinleştirme ve çalıştırma adımlarından oluşur.

1. Nesne Arama ve Repository Gezgini (ABAP Repository Tree)

2. Nesne Oluşturma ve Düzenleme

VS Code komut paleti (Ctrl+Shift+P / Cmd+Shift+P) üzerinden yeni ABAP sınıfları veya arayüzleri oluşturulabilir. Nesne üzerinde değişiklik yapıldığında sistem otomatik olarak ilgili nesneyi kilitler (Locking Mechanism).

3. Nesne Etkinleştirme ve Çalıştırma (IF_OO_ADT_CLASSRUN)

Etkinleştirme işlemi Ctrl+F3 (veya ilgili eklenti kısayolu) ile tetiklenir. Çalıştırılabilir sınıflar yazılırken standart if_oo_adt_classrun arayüzü uygulanır. Bu sayede bir SAP GUI ekranına veya test ortamına ihtiyaç duymadan doğrudan VS Code içindeki konsol ekranında kod çıktısı alınabilir.

Aşağıdaki kod örneği, VS Code ortamında sorunsuz derlenip çalıştırılabilecek standart bir test sınıfını göstermektedir:

CLASS zcl_demo_vscode DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .

  PUBLIC SECTION.
    INTERFACES if_oo_adt_classrun .
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.

CLASS zcl_demo_vscode IMPLEMENTATION.

  METHOD if_oo_adt_classrun~main.
    DATA: lt_data TYPE TABLE OF string.

    APPEND 'VS Code üzerinde ABAP Geliştirme' TO lt_data.
    APPEND 'Clean Core ve ABAP Cloud Uyumlu' TO lt_data.

    out->write( name = 'Çıktı Başlığı:'
                data = 'ABAP ADT Test Başarılı' ).

    out->write( data = lt_data ).
  ENDMETHOD.

ENDCLASS.

Kodu çalıştırmak için sınıf üzerinde sağ tıklayıp ABAP: Run as Console Application seçeneği kullanılır. Çıktı, VS Code’un alt panelinde bulunan ABAP Console sekmesine basılır.


AI Eklentileri ve Model Context Protocol (MCP) Entegrasyonu

VS Code ekosisteminin Eclipse’e kıyasla sunduğu en büyük avantaj, yapay zeka araçlarıyla sağladığı derin entegrasyondur.

1. GitHub Copilot ve Cursor Entegrasyonu

VS Code üzerinde ABAP dili tanımları yüklendiğinde, GitHub Copilot veya Cursor gibi araçlar ABAP sözdizimini (syntax) ve bağlamını tanımaya başlar.

2. Model Context Protocol (MCP) ile Agentic Coding

SAP’nin AI stratejisinde öne çıkan Model Context Protocol (MCP), yapay zeka ajanlarının (LLM) geliştirme ortamındaki veri modelleri, metadata ve servislerle güvenli bir şekilde iletişim kurmasını sağlar.

SAP ekosisteminde kullanılan @cap-js/mcp-server, @sap-ux/fiori-mcp-server ve @ui5/mcp-server paketlerinin yanı sıra, yerel ABAP MCP sunucuları sayesinde VS Code içindeki bir AI ajanı şu işlemleri gerçekleştirebilir:

  1. CDS View Metadata Analizi: Yapay zeka ajanı, SAP sistemindeki bir CDS view’ın bağımlılıklarını ve veri yapısını okuyabilir.
  2. Hata Analizi: Etkinleştirme sırasında alınan sözdizimi hatalarını doğrudan sistemden okuyup düzeltme önerisi sunabilir.
  3. Otomatik Kod Üretimi: BTP veya S/4HANA üzerindeki released API’leri sorgulayarak Clean Core prensiplerine uygun ABAP Cloud kodu üretebilir.

Aşağıdaki konfigürasyon örneği, VS Code AI eklentilerine bir MCP sunucusunun nasıl tanımlandığını göstermektedir:

{
  "mcpServers": {
    "cap-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@cap-js/mcp-server"
      ],
      "env": {
        "SAP_CLIENT": "100",
        "SAP_HOST": "https://vhcal4dsci.dummy.sap.com:44300"
      }
    }
  }
}

Best Practices ve Karşılaşılabilecek Tuzaklar

VS Code tabanlı ABAP geliştirme ortamına geçiş yaparken dikkat edilmesi gereken kritik noktalar ve çözüm yolları şunlardır:

Best Practices (En İyi Uygulamalar)

  1. ABAP Cloud ve Clean Core Odaklı Çalışın: VS Code üzerindeki ADT araçları, özellikle ABAP Cloud modelindeki (S/4HANA Cloud veya BTP ABAP Environment) serbest bırakılmış API’lerle (Released APIs) çalışırken maksimum verim sağlar. Klasik modifikasyonlar yerine ABAP RESTful Application Programming Model (RAP) ve Core Data Services (CDS) geliştirmelerini VS Code üzerinden yürütebilirsiniz.
  2. Çoklu Workspace Kullanımı: UI5/Fiori ön yüz kodları ile ABAP arka plan kodlarını aynı VS Code Workspace’i altında toplayın. Böylece tek bir editör üzerinden full-stack geliştirme yapabilirsiniz.
  3. Transport Request Yönetimi: Nesne kaydederken ve etkinleştirirken doğru Transport Request (Taşıma Talebi) seçildiğinden emin olun. VS Code bildirim panellerindeki Transport yönlendirmelerini takip edin.

Tuzaklar ve Sınırlılıklar (Pitfalls)


Sonuç

Eclipse ekosisteminden VS Code tabanlı ABAP geliştirme ortamına geçiş, yalnızca bir editör değişikliği değil; ABAP geliştirmeyi modern yazılım dünyasının (AI asistanları, MCP, poliglot çalışma ortamları, hafif sıklet mimariler) merkezine taşıyan stratejik bir adımdır. ADT on VS Code eklentisi, sistem bağlantı esnekliği ve AI entegrasyon yetenekleriyle özellikle ABAP Cloud ve Clean Core vizyonunu benimseyen ekipler için günlük geliştirme pratiklerini ciddi ölçüde hızlandırmaktadır.

Kaynaklar

Anahtar Kelimeler