SOAP Fault for Application errors

Hi,
I would like to know whether it is OK to raise a SOAP fault for Application or system level exceptions. For example, I'm searching for a user with an ID as request , If the ID is invalid(User is not found) is it OK to raise the SOAP Fault.
Let me know your views regarding the same.

Hi,
With the above explination , please see the below links..
http://help.sap.com/saphelp_nw04/helpdata/en/d0/d4b54020c6792ae10000000a155106/content.htm
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/7521a237-0701-0010-499b-b3285b789c0d
/people/thomas.jung3/blog/2005/01/11/publishing-abap-webservices-to-an-external-uddi-server
/people/sap.user72/blog/2005/11/17/xi-how-to-publish-wsdl-generated-from-xi-to-uddi
Alert rule for SOAP adapter
Monitoring problem in async SOAP receiver adapter
Trapping AF errors using Alert framework in XI 3.0 SP13
Alert Configuration
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/2f2a9fa2-0a01-0010-32ac-d281db722b86
SOAP Lookup - /people/bhavesh.kantilal/blog/2006/11/20/webservice-calls-from-a-user-defined-function
Regards
Chilla..
<i>Points rewarded if it is useful..</i>

Similar Messages

  • How to raise a soap fault for "business errors"

    Hi folks,
    I have a scenario.
    sync
    SOAP<->PI<->RFC
    If the update to ECC failed then the RFC response will give back an Error Code in one of the fields, another field will indicate the error description,
    I will need to raise a soap fault with this error code and description in the soap fault.
    Note , there is only Req and response in the RFC, no fault in the RFC,
    Please advice me on this.
    Thanks,
    Hank

    Hi,
    I think this could be resolved using multi-mapping.
    (RFC)Response  - (SOAP) Response
                                -(SOAP) Fault
    In the response mapping, we have RFC response as the source structure , SOAP Response and SOAP Fault as the target structures.DO the validation for ErrorCode and Error Validation in the mapping. Soap Response structure would be generated for succesful RFC response. Soap Fault structure would be generated in case of RFC response containing error code and error message.
    Hope it works.
    Regards,
    Swetha.

  • How to disable the option of Resart for application error in SXMB_moni

    Hi Experts,
    I have a scenario of JDBC to Proxy.In this we have created Fault message type to capture any error.The requirement is to disable the option of Restart in SXMB_MONI for application error generated with Fault message.We have made coding for generating application error in inbound proxy code.Looking for a quick reply.
    Thanks
    Deepak

    Hi Mayank,
    I am looking for disabling the "Application Error" generated from Fault message of inbound proxy to "Resart" using Resart button in SXMB_moni of Application system ECC.what I am referring to is how to disable u201Crestartu201D (not resend) of the messages in SXMB_MONI if they have errors.
    For example, the interface to load some entries calls a proxy which may load some messages successfully and some may result in errors. This would appear in the SXMB_MONI with application errors with restart capability. If the user restarts the message it will post the entries again which were successfully posted earlier. We would like to prevent this from happening.
    Thanks
    Deepak
    Edited by: deepak jaiswal on Mar 2, 2010 5:19 PM

  • A sample web service to return SOAP fault message for application error

    Hi,
    I need to test behavior of XI, in case of application error (using <detail> tag in soap:fault) from web service in nosoap mode.
    If any one is aware of a free web service, which can raise application soap fault message, Kindly provide the details.
    Thanks in Advance,
    Rahul..

    Hi,
    What is the URL to which you are posting the SOAP message?
    Is it?
    http://<host>:<j2ee-port>/XISOAPAdapter/MessageServlet? channel=<party>:<service>:<channel>
    If yes, then like mentioned the QOS is picked from the Sender SOAP adapter.
    But, if the URL is ,
    http://<server>:<ABAP-port>/sap/xi/engine?type=entry&version=3.0&Sender.Service=<YourService>&Interface=<YourNamespace>%5E<YourInterface> 
    Then you need to give the QOS as <b>,&QualityOfService=ExactlyOnce</b> appended to the above URL.
    More, /people/stefan.grube/blog/2006/09/21/using-the-soap-inbound-channel-of-the-integration-engine
    Regards
    Bhavesh

  • Error capturing SOAP fault for Sync Messages

    Hi
    We have a Sync interface which makes a Proxy call from ECC to PI and then PI makes Soap Sync call to Web application. We are having issues when handling Exceptions. Sender is getting misleading errors in response, even though they are application errors the proxy sender is getting error like MappingObjectNotFound.
    When debug the PI system, PI is truncating error info when it return the reponse.
    Below is the scenario of Synchronous interface:
    ECC(Proxy) -> PI(Soap Receiver Adapter) -> MasterDataApp-(Webserver)
    Below is the actual response from Webserver (Extracted via TCPGW sniffer):
    <?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
    <soapenv:Fault>
    <faultcode>soapenv:Server.userException</faultcode>
    <faultstring>*java.rmi.RemoteException: No Messages Found*</faultstring>
    <detail>
    <ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">hostname.com</ns1:hostname>
    </detail>
    </soapenv:Fault>
    </soapenv:Body>
    </soapenv:Envelope>
    But PI receives this response payload like this :
      <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  XML Validation Inbound Channel Response
      -->
      <ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">hostname.com</ns1:hostname>
    and then Sync Request mesasge fails with below error because of the unexpected response payload as shown above:
      <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Call Adapter
      -->
    - <SAP:Error SOAP:mustUnderstand="1" xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
      <SAP:Category>XIServer</SAP:Category>
      <SAP:Code area="MAPPING">NO_MAPPINGPROGRAM_FOUND</SAP:Code>
      <SAP:P1>Object ID B0CC6B27847A368AA04F4171EF6460F4 Software Component 86524CE0304911DEAE48CC6C83461631</SAP:P1>
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText />
      <SAP:Stack>Mapping program is not available in runtime cache: Object ID B0CC6B27847A368AA04F4171EF6460F4 Software Component 86524CE0304911DEAE48CC6C83461631</SAP:Stack>
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    Also in the response message see this error message:
      <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--
    XML Validation Inbound Channel Response
      -->
    - <SAP:Error SOAP:mustUnderstand="1" xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
      <SAP:Category>Application</SAP:Category>
      <SAP:Code area="UNKNOWN">APPLICATION_ERROR</SAP:Code>
      <SAP:P1 />
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText>application fault</SAP:AdditionalText>
      <SAP:ApplicationFaultMessage namespace="http://xml.apache.org/axis/">hostname</SAP:ApplicationFaultMessage>
      <SAP:Stack />
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    Please let me for any clues how to handle this error response.
    Thanks,
    laxman

    Hi Laxman,
    SOAP Adapter cannot handle fault responses. I understand your issue. You even want to send the errorneous response from the Webservice as a payload back to the sender. But because of application error from Webservice, you are getting an error in the response message (Mapping Not found). SOAP Adapter cannot handle application error (i.e you will not get the errorneous response in form of payload) . For details please read below:
    The receiver adapter expects a SOAP message as response. For synchrnous calls, a successful response should be returned with HTTP 200. In this case, the content of the SOAP body will be returned to the caller as the response payload. When some error occurs, the SOAP message may contain the SOAP fault element. In this case, when the fault detail element is not empty, its content will be returned as the fault payload in an application error message. For others, a system error message will be returned to the caller.
    HTTP/1.1 200 OK
    Content-Type: text/xml; charset="utf-8"
    <SOAP:Envelope
    xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP:Body>
    <m:GetLastTradePriceResponse xmlns:m="Some-URI">
    <Price>34.5</Price>
    </m:GetLastTradePriceResponse>
    </SOAP:Body>
    </SOAP:Envelope>
    will result in an application response message with response payload
    <m:GetLastTradePriceResponse xmlns:m="Some-URI">
    <Price>34.5</Price>
    </m:GetLastTradePriceResponse>
    HTTP/1.1 500 Internal Server Error
    Content-Type: text/xml; charset="utf-8"
    <SOAP:Envelope
    xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP:Body>
    <SOAP:Fault>
    <faultcode>SOAP:MustUnderstand</faultcode>
    <faultstring>SOAP Must Understand Error</faultstring>
    </SOAP:Fault>
    </SOAP:Body>
    </SOAP:Envelope>
    will result in a system error message.
    HTTP/1.1 500 Internal Server Error
    Content-Type: text/xml; charset="utf-8"
    <SOAP:Envelope
    xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP:Body>
    <SOAP:Fault>
    <faultcode>SOAP:Server</faultcode>
    <faultstring>Server Error</faultstring>
    <detail>
    <e:myfaultdetails xmlns:e="Some-URI">
    <message>My application didn't work</message>
    <errorcode>1001</errorcode>
    </e:myfaultdetails>
    </detail>
    </SOAP:Fault>
    </SOAP:Body>
    </SOAP:Envelope>
    will result in an application error message with fault payload
    <e:myfaultdetails xmlns:e="Some-URI">
    <message>My application didn't work</message>
    <errorcode>1001</errorcode>
    </e:myfaultdetails>
    In order to send the erroneous response as a payload to the sender, you should develop flow in below manner:
    ECC(Proxy) -> PI --> ECC(Proxy)
    In PI make a SOAP lookup. The response of the SOAP lookup will contain the response given by the WebService (it can be a vaid response or an application error in WebService). Now map this response to the proxy...In this way you can handle the application error msgs from webservice..
    I hope this helps you...
    Regards,
    Rakesh Sharma

  • EOIO not working for Application Error

    Hi,
    My scenario is: SOAP -> PI -> ECC (for processing timesheets).
    In my SOAP sender adapter I have set the Quatliy of Service as 'Exactly Once in Order' and defined the queue name in the URL.
    The queue is working fine and when I look in the SXMB_MONI in both PI and ECC I can see the queue name.
    When there is a 'System Error' on ECC, the subsequent messages are scheduled - which is correct.
    In the situation when the inbound proxy on ECC is processing a message and finds that the Payroll is already running, we raise an exception. In the SXMB_MONI of ECC you will now see the message as 'Application Error' in order to allow a manual restart of that message at a later time. However, if subsequent messages are sent to ECC, they ignore the message in 'Application Error' state and get processed. They do not go into a Scheduled state - which is what I want.
    Is there any way to ensure the messages go into a Scheduled state for a message that has an 'Application Error'. Or the other option I was thinking was to raise a 'System Error' within my Inbound proxy on ECC rather than an 'Application Error'. Is this possible?
    Thanks,
    Krishneel

    Hi Krishneel,
    this is unusual behavior. If you raise error and message gets the Application error, do you still see it in queue or it's removed from queue?
    Martin

  • CCMS for application errors in SAP R/3

    Hi Experts,
    I am working on File->ABAP Proxy scenario.
    My client has configured CCMS in solution manager system to receive alerts from PI as well as from SAP ECC system.
    One thing which is not clear to me is how to capture the application errors raised in ABAP proxy (server proxy) in CCMS. I am not clear on below points.
    1. Is it required to trigger SALERT_CREATE explicitly in ABAP proxy to trigger alerts in case of application errors?
    2. Where to define the alerts using ALRTCATDEF? Is it in SAP ECC or in SAP PI?
    3. Do I need to create alert rule in PI RWB for alerts related to application errors occurring in SAP ECC?
    I have read the blogs and referred the threads related to CCMS but I could not get much on above mentioned points. Could you please help me in this regard?
    Thanks a lot.
    Regards,
    Prasad

    CCMS alerting is different than the alerting available with SAP PI. Therefore when you already have a CCMS setup, there is no need for ALRTCATDEF, PI RWB setup.
    Regards,
    Prateek

  • Incoming messages - E-Mail Alerts for Application Errors?

    Dear C4C Community,
    We are integrating C4C and our SAP ERP. Sometimes the business partner replication is not working due to unmapped entries or due to other reasons. Currently we are checking the web service message monitor manually for incoming message with status "Application Error".
    Is there any way to setup an automatic e-mail alert when new incoming message errors appear? I do not like the manual monitoring process.
    Looking forward to your feedback.
    Best Regards
    Matthias

    Hello Matthias,
    Try checking the below questions in your project scope.
    Hope this should help you achieve what you want.
    Regards,
    Chandan

  • Office 2011 - Can't Find Visual Basic for Applications Error

    I have recently installed Microsoft Office 2011 on my Mac and have been using the Dev tools to program macros in VB. Suddenly, it stopped loading it when I try to enter the VB workspace and throws an error stating that "Can't Find Visual Basic for Applications." The error tries to be helpful, but in a typical Microsoft way is just plain vague. Any thoughts?

    I have the same problem, but have no odd characters in my hard disc name.
    I am pteey annoyed as I bought Office 2011 pre-loaded on my new Macbook, but it did not have the VBA (which is why I wanted Offfcie rather than the free OpenOffice in the first place).
    VBA is supposedly on the Office distrbution CD, so I went through the loop of re-installing Office 2011 with the VBA option ticked. No VBA apperared. After 3 times trying the install, still no VBA. The macbook has the VBA framework file installed in the applications folder, but the clicking the editor tab in the developer tab of Excel just brings up an error massage sayng VBA is not installed.
    Not clear where to go from here. Try the Genious Bar at the local mac store?

  • Two Alerts for one scenario: Application Error and No mapping found

    Hello,
    we have a synchronous scenario here embedded in an BPM.
    The last send step step is sync. The receiver is a web service (SOAP adapter) which sends back a response.
    Problem with the response from the service:
    First test: error entries in SXMB_MONI and in RWB
    RWB only shows message "No mapping found".
    SXMB_MONI shows more:
    1 entry for send step (status: log version)
    1 entry for APPLICATION ERROR for response
    1 entry for NO_MAPPING_PROGRAMM_FOUND for response
    APPLICATION ERROR:
    We have changed to trace level 3 now and there are some messages:
    level 3 message type T: Unknown channel type: SOAP
    Don´t know if this matters, because the channel is the sender channel.
    NO_MAPPING_PROGRAMM_FOUND:
    We have checked the whole implementation.
    It is completed w/o anything missing. the required mapping is available.
    No left change list entries to be activated.
    Error text:
    The Interface-Mapping http://xxx.com/xi/global GetDocIDsReq_nach_GetDocIDsResp is not available in runtime cache
    We made more than one full cache refresh but w/o any effect.
    We checked: There are no locks left!
    Does anybody here have experience with this problem or has more ideas what to do?
    Best regards
    Dirk
    Message was edited by:
            Dirk Meinhard

    Hello Dirk,
    We figured out that if you change your message mapping you also have to refresh and save your Interface Mapping.
    To ensure that your messages are equal with your Interfaces and the Message Types you should test the Interface Mapping by using integration Builder.
    If this works you have to check your BPM.
    By using BPM we figured out that if there is a fault in a BPM version the engine will not use this new version.
    To figure out which BPM version is used you have to open the
    Process Monitor à select the process and display the graphic à navigate to EXTRAS and select Workflow Builder. There you will see which BPM is really used. Maybe this is an old one.
    Hope this will show you where the problem is.
    Daniel

  • SOAP Fault Problem for WAS 6.20 System

    Hi,
    We are exposing some RFC enabled ABAP function modules as web services in a WAS 6.20 system.
    We are trying to have all consumers of our web services use the SOAP faults to handle errors.
    It works great when we raise exceptions from the function module.
    However, we are having an issue when an ABAP dump occurs.  It sets the SOAP fault properly,
    but the XML return has extra data at the end that is causing our .NET developers problems when
    trying to handle the SOAP fault.
    Here is the Original(raw) XML:
    <?xml version="1.0"?>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Body>
    <SOAP-ENV:Fault>
    <faultcode> SOAP-ENV:Client </faultcode>
    <faultstring> Internal Server Error </faultstring>
    <detail>
    <rfc:Error xmlns:rfc="urn:sap-com:document:sap:soap:functions">
    <type> RABAX_STATE </type>
    <message> Divide by 0 (type 1). </message>
    </rfc:Error>
    </detail>
    </SOAP-ENV:Fault>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope> 
    sword" value="" size="8"/>
    </td>
    <tr>
    <td> Language:</td>
    <td>
    <selectname="sap-language" class="pulldown">
    <optionvalue="EN"> English</option>
    <option value="DE">Deutsch</option>
    </select>
    </table>
    <input type="submit"value="Anmeldung">
    </form>
    </body>
    </html>
    The HTML data at the end is causing the problems for our .NET guys.
    We have a 6.40 system in development for roll out sometime next year and we don't have this
    problem on that system.  However, since we are exposing web services on our 6.20 system, we'd
    like to get our standards in place now, so that our consumers won't have to change after
    the upgrade.
    Any information on how to turn off this extra data on a 6.20 system would be appreciated.
    Thanks,
    Jeff

    Hi Andreas,
    SOAP 1.2 is not supported, neither in WebAS 6.20 nor in 6.40 as far as I know support is not planed even for next magor release...
    The only what I can propose you is to create an OSS and check what shall SAP answer you,
    or to downport your applicaiton.
    Regards, Angel

  • Error on SOAP Receiver for Axis

    Hi all, 
    Is there anybody to help for solution?
    Thanks.
    Error on SOAP Receiver for axis
    Error Message
    <SAP:Category>XIAdapterFramework</SAP:Category>
      <SAP:Code area="MESSAGE">GENERAL</SAP:Code>
      <SAP:P1 />
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText>com.sap.engine.interfaces.messaging.api.exception.MessagingException: javax.ejb.EJBException: Exception in getMethodReady() for stateless bean sap.com/com.sap.aii.axis.appxml|com.sap.aii.adapter.axis.ejb.jarxml|AFAdapterBean; nested exception is: com.sap.engine.services.ejb3.util.pool.PoolException: javax.ejb.EJBException: Exception raised from invocation of public void com.sap.aii.adapter.axis.modules.AFAdapterBean.ejbCreate() throws javax.ejb.CreateException method on bean instance com.sap.aii.adapter.axis.modules.AFAdapterBean@3ff5ea5d for bean sap.com/com.sap.aii.axis.appxml|com.sap.aii.adapter.axis.ejb.jarxml|AFAdapterBean; nested exception is: javax.ejb.CreateException: java.lang.NoClassDefFoundError: org/apache/axis/types/URI$MalformedURIException</SAP:AdditionalText>
      <SAP:Stack />
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>

    We deployed com.sap.aii.af.axisproviderlib.sda to use SOAP for axis.
    We sent data from SAP to Axis, error below ocured?
    What must we do to solve problem?
    Thanks.
    Error
    <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
      <SAP:Category>XIAdapterFramework</SAP:Category>
      <SAP:Code area="MESSAGE">GENERAL</SAP:Code>
      <SAP:P1 />
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText>com.sap.engine.interfaces.messaging.api.exception.MessagingException: org.apache.axis.ConfigurationException: handler is not instantiated org.apache.axis.ConfigurationException: handler is not instantiated at com.sap.aii.adapter.axis.modules.HandlerCore.process(HandlerCore.java:73) at com.sap.aii.adapter.axis.modules.HandlerBean.process(HandlerBean.java:75) at sun.reflect.GeneratedMethodAccessor360_10000.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:43) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:71) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:38) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:22) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:189) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:21) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:133) at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164) at $Proxy2634_10000.process(Unknown Source) at com.sap.aii.af.app.mp.ejb.ModuleProcessorBean.process(ModuleProcessorBean.java:275) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:43) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:71) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:38) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:22) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:189) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:21) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:133) at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164) at $Proxy1431_10000.process(Unknown Source) at com.sap.aii.af.app.listener.AFWListenerBean.onMessage(AFWListenerBean.java:332) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:43) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:71) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:38) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:22) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:189) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:21) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:16) at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:177) at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:133) at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:164) at $Proxy1479_10000.onMessage(Unknown Source) at com.sap.engine.messaging.impl.spi.ServicesImpl.deliver(ServicesImpl.java:314) at com.sap.aii.adapter.xi.ms.XIEventHandler.onDeliver(XIEventHandler.java:1000) at com.sap.engine.messaging.impl.core.queue.consumer.RequestConsumer.onMessage(RequestConsumer.java:73) at com.sap.engine.messaging.impl.core.queue.Queue.run(Queue.java:921) at com.sap.engine.messaging.runtime.MSWorkWrapper.run(MSWorkWrapper.java:56) at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37) at java.security.AccessController.doPrivileged(Native Method) at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:152) at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:247)</SAP:AdditionalText>
      <SAP:Stack />
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>

  • Handling of SOAP Faults in SOAP Clients consuming PI Web services

    Hi there,
    the following is in regards to SOAP fault error handling in a SOAP client that consumes a Web Service published by PI.
    I have been reading a number of threads and blogs in regards to this topic and I am still left with some open questions which I hope to get some final answersclarifications through this thread.
    In particular the blogs
    Handling Web Service SOAP Fault Responses in SAP NetWeaver XI      - Handling Web Service SOAP Fault Responses in SAP NetWeaver XI
    XI: Propagation of meaningful error information to SOAP Client     - XI: Propagation of meaningful error information to SOAP Client
    have caused by attention.
    Both of these threads are realating to the Fault Message type one can use to return errors back to a SOAP Client (.Net, Java, etc.).
    In our scenario we published a number of Web Services through PI that provide functionality to integrate with an R3 back-end system using inbound ABAP Proxies.
    The services are standardised and will be consumed by a number of .NetJava applications and systems. The reason for the use of ABAP proxies is the customer specific application logic that is executed in the backend system. The Web services are synchronous and don't use ccBPM in the middle. Transformations are performed in PI combined with various lookups to set default values before the message is passed into the ABAP Framework of the R3 back-end system. The lookups are done against the R3 back-end system using the PI RFC Lookup feature.
    The inbound proxies currently return application errors as part of the response message back to the SOAP client. For more critical errors we introduced the use of Fault message types as the method to return the information back to the SOAP Client. This is all working satisfactory.
    The questions I have are as follows.
    1. When an error occurs at the IE level (e.g. mapping error), ABAP Proxy framework level (e.g. conversion from XML to ABAP format) or Adapter Framework level (Adapter releated error) a different SOAP fault message structure is returned to the SOAP Client than the one    used for the application errors. The SOAP fault message structure used in this case is the standard SOAP fault used by PI to return system errors back to the caller. For those SOAP fault messages there is no payload generated that could be mapped to the SOAP fault structure used for the application errors. This would be preferrable as there would be only one Fault message structure used for both inbound ABAP proxy generated fault messages and PI generated fault messages.
    Also the error messages generated by PI can be quite cryptic and difficult to interpret at the client end and could be filtered     ranslated during message mapping if the payload of the PI generated SOAP fault message could be accessed in a message mapping.
    Point 3 of the above thread 2759 indicates that this would be possible but doesn't outline how. Could somebody please clarify this for me as I don't believe that this is really possible ???.
    My idea instead was to use the PI SOAP fault message structure to also return application errors. Therefore I would create a Fault message type that matches the PI SOAP fault structure. This would enable the SOAP Client to handle only one SOAP Fault error structure. Would that be something to look into instead ?????.
    2. We have been looking at using the integrated WEB AS SOAP adapter instead of using the AF Sender SOAP adapter. While playing with this we encountered differences in the content returned through the SOAP fault generated by PI. A sample is below. Shouldn't the content of these SOAP faults be the same if the error that caused it is the same. Also the SOAP fault returned by the IE SOAP adapter is much more    useful in this particular case. Both errors below are the same, a conversion error from XML to ABAP took place in the inbound ABAP proxy framework of the back-end system.
    SOAP fault returned when using SOAP Sender adapter of AF
    <!see the documentation>
    <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
       <SOAP:Body>
          <SOAP:Fault>
             <faultcode>SOAP:Server</faultcode>
             <faultstring>Server Error</faultstring>
             <detail>
                <s:SystemError xmlns:s="http://sap.com/xi/WebService/xi2.0">
                   <context>XIAdapter</context>
                   <code>ADAPTER.JAVA_EXCEPTION</code>
                   <text>com.sap.aii.af.ra.ms.api.DeliveryException: XIProxy:PARSE_APPLICATION_DATA:
         at com.sap.aii.adapter.xi.ms.XIEventHandler.onTransmit(XIEventHandler.java:455)
         at com.sap.aii.af.ra.ms.impl.core.queue.consumer.CallConsumer.onMessage(CallConsumer.java:134)
         at com.sap.aii.af.ra.ms.impl.core.queue.Queue.run(Queue.java:916)
         at com.sap.aii.af.ra.ms.runtime.MSWorkWrapper.run(MSWorkWrapper.java:56)
         at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)
         at java.security.AccessController.doPrivileged(Native Method)
         at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:102)
         at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:172)</text>
                </s:SystemError>
             </detail>
          </SOAP:Fault>
       </SOAP:Body>
    </SOAP:Envelope>
    SOAP fault using integrated SOAP adapter of PI IE
    <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
       <SOAP:Body>
          <SOAP:Fault>
             <faultcode>SOAP:Server</faultcode>
             <faultstring>System Error</faultstring>
             <detail>
                <s:SystemError xmlns:s="http://sap.com/xi/WebService/xi2.0">
                   <context/>
                   <code>ABAP.PARSE_APPLICATION_DATA</code>
                   <text>Error during XML => ABAP conversion (Request Message; error ID: CX_ST_DESERIALIZATION_ERROR; (/1SAI/TXSBE20FF604BAFEF8D990A XML Bytepos.: 564  XML Path: ns1:CreatePORequest(1)POHEADER(2)COMP_CODE(1) Error Text: Data loss occurred when converting ############################## Kernel ErrorId: CONVT_DATA_LOSS))</text>
                </s:SystemError>
             </detail>
          </SOAP:Fault>
       </SOAP:Body>
    </SOAP:Envelope>
    I have been reading threads for hours without being able to find one that answers questions 1 or provides a blog that outlines the approach one should take for error handling in SOAP clients that consume PI Web Services (and covers both PISystem generated faults and faults raised in Proxies).
    There may already be a blog or thread and I just missed it.
    Any comments are welcome.
    Thanks. Dieter

    Hi Dieter,
    As Bhavesh already mentioned fault messages are used for application errors. The same is described in SAP XI help:
    http://help.sap.com/saphelp_nw04/helpdata/en/dd/b7623c6369f454e10000000a114084/frameset.htm
    In case of system error (e.g. field length too long in proxy call or error in XI/PI mapping) there seems to be no standard way of handling it and propagating the response to the consumer of webservice.
    Each system error is not recognized by SOAP adapter and SOAP adapter exception is raised.
    The only bizzare solution that I can see is developing an adapter module and transport wrong message to standard fault message before delivering it to adapter engine:
    http://help.sap.com/saphelp_nw04/helpdata/en/a4/f13341771b4c0de10000000a1550b0/frameset.htm
    Kind regards,
    Wojciech
    btw nice thread

  • Catch soap faults

    I have the following scenario: SAP ABAP proxy --> XI --> IIS web service.  The IIS web service is not in my hand.
    At some request the server has internal server errors. In that case we get SOAP faults from the web service. Now we have the situation that such SOAP faults causes XI mapping errors.  But this is not good. I would like to transfer such faults as application faults to the calling ABAP proxy. But I don't know how I can catch these SOAP faults.
    Here is the situation in detail.
    The response from the IIS web service:
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
         <soap:Body>
              <soap:Fault>
                   <faultcode>soap:Server</faultcode>
                   <faultstring>error description </faultstring>
                   <faultactor>ws user account</faultactor>
                   <detail>
                        <ServerExceptions>bla bla bla</ServerExceptions>
                   </detail>
              </soap:Fault>
         </soap:Body>
    </soap:Envelope>
    In XI monitoring I have 3 entries: my call and two error messages.
    First error message payload:
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <!--  Aufruf eines Adapters  -->
      <ServerExceptions>blab la bla</ServerExceptions>
    Error information:
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <!--  Mapping der Response-Message  -->
    <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
      <SAP:Category>Application</SAP:Category>
      <SAP:Code area="UNKNOWN">APPLICATION_ERROR</SAP:Code>
      <SAP:P1 />
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText>application fault</SAP:AdditionalText>
      <SAP:ApplicationFaultMessage namespace="">ServerExceptions</SAP:ApplicationFaultMessage>
      <SAP:Stack />
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    The second error message has the same payload but a different error part:
    <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    <!--  Mapping der Response-Message -->
    <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
      <SAP:Category>XIServer</SAP:Category>
      <SAP:Code area="MAPPING">NO_MAPPINGPROGRAM_FOUND</SAP:Code>
      <SAP:P1>"my mapping program"</SAP:P1>
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText />
      <SAP:ApplicationFaultMessage namespace="" />
      <SAP:Stack>Das Interface-Mapping "my mapping program" ist nicht im Laufzeit-Cache vorhanden.</SAP:Stack>
      <SAP:Retry>N</SAP:Retry>
      </SAP:Error>
    Is there any opportunity to catch such SOAP faults or server errors? I would like to map them in the xi fault structure. So the calling ABAP proxy gets the error message. Now I get a XI error and always a mail because I use the alert framework. But this is no XI error and I don't want to get such error messages.

    Hi Smitha.
    Yes. I have a WSDL from the external web service but the WSDL doesn't contain any fault definition. But I know the fault structure because I catch such an exception with XML Spy SOAP Proxy. The Exception looks like in my first post. 
    The problem is that I don't get this exception in my hands. When I use the Message Display Tool of the Runtime Workbench I can only see the <ServerExceptions> node of the exception in my payload. So I only can deal with this. So I have  specified a xsd for this.
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
         <xs:element name="ServerExceptions">
              <xs:simpleType>
                   <xs:restriction base="xs:string" />
              </xs:simpleType>
         </xs:element>
    </xs:schema>
    I load this as external definition and add this to my interface as fault type. After that I'm able to catch the exception and I get the content of this node and map this to the fault message of my outbound interface. Unfortunately the content of this node is useless. I need the values of the other nodes.
    O course I tried your proposal and add the complete fault type definition to the given wsdl and after that I re-import this new wsdl. But that doesn't change the behaviour described above.
    The key point is that I don't get the whole exception.

  • Application Error message takes more time in ECC

    Hi All,
    I am working soap to proxy synchronous scenario. when call is success i am able to get the response immediately from ECC within 2 to 3s.
    when there is any application error in ECC it is taking more time to send back the fault message to SAP PI. more than 1 min(65s).
    i tested the same payload in the sproxy in ecc. for application error it gives the fault message within 2s.
    but when it comes to end to end testing ECC is taking more time to send the fault message to PI.
    Please let me know if you have any suggestion to overcome this issue.
    Regards,
    Muni

    Abap team debugged and found out that there was an issue with RFC in ECC system.
    RFC connection was not working. it was causing the flow to wait for 1 mins. Basis fixed the issue to make RFC working. now interface works without connection time out.

Maybe you are looking for

  • How to pass internal table to form routine..?

    Gurus, I am creating a custom Function module in which i have declared few perform statements and passing internal table to it..but when i declare the form it gives me error that the internal table is unknown...Can u please suggest me what am i doing

  • Error when launching .rdp file from RDWebAccess with RD Gateway "NtlmWebAuthException: 2" on Mac Version 8.0.8 (Build 25010)

    When launching a .rdp file that has been download from an rdwebaccess session, the following error is generated "NtlmWebAuthException: 2". I have tested this on the Mac Microsoft Remote Desktop client version  8.0.8 (Build 25010). The following is th

  • Table overflow, only header row fits on page, avoid header

    Hello together, I encountered the following problem with adobe forms. The form consists of a table with a header row and (for sure) a data part. The table is encapsulated on a subform. If the table doesn't fit on one page, it breaks correctly to the

  • Opening a PDF file without downloading first

    I have version 9.5.5 on my Apple desktop & my laptop. When I open a PDF document on my laptop, a window opens and asks if I want to save or open on screen. I like this feature, however on my desktop I do not get the choice, it goes to download only a

  • FACT table Mapping

    I could not find a clear documentation on how to create a mapping to load CUBE after creating dimensions. I am using 10.1.0.2 version. I have two dimensions and one FACT table DIM1 D1_sk other attributes DIM2 D2_SK other attributes FACT D1_sk D2_sk m