cancel
Showing results for 
Search instead for 
Did you mean: 

PI - Best effort error: "PARSING">ADAPTER.SOAP_EXCEPTION

valter_oliveira
Active Contributor
0 Kudos

Hello PI guys.

I've this cenario, where PI conects to an external WS, using SOAP adapter in a syncronous way (best effort).

When I invoce the WS, in SXI_MONITOR i can see this error:

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

- <!-- Call Adapter -->

- <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">

<SAP:Category>XIAdapter</SAP:Category>

<SAP:Code area="PARSING">ADAPTER.SOAP_EXCEPTION</SAP:Code>

<SAP:P1 />

<SAP:P2 />

<SAP:P3 />

<SAP:P4 />

<SAP:AdditionalText>soap fault: Server was unable to process request. ---> Object reference not set to an instance of an object.</SAP:AdditionalText>

<SAP:ApplicationFaultMessage namespace="" />

<SAP:Stack />

<SAP:Retry>M</SAP:Retry>

</SAP:Error>

In message display tool i can find this log:

2011-04-28 17:40:53 Success Message successfully received by messaging system. Profile: XI URL: http://*****:50000/MessagingSystem/receive/AFW/XI Credential (User): PIISUSER

2011-04-28 17:40:53 Success Using connection SOAP_http://sap.com/xi/XI/System. Trying to put the message into the request queue.

2011-04-28 17:40:53 Success Message successfully put into the queue.

2011-04-28 17:40:53 Success The message was successfully retrieved from the request queue.

2011-04-28 17:40:53 Success The message status set to DLNG.

2011-04-28 17:40:53 Success Delivering to channel: InformaDB_receiver_SOAP

2011-04-28 17:40:53 Success MP: entering

2011-04-28 17:40:53 Success MP: processing local module localejbs/sap.com/com.sap.aii.af.soapadapter/XISOAPAdapterBean

2011-04-28 17:40:53 Success SOAP: request message entering the adapter with user J2EE_GUEST

2011-04-28 17:40:54 Success SOAP: completed the processing

2011-04-28 17:40:54 Success SOAP: continuing to response message 491319d0-71b6-11e0-8c97-0050569744cd

2011-04-28 17:40:54 Error SOAP: response message contains an error XIAdapter/PARSING/ADAPTER.SOAP_EXCEPTION - soap fault: Server was unable to process request. ---> Object reference not set to an instance of an object.

2011-04-28 17:40:54 Success MP: leaving

2011-04-28 17:40:54 Success The message status set to DLVD.

2011-04-28 17:40:54 Success The message was successfully delivered to the application using connection SOAP_http://sap.com/xi/XI/System.

My doubt is if the error is being thrown by the WS or if it's by adapter when parsing the WS response.

Can you help?

Regards,

Valter Oliveira

Accepted Solutions (0)

Answers (3)

Answers (3)

aashish_sinha
Active Contributor
0 Kudos

Hi,

Can you please ignore SOAP action in receiver adapter and try sending it again. It is not a mandatory field.

Regards

Aashish Sinha

valter_oliveira
Active Contributor
0 Kudos

I have eliminated the SOAP action, but unfortunately it's throwing now this error:

"soap fault: Server did not recognize the value of HTTP Header SOAPAction:"

Regards,

Valter Oliveira.

aashish_sinha
Active Contributor
0 Kudos

Hi,

are you by any chance creating DT, MT for receiver soap adapter? you need to import it as external definition. If it is asking for an action we need to provide it. Can you please check if WS is working in WSNAVIGATOR.

Regards

Aashish Sinha

valter_oliveira
Active Contributor
0 Kudos

adition info:

In the external definition, when I look at the messages associated to the WSDL, I can see GetReportSoapIN (the part without the credentials that i'm mapping) and I can see GetReportCredentials (the credentials part).

How can I join this two messages in one message to consume the WS?

Regards,

Valter Oliveira.

valter_oliveira
Active Contributor
0 Kudos

Hi Aashish.

No, I'm not using a MT or DT.

The problem is getting clear to me.

How to create a xml message, that contain this two messages of the WSDL?

The strange thing is that SOAP UI joined it the envelope and works.

In XI, my external definition (WSDL) contains the 2 messages. But how can I join them in the request I have to send to WS?

Regards,

Valter Oliveira.

former_member200962
Active Contributor
0 Kudos

Check my response here:

You need to confirm that the request that SAP PI is making to the SOAP application is exactly in the same format as mentioned in the WSDL file....also confirm that the receiving SOAP application is using the same WSDL file format....similarly confirm for response message.

Also take into consideration the inclusion/ removal of SOAP envelope while you send/ receive message to the target SOAP application.

Former Member
0 Kudos

Hi Valter,

Try to test the webservice from other UI tools like Altova, soap scope etc. Then try to do the same from PI. Your payloads should exactly look like same from all the tools. I think there is a mismatch what WS is expecting and what PI is sending.

Regards,

---Satish

valter_oliveira
Active Contributor
0 Kudos

Hi Satish.

Thanks for the help. So you think that the problem is with what XI is sending to WS and not a problem when XI tries to get the response.

I used SOAP UI and I can invoke the WS correctly.

If you are right, I'm not sure how to solve it! When I import the WSDL with SOAP UI, it prepares a message like this:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:slid="http://slide.info.pt/">

<soapenv:Header>

<slid:SLIDECredentials>

<!Optional:>

<slid:Username>ZZZZZ</slid:Username>

<!Optional:>

<slid:Password>XXXXXX</slid:Password>

</slid:SLIDECredentials>

</soapenv:Header>

<soapenv:Body>

<slid:GetReport>

<slid:tipId>Nif</slid:tipId>

<slid:valorId>1123</slid:valorId>

<slid:idProcesso>XMLSLIDE</slid:idProcesso>

<slid:bocados>111111111111111111111111111111111111111111111111111111111111</slid:bocados>

<slid:refCliente>9999</slid:refCliente>

<slid:tipOutput>

<slid:TipoOutput>Xml</slid:TipoOutput>

</slid:tipOutput>

</slid:GetReport>

</soapenv:Body>

</soapenv:Envelope>

But when I import it to XI, I only find this (without credencials):

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

<ns2:GetReport mlns:ns2="http://slide.info.pt/">

<ns2:tipId>Nif</ns2:tipId>

<ns2:valorId>123</ns2:valorId>

<ns2:idProcesso>XMLSLIDE</ns2:idProcesso>

<ns2:bocados>111111111111111111111111111111111111111111111111111111111111</ns2:bocados>

<ns2:refCliente>9999</ns2:refCliente>

<ns2:tipOutput>

<ns2:TipoOutput>Xml</ns2:TipoOutput>

</ns2:tipOutput>

</ns2:GetReport>

Regards,

Valter Oliveira.

former_member200962
Active Contributor
0 Kudos

The error looks to be due to missing SOAP envelope in the request which PI makes to the WS....what have you selected in receiver SOAP channel for Do not use SOAP enevelope?

For this configuration you can readily find reference in SDN.

valter_oliveira
Active Contributor
0 Kudos

Hi there.

I think I was not clear in one point.

When I imported the WSDL i did not find where to place the credentials. Since it´s a sincronous message I cannot find the envelope message that I send to the WS. What I have shown here is what's done in the mapping I've made, whithout the header part.

The question is how can I fill that kind of envelope. In WSDL I only see the message GetReport, not the Header one.

I tryied already the authentication in SOAP communication channel but it doesn't work in this case.

Regards,

Valter Oliveira.