4 Kasım Pazar, 2018

 

Bundan önceki bir çok yazımda .net connector 3.0 ile .net – sap entegrasyonundan bahsetmiştim. Bu yazımda bu entegrasyonu nasıl yaptığımızı teknik olarak basit bir örnekle anlatacağım.

 

 

Hasan Arslan
ACRON Bilişim Teknoloji Uygulamalar Danışmanı

 

 

Öncelikle SAP tarafında bir RFC hazırlıyoruz.

RFC İsmi : Z_FEEDBACK_TEST
İmport Parametresi : I_MATNR
Export Parametresi : E_MAKTX

RFC Kaynak kod

FUNCTION Z_FEEDBACK_TEST.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(I_MATNR) TYPE MATNR
*" EXPORTING
*" VALUE(E_MAKTX) TYPE MAKTX
*"----------------------------------------------------------------------

SELECT SINGLE MAKTX
FROM MAKT
INTO E_MAKTX
WHERE MATNR EQ I_MATNR.

ENDFUNCTION.

Kısaca fonksiyonumuz MAKT tablosundan bizim gönderdiğimiz MATNR’nin MAKTX karşılığını dönen basit bir fonksiyon.

MAKT tablosu şu şekilde; (Veriler test amaçlıdır.)

Hazırladığımız RFC’nin ekran görüntüleri şu şekilde;

 

Burada dikkat edilmesi gereken nokta fonksiyonumuzun processing type özelliğinin Remote-Enabled olması gerekiyor. (1. ekran görüntüsünde mevcut)

Artık RFC’miz hazır. Şimdi .NET tarafına geçebiliriz.

Öncelikle sap bağlantısı için sap connector 3.0 kullanacağız.

Bir console uygulaması açıyoruz. Dependencies klasörüne sap connector 3.0 ile ilgili dll’leri (sapnco.dll ve sapnco_utils.dll) koyuyoruz ve projeye ekliyoruz. Bu arada bu projenin kaynak kodları ve bu bahsettiğim dll’ler yazımın en altında mevcuttur.

App.config klasöründe bağlanacağımız sap sisteminin bilgilerini giriyoruz.

SAP Bağlantısı için SAPManager.cs ve SAPDestinationConfig.cs dosyaları içinde bağlantı ile ilgili gerekli altyapı mevcut. Bu dosyaların kodlarını sayfaya yazmıyorum. Yazımın en altındaki linkte mevcuttur.

 

Parametre olarak MATNR alan ve bize MAKTX dönen bir fonksiyon yazalım.

public string TestFunction(string MATNR)
{
IRfcFunction rfcSurvey = this.RfcDestination.Repository.CreateFunction("Z_FEEDBACK_TEST");

rfcSurvey.SetValue("I_MATNR", MATNR);

rfcSurvey.Invoke(this.RfcDestination);

string E_MAKTX = rfcSurvey.GetValue("E_MAKTX").ToString();

return E_MAKTX;
}

Bu fonksiyon Z_FEEDBACK_TEST isimli RFC’ye parametre olarak MATNR verir ve dönüş değeri olarak MAKTX alır.

Şimdi bu fonksiyonumuzu çağıralım ve test edelim.

static void Main(string[] args)
{
SAPClass SAPClass = new SAPClass();

string MATNR = "000000000000000021";
string MAKTX = SAPClass.TestFunction(MATNR);
}

Yazdığımız fonksiyona MATNR değeri olarak “000000000000000021” gibi örnek bir değer gönderdik. Yukarıdaki ekran görüntüsündeki tablodan da görüleceği üzere bu MATNR’nin MAKTX karşılığı “Donanım Geliştirme”

Projemizi çalıştırdığımızda gönderdiğimiz MATNR değerine karşılık beklediğimiz MAKTX’i aldığımızı görüyoruz.

Kaynak Kod : https://github.com/cehars/NET-SAP-Entegrasyon

0 Yorum yok

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.