top of page

SAP BODS ile SOAP Web Servisi Çağırma

  • Yazarın fotoğrafı: Furkan Tolu
    Furkan Tolu
  • 10 Ağu 2020
  • 3 dakikada okunur

Bu yazımızda SAP BODS ile parametre alan ve almayan 2 web servis çağrısı yapıp, parametrelerin nasıl web servise verildiğini göreceğiz.


Herkese açık olarak ülke bilgilerinin verildiği servis listesinden tüm ülkelerin kodlarını ve isimlerini alıp, sonra ISO kodunu parametrik olarak alan ve ülkelerin bilgilerini getiren web servis metodunu çağıracağız.ü

Servisin WSDL adresi:

http://webservices.oorsprong.org/websamples.countryinfo/CountryInfoService.wso?WSDL


Web Servis çağırmak için adımlar şu şekilde.


1. Web Service için datastore un oluşturulması

Datastore ekranında New Datastore diyerek, tipi Web Servise SOAP olan yeni bir datastore oluşturuyoruz ve URL ine yukarıdaki adresi yapıştırıyoruz.

2. Kullanılacak Methodların Import Edilmesi

Datastore un üzerine çift tıkladığımızda açılan özellikler ekranında web servisin sunduğu versiyonlar ve altında da tüm methodlar var.

ListOfCountryNamesByCode ve FullCountryInfo methodlarının üzerine gelip sağ click Import yapıyoruz ve methodları kendi datastore umuza ekliyoruz. Kullanmak istediğiniz her bir method u öncelikle import etmek gerekiyor.

Import ettiğimiz methodlar functions olarak dataflow un altında görünüyorlar.


3. Yeni bir job ve dataflow objesinin oluşturulması

Job penceresine gelip, yeni bir job oluşturuyoruz ve job içerisine yeni bir dataflow objesi ekliyoruz.

4. Parametre almayan web servisin çağrılması

ListOfCountryNamesByCode methodu herhangi bir parametre almıyor ve bunun için bir schema oluşturmamıza gerek yok ancak web servisi çağırabilmemiz için boş da olsa bir schema ile bağlamamız gerekiyor.


Bir row generation ekliyoruz ve default ayarları ile bırakıyoruz. 1 satırlık ve web servisi çağıracak bir kayıt üretmesi yeterli.


Row Generation ı yeni eklediğimiz query objesine bağlıyoruz ve Query deki schema adının üzerine gelip New Function Call u seçiyoruz.


Sol penceredeki RowID kolonunu sağ taraftaki function ın üzerine sürükleyip bırakıyoruz.

Map edilen schema ekranın en altında yazıyor.

Function ın response scheması query ye geldi. Bu methodu çağıracak ve çıktı olarak bu yapıda bir çıktı üretecek demek.

Web servis olduğu için nested (iç içe ) bir şema veriyor. Bunu bir tabloya yazmak istiyoruz.

Bunun için bir query daha ekleyip, tüm şemayı yeni query ye sürekleyip bırakıyoruz ve sağ tıklama gelen pop-up menu den unnest with sub schema yı seçiyoruz.

Bu query yi de bir tabloya bağlıyoruz. Bilgi olması açısından bu query ye bir de LoadDate kolonu ekledim ve içerisine sysdate() yazarak şu anki tarihi yazmasını sağladım.

Job'ı çalıştırdığımız da tablonun dolduğunu göreceğiz.

5. Parametre alan web servisin çağrılması


Yeni bir dataflow da yapabilirsiniz ancak ben mevcut dataflow dan devam edip, unnest query sine bağlayarak devam edeceğim.

Amacımız tüm listesini aldığımız ISO kodlarının her biri için FullCountryInfo methodunu çağırarak ülkeler hakkındaki bilgileri almak.

Çağıracağımız method parametre olarak ISOkodunu alıyor. Function üzerine çift tıklayarak request schema yı görebilirsiniz. Parametreyi doğru verebilmek için aynı yapıda bir schema hazırlamamız gerekiyor ( İsimler aynı olmayabilir ancak veri yapıları ve schema seviyesi (nest) aynı olmalı)

Unnest yaptığımız query nin sonuna 1 query daha ekliyoruz. ISO Kod ve ülke isimlerini de daha sonra görebilmek için query ye ekliyorum ancak böyle bir zorunluluk yok. Query adının üzerine sağ tık yapıp, new output schema diyoruz. Bu schema nın altına ISO kodunu ekleyeceğiz. Schema da düzenleme yapabilmek için bunu geçerli şema yapmamız gerekiyor. Şema adını çift tıklayarak veya sağ tık "Make Current" ı tıklayarak bunu yapabiliriz.

ISOCode kolonunu sürükleyerek veya üzerindeki popup menüden Map to Output u tıklayarak şemamıza ekleyebiliriz.

Şema yı header için oluşturuyoruz ve her bir kayıt için tek 1 kez gelmesini istiyoruz. bunun için Query nin öncesine yine tek 1 satır döndüren bir row generation objesi ekliyoruz.

En üstteki schema da sadece Query_Unnest From da işaretli iken, alt şema da sadece Row Generation işaretli olmalı.


Schema hazır artık web servisi çağırabiliriz. Yeni bir query ekliyoruz ve ilk servisi çağırırken yaptığımız gibi new function call ile function ı seçiyoruz ve Country_Schema yı sürükleyip bırakarak eşleştiriyoruz.

Nasıl bir xml dosya ürettiğini görmek için unnest schema template objesi oluşturup görelim.

Bir tabloya yazabilmek için bir sonraki query de unnest with sub-shemas ile web servis çıktığını tablo formatına getiriyoruz.

Bunu da bir tabloya bağlayıp, job ı çalıştırabiliriz.

Job'ı çalıştırdıktan sonra oluşan xml dosyası:

Tablonun içeriği de


Birsen Tunç Yazar

inteley Yazılım Danışmanlık

28/12/2018

 
 
 

Comments


logo2-white.png

© 2020

bottom of page