on 2020 Jun 19 1:57 PM
Hello,
I have an external System with wsdl for several webservices included.
From SAP ERP there is a Service consumer proxy already used for direct communication via SOAMANAGER.
Now a CPI should be set between the systems.
Can this be done by only one IFLOW in CPI ?
Request clarification before answering.
Hi bodo.koerner,
Please find the example below:
In SoapUI I set Action as GoodAction.
I turned on trace in my iFlow to see what is the exact name of the header parameter in CPI and it came out that it's SOAPAction.
I defined it as Allowed Header(s) in Runtime Configuration:
Next in the Router I used Non-XML condition using Camel’s Simple expression:
${header.SOAPAction} = 'GoodAction'
I also created a default route that should handle all requests with unhandled SOAP Actions.
It seems to be working as expected.
Regards,
Bartosz
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi ziolkowskib,
sorry this was my Fault, the Request URL was wrong.
After changing it everything works fine.
Most important hint was the Allowed headers. SOAP Action.
Thanks for your help.
Bodo Körner
FLS
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi ziolkowskib,
Routing now reacts correctly. But now the sending process fails with:
"Error Details
org.apache.cxf.binding.soap.SoapFault: Error reading XMLStreamReader: Received event DTD, instead of START_ELEMENT or END_ELEMENT.
at [row,col {unknown-source}]: [1,14], cause: com.ctc.wstx.exc.WstxParsingException: Received event DTD, instead of START_ELEMENT or END_ELEMENT.
at [row,col {unknown-source}]: [1,14] "
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi bodo.koerner,
It seems like an error message returned by the recipient. Could you please turn on trace for your iFlow and check content of the message that is being passed to the receiver and then try to post the same using SoapUI?
Are you passing SoapAction to the receiver adapter?
Regards,
Bartosz
Hi ziolkowskib,
thanks for this good Idea. I have to do the routing not by a tag from the payload (like ObjectTypeCode)
but by the soap action in the header. Seems that this can't be read in the routing rule.
Sample Payload is:
sap-language: D
soapaction: "Call"
sap-srt_id: 20200608/133641/v1.00_final_6.40/005056A75E7D1EEAAAAF8A38260EE240
sap-passport: xyz
Connection: close
Content-Length: 2212
Content-Type: text/xml;
charset=utf-8
Accept: text/xml
Accept-Encoding: gzip
Accept-Language: de
-----: ----
Host: 192.168.XX.YX:82
User-Agent: SAP NetWeaver Application Server (1.0;740)
<?xml version="1.0" encoding="utf-16"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header>
<n0:CallerInformation xmlns:n0="http://www.sap.com/webas/712/soap/features/runtime/metering/">
<m:Type xmlns:m="http://www.sap.com/webas/712/soap/features/runtime/metering/">SA</m:Type>
<m:Company xmlns:m="http://www.sap.com/webas/712/soap/features/runtime/metering/">0000000</m:Company>
<m:Sys xmlns:m="http://www.sap.com/webas/712/soap/features/runtime/metering/">FED_810</m:Sys>
</n0:CallerInformation>
<wsa:To soap-env:mustUnderstand="1" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://192.168.XX.YY:82/VTS/WS</wsa:To>
<wsa:From xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
</wsa:From>
<wsa:ReplyTo xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
</wsa:ReplyTo>
<wsa:FaultTo xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
</wsa:FaultTo>
<wsa:Action soap-env:mustUnderstand="1" mlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
http://localhost:82/VTS/WS/Call</wsa:Action>;
<wsa:MessageID xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">uuid:005056a7-5e7d-1eea-aaaf-8a38260ec240</wsa:MessageID>
</soap-env:Header>
<soap-env:Body>
<nm:Call xmlns:nm="http://www.tourenserver.de/" xmlns:prx="urn:sap.com:proxy:FED:/1SAI/TASA963DE11D041CC65C0DB:740">
<nm:ExtID>07-00-FE_4</nm:ExtID>
<nm:VTID>-1</nm:VTID>...
Regards,
Bodo
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi bodo.koerner,
Please take a look at the standard iFlow for replicating attachments from SAP C4C to SAP S/4.
Attachment Replication from SAP Business Suite
In that iFlow a single operation Web Service (asynchronous) is routed to several Web Services in S/4 based on specific conditions.
In theory you could do the same in your case - all operations would direct to a single iFlow and Router component would route requests to corresponding endpoints.
Regards,
Bartosz
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
31 | |
9 | |
8 | |
6 | |
6 | |
6 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.