Handle timeout exception in rfc call

Dear SAP Experts,
I have been searching for a while and could not find a satisfactory answer to my problem.
I use SAP - CRM and call other SAP and non-SAP systems via RFC.
I need to handle all exceptions, otherwise WEB UI displays a full page exception details, which is unacceptable on a production system.
I have the following piece of code:
CALL FUNCTION FUNCTION_NAME DESTINATION DEST
    EXPORTING
      S_IMPORT              = INPUT_DATA
    IMPORTING
      S_EXPORT              = OUTPUT_DATA
    EXCEPTIONS
      SYSTEM_FAILURE        = 1  MESSAGE err_msg " catch system failure
      COMMUNICATION_FAILURE = 2  MESSAGE err_msg " catch communication errors
      OTHERS                = 99.                " catch everything else
It handles most of exceptions, however, it cannot process timeouts. Is there a way to handle timeout in ABAP RFC call? Is timeout exception uncatchable? If so is there a way around?
Can you please suggest some solution as I am running out of ideas.
Regards,
Dominik

I have found a solution. To approach this I use asynchronous function call.
TRY.
    CALL FUNCTION ZZ_TEST_TIMEOUT' DESTINATION lv_dest STARTING NEW TASK 'TIMEOUT_TASK'
    CALLING me->callback ON END OF TASK
        EXCEPTIONS
          SYSTEM_FAILURE        = 1  MESSAGE err_msg " catch system failure
          COMMUNICATION_FAILURE = 2  MESSAGE err_msg " catch communication errors
          OTHERS                = 99.                " catch everything else
        WAIT UNTIL READY EQ 'X' UP TO 55 SECONDS.
        IF READY NE 'X'.
          RAISE EXCEPTION TYPE CX_TIMEOUT.
        ELSE.
          WRITE / 'success'.
        ENDIF.
  CATCH CX_ROOT INTO OREF.
   WRITE / 'TIMEOUT EXCEPTION'.
ENDTRY.
callback sets variable READY to abap_true when data is received.
The trick is to use  UP TO 55 SECONDS. after wait, which is shorter than the server timeout. This terminates function call and gives opportunity to code your own timeout behavior.

Similar Messages

  • Get handle to "model" after RFC call

    I need to place in httpsession the "model" (structure) returned from my RFC call.
    This code does not work:
    Zemployee = wdThis.wdGetGetEmployeeController().wdGetContext().nodeOutput().nodeE_Employee().currentE_ReturnElement();
    How do you get a handle to the "model" following an adaptive rfc execute?
    Thanks,
    Kevin

    Hi kevin
    get this like
    wdContext.currentmodeloutputelement().getmethod();
    And explain you want to handle the outputelement?
    Handle the outputelement means,
    Determine the number of outputs
    Case 1:
    if single
    get,
    wdContext.current<BapiOutputElement>.get<attribute>
    Case2:
    If it is multiple rows,
    using the loop,
    for(int i=0;i<size of the outputnode;i++)
    wdContext.node<BapiInputElement>.getElementAt(i).get<Attribute>

  • SOAP-XI-RFC sync without BPM scenario: How to catch timeout exception in PI

    Hi all
    I made a scenario where a Webservice request was placed via XI to RFC in CRM.
    This is all done without BPM.
    Now the request came up that I have to handle undhandled exceptions from RFC such as Fatal Error, Dump in CRM etc in PI so that customer can get the idea of what happend in the Backend rather PI failing in the monitoring. I did that in CRM by catching all the exception and sending a common error message to PI.
    But another requirement is to handle Message Timeout of the RFC in PI for e.g. If the request goes to the RFC and due to the volume of the data, it gets Timed Out then neither PI nor CRM can handle this and it results in PI failing to catch this excpetion.
    I tried Fault message type but that does not help either.
    Can I get some expert advice.
    Regards
    Naina

    Include your Send_to_RFC step inside a Block...have a deadline branch for this and an Exception Branch....in deadline branch have control step (thro Exception)....in Exception Branch have a Mapping and a Send Step....this mapping will produce a message (define separate DT for this) having constant values (like timeout occured message)
    If you are fine with alert message...then instead of Mapping and Send step in Exception include a Control Step (thro alert)....alert message can be "timeout occured in receiving RFC response"
    Regards,
    Abhishek.

  • RFC Call Timeout

    Hello,
    Is there any possibility to configure a timeout for an RFC call using .NET Connector 3.0?
    RfcDestination.Ping() throws an RfcCommunicationException in about 6..7 seconds if the backend system is not reachable:
    LOCATION    CPIC (TCP/IP) on local host with Unicode
    ERROR       timeout occured
    TIME        Tue Apr 15 15:37:18 2014
    RELEASE     720
    COMPONENT   NI (network interface)
    VERSION     40
    RC          -5
    MODULE      nibuf.cpp
    LINE        4795
    DETAIL      NiBufIConnect: route connect '/H/xxx.xxx.xxx.xxx/H/xxx.xxx.xxx.xxx'
                timeout
    COUNTER     2
    The same exception type thrown from the same RfcDestination.Ping() can originate from another cpp file:
    LOCATION    CPIC (TCP/IP) on local host with Unicode
    ERROR       partner 'xxx.xxx.xxx.xxx:xxxx' not reached
    TIME        Fri Mar 21 15:01:36 2014
    RELEASE     720
    COMPONENT   NI (network interface)
    VERSION     40
    RC          -10
    MODULE      nixxi.cpp
    LINE        3285
    DETAIL      NiPConnect2: xxx.xxx.xxx.xxx:xxxx
    SYSTEM CALL connect
    ERRNO       10060
    ERRNO TEXT  WSAETIMEDOUT: Connection timed out
    COUNTER     2
    But in the latter case the timeout is much longer, about 30 seconds.
    Is it possible to configure timeouts?

    Hi Hynek,
    I would like to make timeouts predictable. If I set the timeout to 10 seconds I would expect that the operation would succeed or fail not later than in 10 seconds.
    Time decorator approach could be one possibility, thanks for the hint! Unfortunately, that one is not a panacea because using another thread for functional module call would not be always desirable.
    Tweaking system settings would be the option I would try to avoid because of several reasons. E.g. because my process would not have full control over the settings and another process can easily change them. Or or because my process would not have enough permissions to change the settings. But thanks for that hint as well.
    Regards,
    Michail

  • Unable to read AsynchronousSocketChannel after getting timeout exception

    i am trying to read some data on the server using a AsynchronousSocketChannel .
    I have this scenario :
    1- Call channel.read : this will print "Received"
    2- Call channel.read : this should fail due to timeout exception.
    3- Call channel.read : I am sending data in this case but I got the exception "Reading not allowed due to timeout or cancellation"
    Below is the source code
    My environment is :
    OS : Windows 7
    JDK :
    Java(TM) SE Runtime Environment (build 1.7.0-b147)
    Java HotSpot(TM) 64-Bit Server VM (build 21.0-b17, mixed mode)
    package com.qmic.asynchronous;
    import java.io.InputStream;
    import java.io.PrintWriter;
    import java.net.InetAddress;
    import java.net.InetSocketAddress;
    import java.net.Socket;
    import java.nio.ByteBuffer;
    import java.nio.channels.AsynchronousChannelGroup;
    import java.nio.channels.AsynchronousServerSocketChannel;
    import java.nio.channels.AsynchronousSocketChannel;
    import java.nio.channels.CompletionHandler;
    import java.util.concurrent.ConcurrentLinkedQueue;
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    import java.util.concurrent.Future;
    import java.util.concurrent.TimeUnit;
    public class NIOChannel {
         public static void main(String[] args) {
              try{
                   MyAsynchronousTcpServer server = new MyAsynchronousTcpServer();
                   Thread serverThread = new Thread(server);
                   serverThread.start();
                   Socket socket = new Socket(InetAddress.getByName("127.0.0.1"), 9001, InetAddress.getByName("127.0.0.1"), 9003);
                   socket.setSoTimeout(30000);
                   socket.setKeepAlive(true);
                   if (socket.isConnected()){
                        PrintWriter dos = new PrintWriter(socket.getOutputStream());
                        InputStream input = socket.getInputStream();
                        byte[] buffer = new byte[1024];
                        // Data of the first call
                        dos.print("ABCDEFGH");
                        dos.flush();
                        byte[] data = new byte[50];
                        socket.getInputStream().read(data);
                        // Print the result from server, written in handler of first read operation.
                        System.out.println("Result is:" + new String(data));
                        if (data.length > 0){
                             Thread.sleep(10000); // Wait for 10 Seconds so the second read on the server will fail.
                        // Data of the third call
                        dos.print("ABCDEFGH");
                        dos.flush();
              }catch(Exception ex){
                   ex.printStackTrace();
         class MyAsynchronousTcpServer implements Runnable{
              final int SERVER_PORT = 9001;
              final String SERVER_IP = "127.0.0.1";
              private int THREAD_POOL_SIZE = 10;
              private int DEFAULT_THREAD_POOL_SIZE = 2;
              ConcurrentLinkedQueue<ListenHandler> handlers = new ConcurrentLinkedQueue<ListenHandler>();
              boolean shutDown = false;
              public void run(){
                   //create asynchronous server-socket channel bound to the default group
                   try {
                        // Create the ChannelGroup(thread pool).
                        ExecutorService executorService = Executors.newFixedThreadPool(THREAD_POOL_SIZE);
                        AsynchronousChannelGroup group = AsynchronousChannelGroup.withCachedThreadPool(executorService, DEFAULT_THREAD_POOL_SIZE);
                        AsynchronousServerSocketChannel asynchronousServerSocketChannel =
                             AsynchronousServerSocketChannel.open(group);
                        if (asynchronousServerSocketChannel.isOpen())
                             //bind to local address
                             asynchronousServerSocketChannel.bind(new InetSocketAddress(SERVER_IP, SERVER_PORT));
                             while(!shutDown){
                                  Future<AsynchronousSocketChannel> asynchronousSocketChannelFuture =asynchronousServerSocketChannel.accept();
                                  final AsynchronousSocketChannel channel = asynchronousSocketChannelFuture.get(); // Timeout can be specified in the get() function, thread is blocked here
                                  System.out.println("New channel created successfully");
                                  // First call, should print Result of call 1 is : 10 (size of ABCDEFGH)
                                  ByteBuffer buffer1 = ByteBuffer.allocateDirect(250);
                                  channel.read(buffer1, 5, TimeUnit.SECONDS, null, new CompletionHandler<Integer, Object>() {
                                       @Override
                                       public void completed(Integer result, Object attachment) {
                                            System.out.println("Result of call 1 is :" + result);
                                            ByteBuffer response = ByteBuffer.wrap("Received".getBytes());
                                            channel.write(response);
                                       @Override
                                       public void failed(Throwable exc, Object attachment) {
                                            exc.printStackTrace();
                                  Thread.sleep(3000);
                                  // Second read, should print error InterruptedByTimeoutException
                                  ByteBuffer buffer2 = ByteBuffer.allocateDirect(250);
                                  channel.read(buffer2, 5, TimeUnit.SECONDS, null, new CompletionHandler<Integer, Object>() {
                                       @Override
                                       public void completed(Integer result, Object attachment) {
                                            System.out.println("Result of call 2 is :" + result);
                                       @Override
                                       public void failed(Throwable exc, Object attachment) {
                                            exc.printStackTrace();
                                  Thread.sleep(9000);
                                  // Second read operation was failed, no try to read again . AN EXCEPTION IS THROWN HERE : Reading not allowed due to timeout or cancellation
                                  ByteBuffer buffer3 = ByteBuffer.allocateDirect(250);
                                  channel.read(buffer3, 5, TimeUnit.SECONDS, null, new CompletionHandler<Integer, Object>() {
                                       @Override
                                       public void completed(Integer result, Object attachment) {
                                            System.out.println("Result of call 3 is :" + result);
                                       @Override
                                       public void failed(Throwable exc, Object attachment) {
                                            exc.printStackTrace();
                        else
                             System.out.println("The asynchronous server-socket channel cannot be opened!");
                   catch (Exception ex)
                        ex.printStackTrace();
                        System.err.println(ex);
         }

    I'm having the same "Unable to read the SIM card" issue. My phone is less than two months old, the unable to read SIM card issue started about a week after I purchased the phone. That was followed by a host of erratic, sporadic issues to the phone becomes unusable and the only way to temporarily fix it is to remove the battery for a few seconds.  I've gone through the factory reset with Verizon reps where I purchased the phone from as well as with a Verizon online Chat representative. In a nutshell, I got a ticket to send the phone back to Samsung in Plano, Texas to get the phone fixed, I am going to do that today because this problem is ridiculous.

  • Can't get the tables normally using RFC call to BC

    SAP Business Connector Developer.
    ->IDataUtil.getIDataArray function (can't work properly using RFC CALL)( I think it's the source of problem)
    I use the SAP Business Connector Developer(4.7) to get data from db2.
    and I create a JAVA service in th BC named writeData,
    the most important snippet shown below.
      // Get IDataCursor to manipulate pipeline
      IDataCursor idcPipeline = pipeline.getCursor();       
      // If the value is not an IData[], returns null.
      IData[] recordListIn = IDataUtil.getIDataArray( idcPipeline, "ORICONTENT" );
      idcPipeline.first( "CHECKEDDATE" );
      String checkedDate  = (String) idcPipeline.getValue();
      idcPipeline.first( "CPYCOD" );
      String cpycod= (String) idcPipeline.getValue();
       /* if ( recordListIn == null )
              errMsg += "No Input Data";
              recLen=0;
      }else{
            recLen= recordListIn.length;
      try{
         recLen= recordListIn.length;
      catch(Exception ed){
         errMsg += "\r\nExceptionIn: " + ed.getMessage();
         recLen=0;
      In BC, the variable recLen can get the record list length normally, but if i call the function in the SAP,
    the system throw an exception, the ed.getMessage() return value NULL.
      I think the problem which the rfc can't work properly is that the method IDataUtil.getIDataArray execute unnormal.
      I have set value to ORICONTENT(record list) in SAP, and it can return the record that i have set to the SAP System,
    and in the java service,  I have return another record list creating using the following spippet, It can work normally.
    com.wm.app.b2b.server.DBConnection db
            =new com.wm.app.b2b.server.JDBCConnection(driverString,userName,
                    userPwd);
              com.wm.util.Values ida= db.execSQL(selectSql);
              idcPipeline.insertAfter("OUTDATAREC", ida );
              db.close();
    I have tried some adjustments, but nothing can work.
    The reason That I use one jave service instead of standard flow services is I have to transfer data to more than two db2 servers, and I have to keep the consistency.
    Attached please find the SAP test page (using se37) and the java service code.
    May you kindly help me to solve this problem, I don't know the real reason, and which is very emergent, but i can't changed Priority(If I changed it ,the page is unuseful).
    Additional,I have added some code shown below,
    idcPipeline.first( "ORICONTENT" );
    java.lang.Object curObj = idcPipeline.getValue();
    if (curObj == null)
    errMsg +=" object is null ";
    else{
    errMsg +=" object isnt null ";
    try{
    recordListIn=(IData[])curObj;
    } catch(Exception ed){
    errMsg += " ExceptionOBj: " + ed.getMessage();
    recLen=0;
    In BC, everything is ok. but call the function in the sap, Show the following informatin:
    Object isnt null
    ExceptionOBj: com.wm.util.Table

    Hi, Mei Xie
    you mentioned 'In BC, everything is ok. but call the function in the sap, Show the following informatin: ....', I think the return value of RFC is null.
    have you tried to add a try catch around the RFC call, like following:
    try {
      IDataCursor idcPipeline = pipeline.getCursor();
    } catch (Exception ...)
    I'm not familiar with jave, only worked on C#, but I think try to catch the exception on RFC call is worth doing. Maybe it will descript some information around the problem.
    By the way, can you tell me which RFC/BAPI you are calling?
    I don't know what 'In BC, everything is ok.' mean. I have no experience on BC, only used dotnet connector. So can you explain how you use BC for me?
    thanks

  • How to handle JCO Exceptions at JCO (RFC) function call

    Hello Forum,
    I am implementing an JCO Server scenario.
    I use dynamic repositories like Example7.java from the JCO documentation.
    Example7 throws an JCO.AbapException if anything went wrong, e.g. the function is not implemented.
    How to react on this AbapException?
    The examples in SAP Help documentation only catch
    SYSTEM_FAILURE and COMMUNICATION_FAILURE.
    All other RFC modules I have seen which declare the function modules to be used by dynamic JCO repositories (like Example7.java) do not define any other Exception parameters.
    But these two are only thrown and caught when something with communication went completely wrong, e.g. RFC not found.
    But when RFC can be reached and the JCO Server is executing the Java method, an AbapException could be thrown on error. How to react on this?
    In my implementation based on the examples I always get a ABAP dump. The dump says:
    Exception named  without message text. Why that name?
    How to handle this type of exception in order to avoid the dump?
    Can anyone post an example please?
    Thanks,
    Carsten
    Edited by: Carsten Schön on Apr 15, 2008 4:22 PM
    Edited by: Carsten Schön on Apr 15, 2008 4:24 PM

    Hi Micky,
    thanks for your quick response.
    If so, to throw JCO.AbapException on JCO Server side is not correct?
    What I do is throwing the JCO.AbapException (like in the JCO Example 7).
    At the RFC call in APAB I handle both exceptions SYSTEM_FAILURE and COMMUNICATION_FAILURE like
    CALL FUNCTION 'MY_JCO_FUNCTION_MODULE'
        DESTINATION JCO_DEST
        <...>
        EXCEPTIONS
          SYSTEM_FAILURE        = 1  MESSAGE RFC_MESS
          COMMUNICATION_FAILURE = 2  MESSAGE RFC_MESS.
    This works as far something with RFC is wrong, e.g. Server can not find the function or Server not reachable.
    But the AbapException thrown by the JCO Server (Java) is not handled that way. Why?
    Sorry if this is the wrong forum but I tried posting in Netweaver integration and got no answer for 1 week and because it's ABAP related I thought the topic suites here.
    Carsten
    Edited by: Carsten Schön on Apr 15, 2008 5:10 PM

  • Handling PI 7.1 RFC Lookup Exception in Graphical Mapping

    Dear Experts,
              I would like to know the better way of handling PI 7.1 - RFC Lookup Exception in Graphical Mapping without using  BPM. Say I perform a RFC Lookup from PI 7.1 Graphical Mapping and it fails due to RFC server down. In this case I suppose the RFC exception would be returned as response to the mapping? But, am really not sure how this response (RFC Exception) could be effectively used. Please clarify.
    Thanks,
    Hussain.
    Edited by: HussainShaik on Oct 26, 2009 8:24 AM

    Hi Hussain,
    I am not sure if I understood you query completely.
    IF the RFC look up raised some exception then how this is going to impact your interface will depend your mapping (which you did in ESR)
    (the following is adopted from help.sap,com)
    If you handled exceptions  by selecting Use Exceptions checkbox in the function properties of the standard function, the mapping editor adds an additional parameter in red (the bottommost return parameter) to the standard function in the data-flow editor. If you do not assign a target field to this return parameter, ignore the RFC exceptions (the message mapping is not terminated at runtime). Otherwise the mapping runtime transfers the exception as an XML structure and it can then be evaluated in a user-defined function, for example. If there is no exception, the mapping runtime transfers an empty context.
    If you have not selected the Use Exceptions checkbox, the mapping runtime terminates the message mapping if an exception occurs during the RFC lookup.
    Is this you are looking here?
    Also check this thread and help.sap site
    Re: SAP-PI - RFC call to SAP backend system
    http://help.sap.com/saphelp_nwpi71/helpdata/en/33/1ec6ced273493a993a80c2301c03da/content.htm
    Regards
    Suraj

  • RFC call ended with "Communication Failure" exception (Function call failed; could not find the function

    Hi All,
    I am getting error while executing oDATA service from SAP Netweaver Gateway
    Error details:
    RFC call ended with "Communication Failure" exception (Function call failed; could not find the function
    I am using SAP NG 740
    Project is created in Gateway system using SEGW having Map to Datasource option used.
    in SPRO manage alias, I had seleted Local App option. Screen attached
    I had tried all troubleshooting like delete and add service and alias in "/IWFND_MAINT_SERVICE".
    but still getting same error for all service.
    Kindly advise.
    Regards
    Vivek

    Hello Vivek,
    Service builder would have also generated code for RFC Exception handling to catch exceptions raised when communication fails between your GW and BE for some reasons.
    Handling is done for 1. System Failure 2. Communication Failure & 3. Business Failure;
    Put a BP in your DPC or DP_EXT class where exception code is written to check what exactly is has caused communication failure.
    Check if that RFC is existing in that destination or not.
    For your reference  : Code would be something like this. Put BP here and check the problem.
    * Error and exception handling
    IF lv_subrc <> 0.
    * Execute the RFC exception handling process
       me->/iwbep/if_sb_dpc_comm_services~rfc_exception_handling(
         EXPORTING
           iv_subrc            = lv_subrc
           iv_exp_message_text = lv_exc_msg ).
    ENDIF.
    Go inside this method and check to get info on what has to be done to resolve issue.
    Check carefully what has gone wrong and fix it accordingly.
    No need of adding service & deleting as problem is not because of that.
    Regards,
    Ashwin

  • RFC error text: timeout during allocate / CPIC-CALL: 'ThSAPCMRCV'

    I am having this error pop up very frequently on some new SAP systems.  This will randomly happen and keep us from being able to release transports and import them in STMS.  I receive the following error:
    There was an attempt to start the transport control program tp using the local RFC interface.
    An error occurred here.
    Error code: 4
    RFC error text: timeout during allocate / CPIC-CALL: 'ThSAPCMRCV'
    - When I check the Transport Tool (STMS: import queue> check> transport tool) I get the following information:
    timeout during allocate / CPIC-CALL: 'ThSAPCMRCV' : cmRc=20 thRc=456#Time
    out during connection setup (check that partner exists
    - When checking the TP System Log I receive the same error.  The RSTPTEST report does not give any additional information.  SM21 shows a warning and an error:
    Warning:
    Communication Error, CPIC return code 020, SAP Return code 456
    Dialog Process No. 000
    Problem cl: SAP web AS problem
    Package: STSK
    Further Details:
    Module Name: thxxhead
    Line: 7488
    Error Text: 020456
    Caller: ThRecei
    Error:
    Problem cl: transaction problem
    Package: STTO
    All of these errors are only pointing to a time out.  I cannot figure out why this is happening.  I checked the TMS RFC connection in SM59 and they are fine.  I have been able to work around this issue in 2 different ways.  First, I can delete the files in the "\trans\tmp" directory on the server.  Sometimes this resolves the error.  Else I have to restart the system.
    I need to understand where this issue is coming from and how to resolve it.  It is becoming more and more frequent.  Thank you for your help!

    Hi,
    i have had similar issues during this week. After looking for a solution everywhere i found out that i didn't set up the FQDN on this system.
    Symptoms were:
    se38 > RSTPTEST timed out sometimes(not always)
    sm59 > TCP/IP connections > CALLTP_WindowsNT > test connections timed out sometimes (again, not always)
    STMS Overview > Systems: I was not always able to distribute and activate configuration from the Domain controller via Extras > Distribute and Activate Configuration (it died on the mentioned system)
    Transports failed mostly with the same error.
    The error log was somewhere deep in ST11. It could not resolve our FQDN.
    The solution, for me, was to add our FQDN to the WINDIR\System32\drivers\etc\hosts file.
    We upgraded the kernel as well (from 7.20 patch 046 to most current) but this didn't help.
    The FQDN is a concatenation of computer name and dns suffix of the network (if you have none, you can add one via rightclick on the used network adapter>ipv4>properties>Advanced>DNS tab, so in the end the host file looked like
    127.0.0.1   localhost   computer-name.ourSuffix.com
    After this line has been added, the error stopped and the transports work again.
    I hope it helps. Good luck.

  • RFC error: timeout during allocate/CPIC-CALL: 'ThSAPCMRCV'#

    Hi folks,
    We experienced this error while trying to carry out transport into the Production Server- RFC error:timeout during allocate/CPIC-CALL: 'ThSAPCMRCV'#.
    I have checked connection tests,RFC, they look fine.
    Anyone experienced this before?
    Thanks.

    hi,
    please check :
    SM59 > R/3 Connection > TMS Communication Interface  generated  --> is the connection OK ?
    also check in :
    STMS --> is the transport configured properly ?
    rgds,
    alfonsus guritno

  • How to implement Exception Handling for soap to RFC sync interface...

    Dear Experts,
    we have an interface like soap to Rfc sync, already develepment is done and moved to production. but we are getting some quatitity is greater than item then it is throwing an error below. i want to handle that exception in XI level.
    please guide i am not found any document for this type of interface.
    Please suggest what can i do for this. Please share me the screen shot for this.
    Error Log:
      <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Request Message Mapping
      -->
    - <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="RFC_ADAPTER">APPLICATION_ERROR</SAP:Code>
      <SAP:P1 />
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText />
      <SAP:ApplicationFaultMessage namespace="urn:sap-com:document:sap:rfc:functions">Z_DEPOT_DISPATCH.Exception</SAP:ApplicationFaultMessage>
      <SAP:Stack />
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    <rfc:Z_DEPOT_DISPATCH.Exception xmlns:rfc="urn:sap-com:document:sap:rfc:functions"><Name>RFC_ERROR_SYSTEM_FAILURE</Name><Text>Delivery quantity is greater than target quantity 10.000 MT</Text><Message><ID>VL</ID><Number>363</Number></Message><Attributes><V1>10.000</V1><V2>MT</V2></Attributes></rfc:Z_DEPOT_DISPATCH.Exception>
    Regards,
    Kiran Polani

    Dear All,
    This is clearly soap to rfc interface and we are using currently PI 7.0. This is a validation of BAPI, BAPI is not accepting the field of "Quantity is some value". The quatity is greater than the amount BAPI is throwing an error like "APPLICATION_ERROR". Is it possbile to validate in XI Level.
    Soap --> XI--> BAPI(Request)
    BAPI--> XI-->Soap(Response)( in this step what ever message return by bapi those error message not getting 3 rd party application).
    here by catching that error and i should throw to 3rd party application.
    is it possible to handle this or not.?
    If it is possible in Fault Mapping/Fault message type please give me the steps or document for me.
    I am new for fault mapping?
    Please help me on this.
    Regards,
    Kiran Polani

  • How to receive RFC calls exceptions

    Hi,
    My english is bad, sorry.
    I have a RFC call to access data from a NIF. In the function that performs the 'select' I have created an exception if the NIF does not exist, is called 'NO_DATA'. How I recibe this exception in Web Dynpro?
    Thanks,
    Regards,
    Rubén Gutiérrez.

    Hi,
    In your remote enabled function module, under Tables tab you can
    add a table type attribute which can hold the return messages.
    ET_Return like bapiret2
    In webdynpro loop through the RFM return message node and print the messages.
    Sample Code:
    for(int i=0;i<wdcontext.nodereturn.size();i++)
      String message = wdcontext.nodereturnElement.getAttributeValue("Message");
      if ("S".equals(wdcontext.nodereturnElement.getAttributeValue("S")))
       msgManager.reportSuccess(message);
      else if("E".equals(wdcontext.nodereturnElement.getAttributeValue("E")))
       msgManager.reportException(message,false);
       errorRaised = false;
      else if("W".equals(wdcontext.nodereturnElement.getAttributeValue("W")))
       msgManager.reportWarning(message);
    Regards,
    Bala Baskaran.S

  • It is possible to get a response of a asynchronous RFC call thru wait loop

    Hi Experts,
    The requirement is that i queue up all the requests from a web services ( One queue per plant for example) which i set in the HTTP sender URL ( i mean the queue name ). and i am posting the records thru a RFC call.
    1. Let the RFC call be synchronous and in case the R/3 system is done.. Will the XI queue keep the Call and keep on retrying it till the R/3 system is up.
    2. Otherwise if the RFC call be asynchronous, is it possible to introduce a wait loop in BPM to listen to the RFC till i get some response ( i think this is not possible).
    Need your suggestion on the same...
    The requirement demands that no single request from the web service should be lost.. in case of failure of R/3 they should be queued up and re tried.. Forget about the error because of exception in RFC this will be taken care manually..
    Thanks for your response in advance.

    Hi Rajesh,
    you can queue and restart only asynchronous messages. I think you can build a Business Process, where you repeat sending a message til you have success or maximum number of tries is reached. But no good idea, coz you will get timeout at HTTP sender. Aynchronous messages dont have a response.
    May be, XI can solve your task in the standard: In transaction SMQR you can just configure what you describe. All asynchronous messages will be queued and restartet in case of receiver not reachable. You can configure no of retries and intervall between.
    Regards,
    Udo

  • STMS distribution error - timeout during allocate / CPIC-CALL: 'ThSAPCMRCV'

    Hello All
    i am trying to confugreu STMS but i am facing this error when i am tryin to distribute the same,
    System   EC2              Command  TMS_PM_DISTRIBUTE_PROFILE
    Client   000              Service  tp Profile Service
    User     TMSADM           Start    Online
    Date     20.10.2009       Function TMS_PS_WRITE_PROFILE_TO_DISK
    Time     17:36:23         Message  SET_CODEPAGE_FAILED
    description : Could not start transport control program tp
    detail error is as below if i press on more information
    Could not start transport control program tp
    Message no. TP608 Diagnosis
    There was an attempt to start the transport control program tp using the local RFC interface. An error occurred here.
      Error code: 4
      RFC error text: timeout during allocate / CPIC-CALL: 'ThSAPCMRCV'
    Meaning of the error codes:
      03  RFC system failure
      04  RFC communication failure
    System Response
    The function terminates. Details about the error can be found in the trace file of the Gateway Monitor (SMGW).
    some of the posts on forum suggested i should try from same domain i tried but in vain, then i updated the SAP kernel from 7.01 sp 14 to sp 55. but i am still facing the problem.
    i created this system recently using system copy based upon export image of a system (ABAP stack ) but using ABAP+Java during export process (by mistake). then we tried to build system using import (ABAP stack only i know its weird but its up and running). I assume we should have builf export imgae using ABAP method but some how due to lack of time we proceeded this way.
    The main problem i see is TP RFC . The output from prgram RSTPTEST is as below
    everythign is fine except below entries
    under RFC destination
    EFC ping - timeout during allocate / CPIC-CALL: 'ThSAPCMRCV' : cmRc=20 thRc=456#Time out during connection setup (check  that partner exists
    under TP call
    RFC link and Offline Call shws me the same error as RFC ping. and there is no output from tp version and DB connect.
    Can anybody please help me on the same.
    Mani

    Hello All,
      thanks a lot for you reply, i want to clear some point here
    - I have no other physical attached to the system, i created other system as virtual system.
    - to Sunny - i allready went through that thread and upgraded my Kernel also accordign to thread but problem still persist.
    - to Anil .. i did as u said but nothing changed after that.
    here is the log from trans log file
    4 ETW000 r3trans.exe version 6.14 (release 701 - 12.06.09 - 15:20:00).
    4 ETW000 unicode enabled version
    4 ETW000 ===============================================
    4 ETW000
    4 ETW000 date&time   : 20.10.2009 - 17:37:33
    4 ETW000 control file: <no ctrlfile>
    4 ETW000 R3trans was called as follows: r3trans.exe -d
    4 ETW000  trace at level 2 opened for a given file pointer
    4 ETW000  [dev trc     ,00000]  Tue Oct 20 17:37:37 2009                                               12584  0.012584
    4 ETW000  [dev trc     ,00000]  db_con_init called                                                        65  0.012649
    4 ETW000  [dev trc     ,00000]  create_con (con_name=R/3)                                                401  0.013050
    4 ETW000  [dbcon.c     ,00000]  *** ERROR => Invalid profile parameter dbms/type (or environment variable dbms_type) = <undef>, cannot load DB library
    4 ETW000                                                                                160  0.013210
    2EETW169 no connect possible: "connect failed with DBLI_RC_LOAD_LIB_FAILED."
    i have dbms/type = mss in profile parameters
    I am still getting the same error.
    Mani

Maybe you are looking for

  • Game center just says loading and cant play any games

    I am using a Iphone 3gs at&t but i have switched to Straight talk the phone is not Jailbroke or anything just have downloaded unlockit.co.nz for my APN settings.Everything has always worked but now for some reason when i go into Game Center it just s

  • Arrangment of a field

    Hello EveryBody. i have an attendance report (Matrix report) it is a monthly report.when i create the report,days are listed in the following order. 1 2 3 4 5 6 7 8 9 10 11 ......................................................30 instead i want it to

  • Choppy Video Performance

    Safari is working for YouTube, but on other websites that have video content it gets choppy and very slow. I tested my down load connection. It averages 2.3 Mbps. I'm using a 1 GHz G4 Powerbook with 768 MB Ram. Firefox does the same thing as Safari.

  • Is this possible in a view?

    Hi, I'm wondering if it is possible to do something using a view. It's difficult to even explain what I'm trying to do, but here goes. I have two tables. The first contains "parent" information about a record and includes keys for one to four childre

  • When I plug in my Olympus TG 820 to my iPad2 a message pops up warning me that the attached device uses too much power. Is there a way around this?

    When I plug in my Olympus TG 820 to my iPad2 a message pops up warning me that the attached device uses too much power. Is there a way around this?