Hi Folks,
Recently I was working on a Proxy to REST synchronous scenario, where I was using Async-Sync Bridge to accomplish the same (as per the requirement). You may refer William's blog for the same:
https://blogs.sap.com/2014/01/28/generic-pi-async-sync-bridge-configuration-for-any-adapters/
This issue is discussed in few questions raised on sap, but not sure if it was well described completely anywhere. Recollecting all the stuff at a single place. Hope it's useful for you in case you have the similar issue.
Problem:
The issue came when I was receiving the response back from REST service & it was getting failed in PI due to
SOAP adapter: Processing error. Below is the error in detail.
SOAP: Call failed: com.sap.aii.af.sdk.xi.srt.BubbleException: <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Header></SOAP:Header>
<SOAP:Body>
<SOAP:Fault
xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<faultcode>SOAP:Client</faultcode>
<faultstring>Error during parsing of SOAP header</faultstring>
<faultactor>http://sap.com/xi/XI/Message/30</faultactor>
<detail>
<SAP:Error SOAP:mustUnderstand="1"
xmlns:SAP="http://sap.com/xi/XI/Message/30">
<SAP:Category>XIProtocol</SAP:Category>
<SAP:Code area="PARSER">WRONG_VALUE</SAP:Code>
<SAP:P1>SOAP:Envelope(1)SOAP:Header(1)sap:DynamicConfiguration(1)sap:Record(6)</SAP:P1>
<SAP:P2>origin, x-requested-with, accept, content-type, authorization, JSNLog-RequestId, senderId, sessionId, scope, token, referer,x-ep-user-scopes,x-ep-credit-level,x-ep-user-traits,x-ep-user-roles,x-forwarded-base,x-ep-user-id,cache-control, channelId, senderId, applicationId, DNT</SAP:P2>
<SAP:P3/>
<SAP:P4>ST: ST_XMS_MSGHDR30_DYNAMIC</SAP:P4>
<SAP:AdditionalText>An error occurred when deserializing in the simple transformation program ST_XMS_MSGHDR30_DYNAMIC</SAP:AdditionalText>
<SAP:ApplicationFaultMessage namespace=""/>
<SAP:Stack>XML tag SOAP:Envelope(1)SOAP:Header(1)sap:DynamicConfiguration(1)sap:Record(6) (or one of the attributes) has incorrect value origin, x-requested-with, accept, content-type, authorization, JSNLog-RequestId, senderId, sessionId, scope, token, referer,x-ep-user-scopes,x-ep-credit-level,x-ep-user-traits,x-ep-user-roles,x-forwarded-base,x-ep-user-id,cache-control, channelId, senderId, applicationId, DNT
An error occurred when deserializing in the simple transformation program ST_XMS_MSGHDR30_DYNAMIC
Data loss occurred when converting origin, x-requested-with, accept, content-type, authorization, JSNLog-RequestId, senderId, sessionId, scope, token, referer,x-ep-user-scopes,x-ep-credit-level,x-ep-user-traits,x-ep-user-roles,x-forwarded-base,x-ep-user-id,cache-control, channelId, senderId, applicationId, DNT
</SAP:Stack>
</SAP:Error>
</detail>
</SOAP:Fault>
</SOAP:Body>undefined</SOAP:Envelope>
[null "null"] |
|
|
|
|
|
|
|
|
|
Here you can see the highlighted part, which clearly shows you that the error is due to parsing of the SOAP message which contains a value at RECORD number "6" (in my case, it can be different for other scenarios) in DYNAMIC CONFIGURATION (received in response message from REST adapter). This error came in the Receiver ECC Proxy channel (SOAP with XI 3.0)
Solution: Refer
https://archive.sap.com/discussions/thread/1653020
It can be achieved by removing the DYNAMIC CONFIGURATION value that is causing the issue. In my case it's the 6th record in DYNAMIC CONFIGURATION. Refer below screenshot:
In the above screenshot the value of the xml tag name
"Access-Control-Allow-Headers" is exceeding 200 characters (default maximum allowable length for XI message protocol). The length of the attribute value is defined by the XI message protocol. Values can be a maximum of 200 characters long. If, for example, you assign longer values in the mapping or adapter modules then this can lead to processing errors at runtime or the values are shortened to 200 characters. This shortening can also lead to a processing error. The processing error that occurs depends on the components that access the attributes.
Refer
https://help.sap.com/saphelp_nw73/helpdata/en/48/ce299c3a8e5430e10000000a42189b/frameset.htm
Thus, either we need to edit it & make it less than 200 characters or you may delete the same if its not required at the receiver end. In my case I used the delete option by adding the
DynamicConfigurationBean in the
Module Tab of the Receiver SOAP Proxy Channel.
For more information refer:
https://help.sap.com/saphelp_nw74/helpdata/en/45/da2239feb22e98e10000000a155369/frameset.htm
Number |
Module Name |
Type |
Module Key |
1 |
AF_Modules/DynamicConfigurationBean |
Local Enterprise Bean |
DynamicConfigurationBean |
2 |
sap.com/com.sap.aii.af.soapadapter/XISOAPAdapterBean |
Local Enterprise Bean |
soap |
Parameter Name = key.5 (5 is used, as the Record count starts from 0 in DYNAMIC CONFIGURATION)
Parameter Value = <action nsuri name> = delete
http://sap.com/xi/XI/System/REST Access-Control-Allow-Headers
Once this is configured for the invalid values in Dynamic Configuration the parsing error should be removed.
Refer SAP Note: 974481 -
https://launchpad.support.sap.com/#/notes/974481 for more such parameters. You can put a length limit to the parameters as well.
Thanks
Ankit Mishra