Sap Abap Fonksiyonu ile Web Servis Oluşturma ve Web Servisi Kullanma

Övünç DİNÇ

Çözüm Ekibi
Kayıtlı Üye
Katılım
8 Eki 2016
Mesajlar
928
Tepki puanı
255
Puanları
63
Yaş
39
Konum
İzmir
Web Sitesi
sapofis.com
Kullandığınız SAP Modülleri
  1. SAP MM
  2. SAP PP
Katılım Bölgesi
  1. İzmir
Sap haricinde herhangi bir dış kaynaktan sap verisi çekmek istiyorsak web servise ihtiyaç duyarız. Sap ’de web servis üretmek için iki yol vardır. Bunlardan birincisi ve sap ’nin bizden beklediği SOAMANAGER işlem kodu yardımıyla web servis üretmektir.

Fakat ben daha pratik olan diğer yöntemi anlatacağım. Öncelikle SE37 işlem kodu ile ZSD_F_GET_MATNR diye bir remote enabled fonksiyon yaratıyoruz. Daha sonra import parametresi olarak malzeme numarası alıp export parametresi olarak MARA yapısını kullanıcıya gönderiyoruz.

Kod:
FUNCTION zsd_f_get_matnr.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(IP_MATNR) TYPE  MATNR
*"  EXPORTING
*"     VALUE(ES_MARA) TYPE  MARA
*"----------------------------------------------------------------------
 
  SELECT SINGLE * FROM mara INTO es_mara
    WHERE matnr EQ ip_matnr.
 
ENDFUNCTION.

Daha sonra SICF işlem kodu ile ‘default host/sap /bc/soap’ altındaki bütün servisleri aktif hale getirmemiz gerekiyor. Bu servisleri aktif hale getirdikten sonra sistemdeki remote enabled fonksiyonların web servis definition (wsdl) dosyalarına aşağıdaki şablon ile erişebiliriz.

http://<domain>:<port>/sap/bc/soap/wsdl/?services=<function name>&sap-client=<client>

domain:sap sisteminde tanımlı sunucu adresi
port:sunucunun http portu
function name:fonksiyonun adı
client:sap sisteminin client numarası

Örnek: http://dev.serkanozcan.com:80/sap/bc/soap/wsdl/?services=ZSD_F_GET_MATNR&sap-client=111

Bu wsdl’e eriştiğinizde endpoint olarak erişeceğiniz url şu şekilde olacaktır; http://dev.serkanozcan.com:80/sap/bc/soap/rfc/

Son olarak aşağıdaki xml soap mesajını elde ettiğimiz endpoint’e gönderirsek XXXX malzemesinin detaylarını response olarak alabiliriz.

Kod:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:urn="urn:sap-com:document:sap:rfc:functions">
<soapenv:Header/>
<soapenv:Body>
<urn:ZSD_F_GET_MATNR>
<IP_MATNR>XXXX</IP_MATNR>
</urn:ZSD_F_GET_MATNR>
</soapenv:Body>
</soapenv:Envelope>
 
Üst