SAP webservis ten veri almak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
veliadiguzel
Üye
Mesajlar: 197
Kayıt: 09 Tem 2003 02:11
Konum: Gebze/Kocaeli
İletişim:

SAP webservis ten veri almak

Mesaj gönderen veliadiguzel »

SAP erp sistemine geçiş sürecinde yazdığımız kantar programı ile sap sunucuyu bir web servis üzerinden konuşturmaya çalışıyoruz sap ciler webservisi yayınladılar ama internette buldugum örneklerle işin içinden çıkamadım.
web servisin delphi ye aktardıgım kodunda tanımlı olan login proceduru aşağıdaki gibi tanımlı.

Kod: Tümünü seç

    procedure login_kontrol(const router: WideString; const App_host: WideString; const client: Smallint; const langu: WideString; const password: WideString; const systemnum: Smallint; const user: WideString; out login_kontrolResult: WideString; out tb_return: ArrayOfBAPIRET2); stdcall;

Kod: Tümünü seç

var
  FHurda: HurdaSoap;
  FLogin_kontrolResult: WideString;
  Ftb_return: ArrayOfBAPIRET2;
  i, j: integer;
begin
  FHurda := Hurda.GetHurdaSoap(false, '', HTTPRIO1);
  FHurda.login_kontrol(edRouterStr.Text, edAppHost.Text,
    StrToInt(edClient.Text),
    'TR', edPassword.Text, StrToInt(edSysNum.text), edUser.Text,
    FLogin_kontrolResult, Ftb_return);
  Label1.Caption:=edRouterStr.Text+','+ edAppHost.Text+','+edClient.Text+','+'TR'+','+ edPassword.Text+','+ edSysNum.text+','+ edUser.Text;
  Memo1.Lines.Clear;
  Memo1.Lines.Add('LOGIN_KONRTOL RESULT='+ FLogin_kontrolResult);
  for i := 0 to high(ftb_return) do
  begin
    Memo1.Lines.Add('TYPE=' + ftb_return[i].TYPE_);
    Memo1.Lines.Add('ID=' + ftb_return[i].ID);
    Memo1.Lines.Add('NUMBER=' + ftb_return[i].NUMBER);
    Memo1.Lines.Add('MESSAGE=' + ftb_return[i].MESSAGE);
    Memo1.Lines.Add('LOG_NO=' + ftb_return[i].LOG_NO);
    Memo1.Lines.Add('LOG_MSG_NO=' + ftb_return[i].LOG_MSG_NO);
  end;
bu şekilde deniyorum ama geri dönüş değerini alamyıroum.

out tb_return: ArrayOfBAPIRET2 buradaki veriyi nasıl alabilirm yukardaki gibi denedim normalde hata dönmemesi lazım ama hata dönüyor.

teşekkürler.
Veli ADIGÜZEL
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: SAP webservis ten veri almak

Mesaj gönderen orhancc »

Dönen hata nedir ?
Kullanıcı avatarı
veliadiguzel
Üye
Mesajlar: 197
Kayıt: 09 Tem 2003 02:11
Konum: Gebze/Kocaeli
İletişim:

Re: SAP webservis ten veri almak

Mesaj gönderen veliadiguzel »

Aslında sıkıntı login procedurunda gönderdigim parametreler dogru oldugu halde proceduredan geri hata donmesi test icin onlar ufak bir program yazmıslar calısıyor ama onlar c# le yazmıslar ben delphi den deniyorum.
Utf 8 falan herşeyi denedim ama olmadı Ftb_return.Type değişkeninin 'E' gelmemesi lazım ama geliyor.
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<NS1:login_kontrol xmlns:NS1="http://tempuri.org/">
<router xsi:type="xsd:string">/H//H/</router>
<App_host xsi:type="xsd:string">192.168.0.242</App_host>
<client xsi:type="xsd:short">150</client>
<langu xsi:type="xsd:string">TR</langu>
<password xsi:type="xsd:string">*********</password>
<systemnum xsi:type="xsd:short">0</systemnum>
<user xsi:type="xsd:string">VADIGUZEL</user>
</NS1:login_kontrol>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

bu benim yolladıgım request
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<login_kontrol xmlns="http://tempuri.org/">
<router>/H//H/</router>
<App_host>192.168.0.242</App_host>
<client>150</client>
<langu>TR</langu>
<password>********</password>
<systemnum>0</systemnum>
<user>mkucukkaya</user>
</login_kontrol>
</soap:Body>
</soap:Envelope>

bu da onların yolladıgı calısan request.
birde tag içindeki değişken tanımlarını kaldırıp denedim ama gene olmadı
<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<NS1:login_kontrol xmlns:NS1="http://tempuri.org/">
<router>/H//H/</router>
<App_host>192.168.0.242</App_host>
<client>150</client>
<langu>TR</langu>
<password>**********</password>
<systemnum>0</systemnum>
<user>VADIGUZEL</user>
</NS1:login_kontrol>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

sadece soap ve sap-env kaldı onlarıda değiştirip deneyeceğim bakalım.
Veli ADIGÜZEL
deltas
Üye
Mesajlar: 358
Kayıt: 06 Mar 2004 01:08
Konum: Malatya...
İletişim:

Re: SAP webservis ten veri almak

Mesaj gönderen deltas »

delphi ile webservice olayında genelde sorunlu.. Sorunla karşılaştığımda yaptığım işlem:
httprio.beforeexcute işleminde referans dosyaya göre değişiklik yapmak oluyor. referans dosyaya uygun replace işlemini yapınca sorunsuz çalışır. Programlama mantığına biraz ters ama yapacak bişey yok. Size tavsiyemde referans xml dosyayısı ile birebir uyumlu olması.
Nice İnsanlar gördüm üstünde elbise yok;
Nice elbiseler gördüm içinde insan yok.
Kullanıcı avatarı
veliadiguzel
Üye
Mesajlar: 197
Kayıt: 09 Tem 2003 02:11
Konum: Gebze/Kocaeli
İletişim:

Re: SAP webservis ten veri almak

Mesaj gönderen veliadiguzel »

teşekkürler bugun servisi yazan arkadaş gelicek oturup bir orta yol bulmaya çalışacağız..
Veli ADIGÜZEL
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: SAP webservis ten veri almak

Mesaj gönderen mkysoft »

SAP içinde servisin ürettiği XML'lere müdehale edilemiyor bildiğim kadarıyla (imkansız değildir ama çok uğraş gerektirir). Onun kendine göre standartları var.
Kullanıcı avatarı
veliadiguzel
Üye
Mesajlar: 197
Kayıt: 09 Tem 2003 02:11
Konum: Gebze/Kocaeli
İletişim:

Re: SAP webservis ten veri almak

Mesaj gönderen veliadiguzel »

Arkadaşlar uzun uğraşlar sonucu SAPci arkadaşla beraber sorunu çözdük sıkıntı import edilen servisin unitinde eksik yada hatalı import olabilir

Kod: Tümünü seç

initialization
....
InvRegistry.RegisterInvokeOptions(TypeInfo(HurdaSoap),ioDocument);
ekleyince sistem çalışmaya başladı.
Veli ADIGÜZEL
Kullanıcı avatarı
barutali
Üye
Mesajlar: 297
Kayıt: 02 Tem 2007 02:30

Re: SAP webservis ten veri almak

Mesaj gönderen barutali »

Yanlış hatırlamıyorsam eğer SAP için direk bağlantı bileşenleri vardı.
amatör küme programcı :D
Cevapla