Skip to Content
author's profile photo Former Member
Former Member

SOAPAction problem with asynchronous web service

Hi,

i've implemented the following scenario:

SENDER SYSTEM: B1.2007

SENDER OBJECT: B1.2007 custom object (with the same schema of B1.2007 Sales Invoices)

RECEIVER SYSTEM: W.AnySystem

RECEIVER OBJECT: W.AnySystem custom object (with own schema)

When i create an invoices in BOne, the creation is triggered by the Event Sender and sent correctly to B1i.

Bi1 make a transformation through the BIU and send the message to the receiver system.

The receiver system answer always with an error related to the SOAPAction. I've sniffed the network for check the message in outbound from B1i and i've verified that the SOAPAction is empty.

This is the message transmitted from B1i to Web Service:

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

POST //WSDoc/GestDoc.asmx?op=PECARB HTTP/1.1

content-type: text/xml

User-Agent: Java/1.5.0_14

Host: 192.168.0.118

*Accept: text/html, image/gif, image/jpeg, *; q=.2, /; q=.2*

Connection: keep-alive

Content-Length: 20356

http://schemas.xmlsoap.org/soap/envelope/">

<SOAP-ENV:Body>

<BOM xmlns="">

<BO>

<AdmInfo>

.........

Where i have to define the specific SOAPAction for the message that i send to the W.AnySystem?

The SOAPAction have to be defined into the landscape creation, into the BIU or in some other point?

Thanks a lot

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

3 Answers

  • author's profile photo Former Member
    Former Member
    Posted on Apr 02, 2011 at 10:17 PM

    Hi,

    I have exactly the same problem EXCEPT it is from B1iC and not B1iSN, i.e the WS call is made from com.sap.B1i.vplatform.runtime/OUT_WS_out.bfd and already contains the same SOAPAction declaration:

    <call name="WSOut" nslist="xmlns:vpf=&apos;urn:com.sap.b1i.vplatform:entity&apos;">
    <description>handover receiver message via Web Service</description>
    <class bfxp_payload="/vpf:Msg/vpf:Body/vpf:Payload[./@Role=&apos;R&apos;]/*" bfxp_classname="#!xcl.port_" passThrough="true">
    <propertylist>
    <property bfxp_value="#WSOutboundCall" name="portID" purpose="Specifies the sec. I/O-Port (Xs)"></property>
    <property name="par" bfxp_value="/vpf:Msg/vpf:Header/vpf:Outbound/@b1im_queryparam"></property>
    <property name="SOAPAction" bfxp_value="/vpf:Msg/vpf:Header/vpf:Outbound/@soapaction"></property>
    <property name="bpm.pltype" bfxp_value="#xml"></property>
    </propertylist>
    </class>
    </call>

    The error in the IPO-Log is:

                    ... 10 more
    Caused by: com.sap.b1i.xcellerator.XcelleratorException: XCE107 A SOAP-Fault was returned by the called party:
    HTTP-code: 500;
    HTTP-message: Internal Server Error;
    SOAP faultcode: soap:Client;
    SOAP faultstring: Server did not recognize the value of HTTP Header SOAPAction: .
                    at com.sap.b1i.xcl_wsan.WSANAdapter.throwSoapFault(WSANAdapter.java:375)
                    at com.sap.b1i.xcl_wsan.WSANAdapter.put(WSANAdapter.java:312)
                    at com.sap.b1i.xcellerator.IPOStepInstance.handleIO(IPOStepInstance.java:1627)
                    at com.sap.b1i.xcellerator.IPOStepInstance.performSecIO(IPOStepInstance.java:861)
                    ... 29 more

    The inbound message to the atom from the ExecDetails has the SOAPAction set correctly:

    bf-uri bizflow:/com.sap.b1i.vplatform.runtime/OUT_WS/OUT_WS_out.bfd/WSOut[call]/0006b/-_(0)  
     exec-time   
      In-Msg
     
     size 20384 bytes  
      Dump of Atom Inbound-Message
     
     
     Properties-passed-to-Atom
     
     (BFProperties:
    -P SOAPAction := SAPSalesOrder
    +P bpc.currflow := /com.sap.b1i.vplatform.runtime/OUT_WS/OUT_WS_out.bfd
    +P bpc.dataset := com.sap.b1i.vplatform.runtime
    +P bpc.group := OUT_WS
    +P bpc.initiator := [HTTP]2044639498/B1iadmin
    +P bpc.jobid := 11040118361747300735AC1400C641B6
    +P bpc.pltype := xml
    +P bpc.propertylist := SOAPAction=SAPSalesOrder,bpm.pltype=xml,par=,portID=WSOutboundCall
    +P bpc.vers.bpc := 0.31.1 (built 201102010944)
    +P bpc.vers.cos := 0.13.2 (built 201102010944)
    +P bpc.vers.dbl := 0.18.1 (built 201102010944)
    +P bpc.vers.utl := 0.25.0 (built 201102010944)
    -P bpm.pltype := xml
    -P par :=
    -P portID := WSOutboundCall
    +P xcl.instance := vP.0010000100.out
    +P xcl.ipocall := com.sap.b1i.xcl_srvc.IPOCall
    +P xcl.ipostep := /vP.0010000100.out/com.sap.b1i.vplatform.runtime/OUT_WS/OUT_WS.ipo/proc
    +P xcl.port := com.sap.b1i.xcellerator.XsPort
    +P xcl.tid := 11040118361747300735AC1400C641B6
    +P xcl.version := 0.37.7 (built 201102010944)
    +P xcm.msgid := 11040118361747300685AC1400C69E04
    +P xcm.usrmsgid := 11040117045352001778AC1400C64052.3_1
    BFProperties)

    I have tried several versions, the same problem exists in B1iC for B1 8.8 PL17 as well as B1iC in 8.81 PL02 & PL03.

    Any ideas?

    Gary.

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Jul 22, 2011 at 06:16 AM

    Bump,

    I have just upgraded to 8.81 PL06 and the problem with a missing SOAPAction in the header to a Windows .NET service is still there:

    com.sap.b1i.xcellerator.Xce...com.sap.b1i.xcellerator.XcelleratorException: XCE001 Nested exception:
    com.sap.b1i.bizprocessor.BizProcException: 
    BPE001 Nested exception: com.sap.b1i.xcellerator.XcelleratorException: 
    XCE001 Nested exception: com.sap.b1i.xcellerator.XcelleratorException: 
    XCE107 A SOAP-Fault was returned by the called party: 
    HTTP-code: 500; HTTP-message: Internal Server Error; SOAP faultcode: 
    soap:Client; SOAP faultstring: Server did not recognize the value of HTTP Header SOAPAction: 

    As soon as I modify OUT_WS.ipo from :

    <auxOutPropList>
    <property ioxp_value="#!par_" name="*"></property>
    <property ioxp_value="#" name="SOAPAction"></property>
    </auxOutPropList>

    to

    <auxOutPropList>
    <property ioxp_value="#!par_" name="*"></property>
    <property ioxp_value="#!SOAPAction_" name="SOAPAction"></property>
    </auxOutPropList>

    it works!

    Now I know this solution is not sustainable, it gets clobbered with each upgrade, so I am looking to understand if this is a bug or an issue with the scenario.

    Here is the vBIU:

    <vBIU xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:com.sap.b1i.vplatform:entity" xsi:schemaLocation="urn:com.sap.b1i.vplatform:entity ../../com.sap.b1i.vplatform.repository/xsd/vPlatform.xsd" Id="Z.SalesOrder" SId="Z.SDE" internal="" mlogexcl="" version="" bi1fver="1.6.2">
    	<Inbound>
    		<DataRetrieval>
    			<method>Retrieval</method>
    			<adapter>DI API</adapter>
    			<type>Object</type>
    			<ruledoc/>
    		</DataRetrieval>
    		<Channel Id="INB_B1_EVNT_ASYN_EVT">
    			<type>SAP Business One</type>
    			<mode>Asynchronous</mode>
    			<trigger>B1Event</trigger>
    			<obj>17</obj>
    			<ident>B1 Event</ident>
    			<idpar>n.a.</idpar>
    			<idns/>
    		</Channel>
    	</Inbound>
    	<Outbound>
    		<Channel Id="OUT_WS">
    			<type>Web Service</type>
    			<format>ws</format>
    		</Channel>
    		<Successor Id="" Mode=""/>
    		<OUT_WS>
    			<soapaction>http://abc.com/webservices/SOInsert</soapaction>
    		</OUT_WS>
    	</Outbound>
    </vBIU>

    and the atom is:

    <xsl:stylesheet xmlns:b1e="urn:com.sap.b1i.sim:b1event" xmlns:b1ie="urn:com.sap.b1i.sim:b1ievent" xmlns:bfa="urn:com.sap.b1i.bizprocessor:bizatoms" xmlns:jdbc="urn:com.sap.b1i.adapter:jdbcadapter" xmlns:rfc="urn:sap-com:document:sap:rfc:functions" xmlns:sim="urn:com.sap.b1i.sim:entity" xmlns:utils2="com.sap.b1i.bpc_tools.Utilities" xmlns:vpf="urn:com.sap.b1i.vplatform:entity" xmlns:xci="urn:com.sap.b1i.xcellerator:intdoc" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" bfa:force="" vpf:force="" jdbc:force="" rfc:force="" b1ie:force="" b1e:force="" xci:force="" sim:force="" utils2:force="">
    	<xsl:output method="xml" encoding="UTF-8" indent="yes"/>
    	<xsl:param name="atom"/>
    	<xsl:param name="sessionid"/>
    	<xsl:variable name="msg" select="/vpf:Msg/vpf:Body/vpf:Payload[./@Role=&apos;S&apos;]"/>
    	<xsl:variable name="vpSender" select="/vpf:Msg/vpf:Header/vpf:Sender/@Id"/>
    	<xsl:variable name="vpObject" select="/vpf:Msg/vpf:Header/vpf:Sender/@ObjId"/>
    	<xsl:variable name="vpReceiver" select="/vpf:Msg/vpf:Header/vpf:Receiver/@Id"/>
    	<xsl:template match="/">
    		<Msg xmlns="urn:com.sap.b1i.vplatform:entity">
    			<xsl:copy-of select="/vpf:Msg/@*"/>
    			<xsl:copy-of select="/vpf:Msg/vpf:Header"/>
    			<Body>
    				<xsl:copy-of select="/vpf:Msg/vpf:Body/*"/>
    				<Payload Role="R" id="{$atom}">
    					<xsl:call-template name="transform"/>
    				</Payload>
    			</Body>
    		</Msg>
    	</xsl:template>
    	<xsl:template name="transform">
    		<web:SOInsert xmlns:web="http://abc.com/webservices/">
    			<web:DocEntry>
    				<xsl:value-of select="$msg/BOM/BO/Documents/row/DocEntry"/>
    			</web:DocEntry>
    			<web:Company>
    				<xsl:value-of select="/vpf:Msg/vpf:Body/vpf:Payload[./@Role=&apos;T&apos;]/Event/b1e:b1events/b1e:b1event/b1e:eventsource"/>
    			</web:Company>
    		</web:SOInsert>
    	</xsl:template>
    </xsl:stylesheet>

    The W.AnySystem SLD entry is very basic and has simple destProtocol, destHost and destPath to the asmx service.

    When sucessful, the message looks like:

    ...
    - <Payload Role="R" id="atom0">
    - <web:SOInsert xmlns:web="http://abc.com/webservices/">
      <web:DocEntry>835</web:DocEntry> 
      <web:Company>ISA</web:Company> 
      </web:SOInsert>
      </Payload>
    ...

    Any ideas anyone?

    Gary.

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Aug 18, 2011 at 10:34 PM

    FYI, SAP have accepted this as a bug and commited to fix in a future patch.

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.