Skip to Content
author's profile photo
Former Member

SAP PI Consume Third-Party Webservice

Hi,

I'm going to consume SAP PI with third party webservice because i've scenarioo which there are changes data in a program in SAP, i need to send the data to the third party application using their webservice.

SAP --> PI --> third-party webservice -->third party APP.

It is helpful if there any tutorial / on-line revision regarding this topic. tq.

Add comment
10|10000 characters needed characters exceeded

  • Follow
  • Get RSS Feed

4 Answers

  • Posted on Apr 06, 2011 at 04:03 AM

    Yes you can... use SOAP receiver Adapter..

    Add comment
    10|10000 characters needed characters exceeded

  • Posted on Apr 06, 2011 at 12:08 PM

    Hi Firdaus,

    This is a link to a step by step guide that could be useful for you:

    http://tinyurl.com/3dqmvfk

    Regards,

    José Raúl López

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member

      hi José Raúl López,

      i think the tutorial link you given the webservice is from SAP and the purpose is to Interface ABAP Web Service to Web Service communication using SAP PI.

      RFC-->Abap Webservice-->create WSDL--> import WSDL into SAP PI

      my previous exprience, i usually directly import the RFC into SAP PI instead created the RFC I)

      SAP --rfc--> SAP PI --soap communication--> Third-party

      what i'm looking for is to used third-party webservice to consume with SAP PI. anyway tq for your reply.

  • Posted on Apr 06, 2011 at 02:31 PM

    Basically you need to setup scenario from SAP to Webservice via PI. On the sender side you can use Proxy or Idoc or whatever your requirement. On the receiver side use SOAP Receiver Adapter.

    Following tips:

    Import third party WSDL as external definition in the ESR or Integration repository. You dont need to create data types for target side. you just use WSDL messages as external type.

    Create Data type for sender. Message type for sender, Message type for receiver(pull the external definition message here).

    Create standard sender and receiver interface.

    Mapping your sender to target WSDL message.

    Operation mapping: Use sender interface as source and receiver interface as target.

    Pretty much same procedure.

    In Integration directory:

    same procedure.

    Receiver adapter: Soap communication channel

    Target URL: specify wsdl url. you can find it inside the wsdl itself. search for soap: address location.

    Soap Action: if you dont see in the WSDL. Leave as blank.

    Before tesing, import web service WSDL in SOAPUI or XMLSPY and test the webservice. Also find out WSDL URL and use that URL in the soap reciever adapter cc.

    Refer these links

    http://www.riyaz.net/blog/xipi-a-guide-to-using-sap-xi-soap-adapter/technology/sap/113/

    http://help.sap.com/saphelp_nw04/helpdata/en/29/5bd93f130f9215e10000000a155106/content.htm

    >>Do you mean i need to set at SAP PI Integration Directory. under Business Service, configured as Receiver SOAP adapter?

    Yes.

    Add comment
    10|10000 characters needed characters exceeded

    • Former Member Former Member

      Hii Baskar Gopal,

      i'm testing the webservice located at public host outside.

      URL: [http://aspspider.ws/bitsoftware/TestService.svc|http://aspspider.ws/bitsoftware/TestService.svc]

      WSDL: [http://aspspider.ws/bitsoftware/TestService.svc?wsdl|http://aspspider.ws/bitsoftware/TestService.svc?wsdl]

      Below is the details of the service.

      Using Soap version: 1.1

      URI for the WSDL: http://aspspider.ws/bitsoftware/TestService.svc?wsdl

      Envelope sample:

      <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
        <s:Header>
          <Action s:mustUnderstand="1"
      xmlns="http://schemas.microsoft.com/ws/2005/05/addressing/none">http://tempuri.org/ITestService/NotifyETenaga</Action>
        </s:Header>
        <s:Body>
          <NotifyETenaga xmlns="http://tempuri.org/">
            <NotifyMessage>New Document Updated</NotifyMessage>
          </NotifyETenaga>
        </s:Body>
      </s:Envelope>
      
      Response Envelope sample:
      <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
        <s:Header />
        <s:Body>
          <NotifyETenagaResponse xmlns="http://tempuri.org/">
            <NotifyETenagaResult>Notify Received: New Document Updated</NotifyETenagaResult>
          </NotifyETenagaResponse>
        </s:Body>
      </s:Envelope>

      the expected result shoud be creating the abap program from Abap Proxy and manage to input and get respond from the abap screen. what i have done was:

      PI Respository

      1) Data type for sender & receiver. Message type for sender & receiver ,

      2) sender interface (sender& receiver) and receiver interface(for external definition).

      3) Mapping sender & receiver to external definition WSDL message.

      4) mapping: Use sender interface as source and receiver interface as target with externel definition.

      PI Directory

      1) Receiver adapter: Soap communication channel. target URL: http://aspspider.ws/bitsoftware/TestService.svc

      soap action : http://tempuri.org/ITestService/NotifyETenaga

      activate the abap proxy. but i failed with this error:

      <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 
      - <!--  Inbound Message 
        --> 
      - <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
        <SAP:Category>XIAdapterFramework</SAP:Category> 
        <SAP:Code area="MESSAGE">GENERAL</SAP:Code> 
        <SAP:P1 /> 
        <SAP:P2 /> 
        <SAP:P3 /> 
        <SAP:P4 /> 
        <SAP:AdditionalText>com.sap.aii.af.ra.ms.api.DeliveryException: aspspider.ws</SAP:AdditionalText> 
        <SAP:ApplicationFaultMessage namespace="" /> 
        <SAP:Stack /> 
        <SAP:Retry>M</SAP:Retry> 
        </SAP:Error>

  • Posted on Apr 29, 2011 at 08:50 AM

    Hi,

    Please check with SAP Note : 1235267

    Hope this helps to you.

    Add comment
    10|10000 characters needed characters exceeded