
Yenilenen SAP Uzlaşma Yönetimi bizlere ne sunuyor?
24 Ekim 2024
Uzaktan Çalışma Ortamında Ekip Yönetimi Stratejileri
4 Kasım 2024Merhabalar, bu yazımızda da ABAP Programlama dilinde REST Servis kullanımından bahsediyoruz. Yazının içeriğinde ABAP REST servis nedir, yaygın olarak kullanılan HTTP yöntemleri ve GET metodu ile örnek bir REST servis oluşturulması konularında bilgi veriyoruz.
Başlıyoruz:
ABAP REST Servis Nedir?
ABAP REST servisi, ABAP dili kullanılarak geliştirilen ve HTTP protokolü üzerinden RESTful (Representational State Transfer) bağlantıları sağlayan bir web servistir. Bu servis, SAP’nin RESTful işlevselliğini desteklemesi için tasarlanmıştır.
REST, web uygulamalarının yapılandırılması ve iletişim kurması için yaratılmış bir yazılım mimari stilidir. Web hizmetleri, genellikle HTTP protokolü üzerinden veri alışverişinde bulunma biçimini ifade eder. ABAP REST servisi, HTTP’nin get, post, put ve delete gibi standart işlemleri ile uyumludur.
Bu servisler, genellikle bir SAP ERP sisteminin veya CRM sisteminin dışında bir uygulamanın (bir web sitesi gibi) SAP’ye bağlanması gerektiğinde kullanılır. ABAP REST servisi ile bu uygulamalar, SAP sistemine sorgular yapabilir, verileri okuyabilir, güncelleyebilir veya yeni veriler ekleyebilir.
Örneğin, bir müşterinin sipariş geçmişini bir web sitesinin halka açık bir sayfasında göstermek istiyorsanız, web uygulamanız, bir ABAP REST servisi aracılığıyla SAP CRM ve ERP sistemine bağlanabilir ve bu verilere erişebilir.
ABAP REST servislerinin oluşturulması ve yönetilmesi, genellikle ABAP dilli yazılımcılar tarafından yapılır. Her servis, spesifik bir işlevi yerine getirmek üzere tasarlanmış belirli bir API’ye (Application Programming Interface) sahip olacaktır.
Şimdi biraz biraz detaya iniyoruz:
Aşağıda ABAP REST servis tabanlı mimaride yaygın olarak kullanılan HTTP yöntemleri;
1. GET: Belirli bir kaynağı sunucudan istemek için kullanılır. Bu yöntem, sunucu üzerinde herhangi bir etkisi olmayan sorguları çalıştırmak için kullanılır.
2. POST: Sunucuya yeni bir kaynak göndermek için kullanılır. POST isteği genellikle bir sunucudaki verinin oluşturulmasını veya güncellenmesini tetikler.
3. PUT: Sunucudaki mevcut bir kaynağı tamamen yenisiyle değiştirmek için kullanılır. Eğer belirtilen kaynak yok ise, sunucu genellikle bir tane oluşturacaktır.
4. DELETE: Belirli bir kaynağın sunucudan kaldırılmasını talep eder.
Örnek oluşturacağımız serviste aşağıdaki adımları izleyeceğiz;
1. “Request Handler Class” ve “Resource Class” oluşturup daha sonra GET ve POST metodunu yaz
2. SICF T-Code’undan servisi oluştur ve aktifleştir
3. Sürecin Postman ile testini gerçekleştir.
Örnek REST servisimiz için öncesinde oluşturduğum ZCRM_OGRENCI tablosunu kullanacağım.
İlk olarak Handler ve Provide Classlarımızı oluşturalım;
▶️ Bunun için SE24 İşlem kodu ile Class Builder ekranında Handler Class’ımız için uygun bir isim girerek bir handler class oluşturuyoruz.



▶️ Devamında aşağıdaki ekran resminde yer alan 1. ve 2. adımlara tıklayarak Superclass ekranımızı açıyoruz.

▶️ Superclass alanına miras alacağımız “CL_REST_HTTP_HANDLER” standart sınıfını giriyoruz.

▶️ Kaydet dedikten sonra aşağıdaki şekilde default olarak dört adet metot gelecek. Burada GET_ROOT_HANDLER yöntemini uygulamak zorunludur. GET_ROOT_HANDLER metodunu Redefine etmeden aktif etmeye çalışırsak söz dizimi hatası verir.

▶️ GET_ROOT_HANDLER metodunu redefine ediyoruz.

▶️ Devamında GET_ROOT_HANDLER class’ının içerisine “Attach” metodu ile şablon ve oluşturacağımız Provide Class’ı veriyoruz.
▶️ RESTful servis için bir yönlendirici (router) oluşturur. ‘/ogrenci’ adresine bir istek geldiğinde, bu yönlendirici, ‘ZTG_CL_OGRENCI_REQ_PROVIDER’ isimli handler sınıfına yönlendirme yapar. Bu handler sınıfının ilgili metotları (GET, POST, DELETE vb.) bu isteği işler ve gerekli cevabı oluşturur.

▶️ Kodumuzu aktifleştirip Provide Class’ımızı oluşturmak adına SE24′ ekranına geri dönüyoruz. Class Builder ekranında Provide Class’ımız için uygun bir isim girerek bir Provide class oluşturuyoruz.

▶️ Aynı işlemleri tekrar ederek Superclass alanına miras alacağımız “CL_REST_RESOURCE” standart sınıfını giriyoruz. Kaydedip sınıfımıza girdikten sonra çeşitli metotların miras yapısı ile sınıfımıza geldiğini görmekteyiz.


▶️ GET Metoduna tıklayıp metodu redefine ediyoruz.

▶️ Devamında aşağıdaki örnekteki gibi kodumuzu GET Metodunun içerisine yazabiliriz. Yazımın başında belirttiğim ZCRM_OGRENCI tablosuna Get metodu içerisinde sorgu atarak ilgili veriyi çekiyorum.

▶️ Kodumuzu aktifleştirip class builder den çıkabiliriz.
Sonraki adım olarak artık SICF Servisi oluşturabiliriz;
▶️ Servisi oluşturmak için SICF işlem kodu ile “Servis Bakım” ekranına gidiyoruz. Burada F8 ve “Yürüt” butonu ile ekranı çalıştırıyoruz.

▶️ Devamında default_host’u seçerek Ana sistem/servis yarat’a tıklıyoruz.

▶️ Açılan ekran da servisimizin adını belirleyip giriyoruz.

▶️ Gerekli kısımları aşağıdaki gibi dolduruyoruz. İşleyici listesine Handler Class’ımızı giriyoruz.

▶️ Oluşan servisimize sağ tıklayıp “Servisi Etkinleştir” diyoruz.

▶️ Oluşan servisimize tekrardan sağ tıklayıp “Servisi Dene” diyoruz.

▶️ Bizi default olarak gelen get metodunun çağrıldığı bağlantıya yönlendirecektir. (Servisin devamındaki “/ogrenci” kısmı handler class’ımız içerisinde vermiş olduğumuz iv_template ifadesidir.)
Hadi Test Edelim!:
▶️ Burada test edebilmek için ‘”?” sonrasına “=20” yazıyoruz. Buradaki ifade ile birlikte enterladığımızda Get metoduna gidip kod bloğu içerisindeki işlemleri yaparak “ogrenci_no = 20” olan değeri çekip JSON formatında görüntüleniyor.







