cancel
Showing results for 
Search instead for 
Did you mean: 

Web Service Implementation using PI 7.1

Former Member
0 Kudos

Hi Experts,

I'd like to know if my approach with my design and implementation with this is correct.

Scenario:(simple scenario)

Partner => PI 7.1 => ECC

Partner will be sending soap request (SOAP Sender) and PI will be the one generating the wsdl (Service Provider) and publish it in service registry. Then PI sends the soap request to ECC via proxy (GeneratedReceiver_XI) and write the data on a table. Once written, it send back response to the sender.

ECC already contains a FM that I imported in ESR as RFC (but didn't used the RFC, instead i created data types)

Design and Configuration:

ESR: (Service Definition Profile) - didn't create Message Mapping and Operation Mapping

1. Data Type (Request and Response) DT_Request & DT_Response

2. Message Type (data type Request and Response) MT_Request & MT_Response

3. Service Interface (Inbound:Synchronous:Stateless) SI_IA_FMName

4. Imported Object - RFC named on the Function Module itself

Integration Builder: Configuration

1. Party - P_PartnerName

2. Service - S_Service

3. Sender Comm Channel (SOAP Sender) - HTTP approach

4. Receiver Comm Channel (GeneratedReceiver_XI)

5. Sender Agreement - Party | Service | Service Interface | Namespace (Then created a wsdl and then published in service registry)

6. Interface Determination - using the service interface

7. Receiver Determination: ECC as the Receiver Component

8. Receiver Agreement - based on the Receiver Component ECC and assigned GeneratedReceiver_XI

ECC (sproxy)

created a proxy base on the Service Interface.

Testing Phase:

Now that the wsdl is created and published, i send it over the partner for their consumption. My configuration in sender comm channel (SOAP) was HTTP.

I tried using soapUI as my tool to test the wsdl. I was able to generate a soap message base on the wsdl I've generated. The message was received and processed by IE but looking onto the Receiving Group Pipeline step ("Do not use SOAP Envelope" is clicked) i don't see any payload under. But when "Do not use SOAP Envelope" is unclicked, payload is seen but soap envelope is present on the payload. Its still processed by PI and was sent to ECC but checking on XML message monitoring in ECC (sxi_monitor) message is in "Scheduled" status.

What would be the reason for it. Is it the method that is added not correct or is it my design/configuration approach is wrong.

Again here's my Scenario:

PArtner === (wsdl-soap request) ==> SAP PI 7.1 (WS Provider) ===== (ABAP Proxy - Inbound) ====> ECC ( sproxy)

Btw, i didn't use the RFC imported from ECC. Also partner encountered some errors upon sending soap request via HTTP with the wsdl i've published and generated.

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

no need to use envelop

check that the sender system is sending the data in correct format... usually this happen.

second for schedule message- check in SMQ2 and check that your queue is registered.

Former Member
0 Kudos

This was the payload sent.

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

- <!-- Inbound Message

-->

- <ns0:MT_XXXX xmlns:ns0="http://xx.com/xx/xxx/xxx/xxxxx" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">

- <TZr3xxxx xmlns="">

- <item xmlns="">

<Matnr xmlns="">83027268</Matnr>

<Sapfrom xmlns="">1702</Sapfrom>

<Sapto xmlns="">7035</Sapto>

<Psttr xmlns="">2010-06-21</Psttr>

<SapAsndqty xmlns="">1234.56</SapAsndqty>

<SapAsnduom xmlns="">CS</SapAsnduom>

<Dat00 xmlns="">2010-06-25</Dat00>

<Priority xmlns="">3</Priority>

</item>

</TZrxxxx>

</ns0:MT_XXXX>

i just replaced some of the values as "X" to make some of the details confidential.

My partner sent me 5 test messages. All of them are processed successfully in PI. But in ECC 1 was processed the 4 is in "scheduled" status. Would it matter if the structure of in ECC where the data is written matters with the structure of Data Type i've created in ESR?

former_member209575
Contributor
0 Kudos

hi,

how u r updating in ECC,

r u using proxy...?

check in SMQ2 also is ther any queue error is ther

Regards

Pradeep P N

Former Member
0 Kudos

Hi Pradeep,

yes im using proxy from PI to ECC.

basically they're sending data without soap envelope..with this i used what this link [Configuring the Sender SOAP Adapter|http://help.sap.com/saphelp_nwpi71/helpdata/en/69/a6fb3fea9df028e10000000a1550b0/frameset.htm] mentioned. adding "&nosoap=true" the i selected "Do Not Use SOAP Envelope" in the conversion parameters. Upon receiving the message, it was processed in PI and was sent successfully in ECC. But the payload contains soap envelope! compare to payload received mentioned above thread.

now its throwing an error while checking sxi_monitor in ECC.

Error during XML => ABAP conversion (Request Message; error ID: CX_ST_MATCH_ELEMENT; (/1SAI/TXS36A82B8517BF150F8580 XML Bytepos.: 116 XML Path: SOAP-ENV:Envelope(1) Error Text: System expected the element 'MT_XXXX')) System expected the element 'MT_XXXX'

Answers (1)

Answers (1)

rajasekhar_reddy14
Active Contributor
0 Kudos

Hi ,

The Approach what you have defined looks perfect, the main reason you get Schedule status in moni is, data not sent to receiver System, When you use Server Proxy you have to establish the connection between PI and ECC,there are set of steps to be followed.i suspect that connection was not success between PI and ECC.,

Search in SDN,ABAP Proxy configurations.you will find ton of docs.

Regards,

Raj