cancel
Showing results for 
Search instead for 
Did you mean: 

SOAP Parsing Error: Server was unable to process request

Former Member
0 Kudos

Hia,

We are working on ABAP Proxy --> SAP PI 7.1 --> SOAP (Asynchronous Scenario).

(ECC -> PI -> Legacy CRM)

System is getting connected and able to send asynchronous messages to legacy system. But getting following error while sending synchronous error:

2010-05-10 13:15:05 Information Delivering to channel: CC_SOAP_SOReject_Out

2010-05-10 13:15:05 Information SOAP: request message entering the adapter with user J2EE_GUEST

2010-05-10 13:15:05 Information SOAP: completed the processing

2010-05-10 13:15:05 Information SOAP: continuing to response message f33caa90-5c07-11df-c659-96d147c2ff0f

2010-05-10 13:15:05 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.

2010-05-10 13:15:05 Error Adapter Framework caught exception: 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.

2010-05-10 13:15:05 Error Delivering the message to the application using connection SOAP_http://sap.com/xi/XI/System failed, due to: com.sap.engine.interfaces.messaging.api.exception.MessagingException: 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.. Setting message to status failed.

2010-05-10 13:15:06 Error The message status was set to FAIL.

I have already checked Data Structure and it is fine.

Regards

In this scenarios we are using XSLT mapping using CDATA.

Please suggest solution.

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi ,

Please check in CC the processing is Best Effort/Exactly once or Exactly Once in order.

Regards,

Tiny

Former Member
0 Kudos

Its Best Effort!!!

Shabarish_Nair
Active Contributor
0 Kudos

it should be EO for asyn scenarios

Former Member
0 Kudos

Sorry my scenario is synchronous one...

Shabarish_Nair
Active Contributor
0 Kudos

are you using the same scenario for both sync and async?

note that for sync and async it needs to be different configurations

Former Member
0 Kudos

Please elaborate....

I am using:

1 Communication Channel

1 Receiver Determination

1 Receiver Agreement

1 Interface Determination

The scneario is we have to send information from SAP ECC to Legacy system into single xml node (in client's WSDL). To convert the whole data structure into one single SXML string we are using XSLT mapping.

Regards

Former Member
0 Kudos

Hi,

Are you expecting a response from the webservice.If you need one it will Best Effort , else it should be EO.

Regards,

Tiny

Former Member
0 Kudos

Yes I am expecting a response.

But unable to find from the error whether the error is while sending or while receiving the response.

Regards

Former Member
0 Kudos

Can you try to send the SOAP request using any other tools like XML Spy and check whether its data related error or not?

Regards,

Tiny

Former Member
0 Kudos

Sorry I cannot check the scenario using XML Spy as the SOAP CC is on Receiver side and not Sender.

Shabarish_Nair
Active Contributor
0 Kudos

do the following;

1. in sxmb_adm -> integration engine configuration -> specific configuration -> add a runtime parameter LOGGING_SYNC with the value as 1

2. now trigger the interface. then you will see two different lines for both inbound or outbound.

3. if the issue is at an adapter level check - /people/shabarish.vijayakumar/blog/2008/01/08/troubleshooting--rfc-and-soap-scenarios-updated-on-20042009

4. Also confirm your end to end design and configuration

/people/shabarish.vijayakumar/blog/2006/03/23/rfc--xi--webservice--a-complete-walkthrough-part-1

/people/shabarish.vijayakumar/blog/2006/03/28/rfc--xi--webservice--a-complete-walkthrough-part-2

instead of the RFC as above , your will be a proxy. that will be the only difference

Former Member
0 Kudos

Thanks a lot for the suggestions:

1. in sxmb_adm -> integration engine configuration -> specific configuration -> add a runtime parameter LOGGING_SYNC with the value as 1

2. now trigger the interface. then you will see two different lines for both inbound or outbound.This entry already exists and I can see 2 different lines for outbound and inbound.

3. if the issue is at an adapter level check - /people/shabarish.vijayakumar/blog/2008/01/08/troubleshooting--rfc-and-soap-scenarios-updated-on-20042009

Couldn't find solution to my error in this blog.

4. Also confirm your end to end design and configuration

/people/shabarish.vijayakumar/blog/2006/03/23/rfc--xi--webservice--a-complete-walkthrough-part-1

/people/shabarish.vijayakumar/blog/2006/03/28/rfc--xi--webservice--a-complete-walkthrough-part-2

instead of the RFC as above , your will be a proxy. that will be the only difference

hve performed all the steps except Sender Agreement as we are using Proxy instead of RFC.

Please help out!!

former_member200962
Active Contributor
0 Kudos

1) The request-message structure send by XI is not same as the one in the receiver system

2) You have not maintained proper Action in SOAP channel.

3) Re-check the SOAP channel configuration

Regards,

Abhishek.

Former Member
0 Kudos

1) The request-message structure send by XI is not same as the one in the receiver system

This can be the issue.

let me explain you the situation:

Client has provided a WSDl with Single Node of XML and asking us to pass the whole structure as an single string along with all the nodes of data structure. To fulfil this requirement I am using XSLT mapping and because of whihc probably this error is coming. Details are mentioned below:

Our Source Strucutre

SOReject (Element)

ITEM (Elment)

SONumber (Element, xsd:string, 0..1)

DealerCode (Element, xsd:string, 0..1)

RejectionCode (Element, xsd:string, 0..1)

target Strucuture (provided in WSDL)

SORejecSOAPIn (Message)

SOReject (Element)

SORejectXML (Element, XSD:String, 0..1)

Please let me know if there is an issue in source strucutre. I think I should remove ITEM (Element) from Source strucuture)

2) You have not maintained proper Action in SOAP channel.

Proper SOAP action provided in WSDL is maintained

3) Re-check the SOAP channel configuration

Its working fine.

thanks

Former Member
0 Kudos

Waiting for the response!!

former_member200962
Active Contributor
0 Kudos
Please let me know if there is an issue in source strucutre. I think I should remove ITEM (Element)
from Source strucuture)

we should not worry about the source structure.....let it have 100 more elements....however when we are using the XSLT and then generating the target message structure, this target structure may not get generated properly.

Can you do one workaround.....using a SOAP client test the Webservice directly by entering the data nto the webservice structure and then making a request instead of sending it through XI.....consult with the web-service application developers and verify in what format are they expecting the data.

Regards,

Abhishek.

Former Member
0 Kudos

thanks Abhishek...

they are expecting response in XML format. Even my XML result in SXMB_MONI after all mapping n stuff is same as they are expecting but than as well getting this exceptin error.

they are expecting this result

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

- <DlrDiscItemWise>

- <DlrDiscItemWiseXML>

- <ns0:MT_SOReject_Sender xmlns:ns0="http://MTSINDIA/TC/SalesOrderReject">

- <ITEM>

<sSlsOrderCode>1001</sSlsOrderCode>

<sDlrCode>as</sDlrCode>

<sRejectReason>Agreement Expired</sRejectReason>

<nCircleCode>4</nCircleCode>

</ITEM>

</ns0:MT_SOReject_Sender>

</DlrDiscItemWiseXML>

</DlrDiscItemWise>

which we are able to send....out of our system I mean I can see this as output in SXMB_MONI

Former Member
0 Kudos

Please help!!

former_member200962
Active Contributor
0 Kudos
they are expecting this result

<?xml version="1.0" encoding="UTF-8" ?> 
- <DlrDiscItemWise>
- <DlrDiscItemWiseXML>
- <ns0:MT_SOReject_Sender xmlns:ns0="http://MTSINDIA/TC/SalesOrderReject">
- <ITEM>
<sSlsOrderCode>1001</sSlsOrderCode> 
<sDlrCode>as</sDlrCode> 
<sRejectReason>Agreement Expired</sRejectReason> 
<nCircleCode>4</nCircleCode> 
</ITEM>
</ns0:MT_SOReject_Sender>
</DlrDiscItemWiseXML>
</DlrDiscItemWise>

It looks like MT_SOReject_Sender and ITEM are getting created as nodes within the target message and hence the error.....the source XML does not seem to be coming as a string which the target is expecting.

Regards,

Abhishek.

Former Member
0 Kudos

Thanks Abhishek,

But this message is created after performing XSLT mapping code which you suggested in other thread. Code is as follows for your reference;

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
	<xsl:template match="/">
		<DlrDiscItemWise>
			<DlrDiscItemWiseXML>
				<xsl:text disable-output-escaping="yes"><![CDATA[
				
				
				
			
		
	
]]>

former_member200962
Active Contributor
0 Kudos

If you check the message in SXMB_MONI (request message mapping) how do you see the output? I mean do you see it as a string?

Yesterday i mentioned that you check with the end system what format (message payload) they are expecting.....then try sending this particular data from a SOAP tool (like SAP SOAP Tool) and verify if the end system is really able to receive it.

You need to get the sample XML from the end system.

Regards,

Abhishek.

Former Member
0 Kudos

Yes you are right, I am not able to see the message in MONI as a string. It is in the strucuture format.

It means the XSLT mapping didnt work...and it was not in Single XML.

<?xml version="1.0" encoding="UTF-8" ?> 
<ns1:SalesOrderReject xmlns:ns1="http://tempuri.org/">
  <ns1:SalerOrderRejXML><SalesOrderReject><SalesOrderRejXml><sSlsOrderCode>55</sSlsOrderCode><sDlrCode>66</sDlrCode><sRejectionReason>66</sRejectionReason><nCircleCode>66</nCircleCode></SalesOrderRejXml></SalesOrderReject></ns1:SalerOrderRejXML> 
  </ns1:SalesOrderReject>

But with SLT mapping I am getting CDATA tag.

Back to square one...how to remove that CDATA

former_member200962
Active Contributor
0 Kudos

The example shown by Michal seems to be producing result without CDATA (at least in mapping test): /people/michal.krawczyk2/blog/2005/11/01/xi-xml-node-into-a-string-with-graphical-mapping

Actually <![CDATA[ and > are an indication of start and end of CDATA section and hence the message is able to pass through the parser.....right now i dont have any XSLT editor and hence cant try out the code.....just check it out....may be tomorrow morning will try it in XI.

Former Member
0 Kudos

Abhishek,

Check Michal's blog....in end the result is showing CDATA tag...I m using this code from this blog itself.

Thanks a lot for helping. Even I wil try tomorrow in offie...

stefan_grube
Active Contributor
0 Kudos

> I m using this code from this blog itself.

You cannot use any code sample that you find, when you not even know how the target structure looks like.

get an example XML for the required SOAP request call. Before you have this, all your effort is total waste of time.

Former Member
0 Kudos

Source structure;

<?xml version="1.0" encoding="UTF-8"?>
<ns0:MT_SOR_test xmlns:ns0="http://MTSINDIA/TEST/SingleValue">
   <ITEM>
      <sSlsOrderCode>100</sSlsOrderCode>
      <sDlrCode>200</sDlrCode>
      <sRejectReason>300</sRejectReason>
      <nCircleCode>400</nCircleCode>
   </ITEM>
</ns0:MT_SOR_test>

Final Target strucutre accept Web Service

<?xml version="1.0" encoding="UTF-8"?>
<ns1:SalesOrderReject xmlns:ns1="http://tempuri.org/"><ns1:SalerOrderRejXML>&lt;ITEM&gt;&lt;sSlsOrderCode&gt;100&lt;/sSlsOrderCode&gt;&lt;sDlrCode&gt;200&lt;/sDlrCode&gt;&lt;sRejectionReason&gt;300&lt;/sRejectionReason&gt;&lt;nCircleCode&gt;400&lt;/nCircleCode&gt;&lt;/ITEM&gt;</ns1:SalerOrderRejXML></ns1:SalesOrderReject>

The above result is the test result which I got from using CONCAT and CONSTANT function si graphical mapping which is not a feasible solutin. It works in small strucutres but where the data structure is big (lets say 40 nodes) and coplex structure than it will fail.

Cannot use XSLT as CDATA will come in picture. Any other options?

stefan_grube
Active Contributor
0 Kudos

In my opinion the guys from server should redesign the interface and provide a real web service without putting XML into a string.

.net provides tools for doing this. So it is easier to fix the issue at server side compared to your effort to make it run.

Former Member
0 Kudos

I tried sending message to client's server using external tool (SOAPUI) and getting "HTTP/1.1 400 Bad Request" error.

We were discussing earlier that the error migh be because of CDATA function used in XSLT mapping but it is not.

We have asked for error log from client's server and probable we will be bale to find root cause of the problem.

Will update the result and solution.

Thanks a lot

Former Member
0 Kudos

Hi Chanakya,

Did you find a solution to this issue ?

We have a simillar scenario (in XI 3.0). We get the same error "soap fault: Server was unable to process request. ---> Object reference not set to an instance of an object.</"

My mappings look good, xml (payload) is fine, works correctly from SoapUI tool too. My 'Do Not use Soap Envelope' box is unchecked in directory. I suspect some issue with the Soap Envelope.

Appreciate your input.

Former Member
0 Kudos

Hi,

The problem was at the client's end. The object reference error was being sent from .net server.

We recommended client tpo change the structire of web service (wsdl) and issue was resolved.

Regards