CRM_ORDER_MAINTAIN returns exception 3 NO_CHANGE_ALLOWED

Hello ABAP-friends,
We've created a report that creates service orders from a flat-file. We've used CRM_ORDER_MAINTAIN for this and it has worked fine for a while. However, now this function returns exception 3, NO_CHANGE_ALLOWED very often. The only thing that has changed, is that we've added a status to our status profile, but even if we recreate our profile, we have the same problem.
Any ideas?
Kind regards,
Jorg

Hi Jorg,
First of all since this function is a CRM realted function, I would imagine that you would receive better feedback in case you post it in the CRM related forum.
This being said, when checking the function in our CRM system, this is what I found by drilling down into the code:
Function: CRM_ORDER_CHECK_CHANGE_ALLOWED triggers the message NO_CHANGE_ALLOWED
Comments in this function:
This function module checks wether the CRM document is changeable
For example, if the document is in transfer to the execution
system already, and no feedback is yet received from the execution
system, changes will not be allowed.
This function module does not evaluate the display mode of the
interaction layer!
Further down in the code
If the document is originally in R/3, no changes are allowed in CRM
In case of a contract call-off changes are allowed. CONF_UPDATE on
header level is set in CRM_CONTRACT_CHECK_RELEASE_EC
etc.
So maybe explore/debug this function to determine exactly what the condition(s) is(are) when this message is triggered.
Kind regards,
Robert

Similar Messages

  • SLDCHECH: Function call returned exception code 3

    Hi all.
    I am trying to set up ESS and MSS on EP 6.0 SP15.
    I have configured the RFC destination, and when i do a test in RZ70 and SM59 everything is ok, but when i try running transaction SLDCHECK i get the following error:
    Use transaction SLDAPICUST if you wish to maintain the SLD server access data
    Launching the SLD GUI in a separate browser window...
    => Verify in the browser GUI that the SLD is in a healthy running state!
    Calling function LCR_LIST_BUSINESS_SYSTEMS
    Retrieving data from the SLD server...
    Function call returned exception code     3
    => Check whether the SLD is running!
    Summary: Connection to SLD does not work
    => Check SLD function and configurations
    Can anybody shead some light on this problem?
    Regards Liselotte

    Dear Liselotte,
    This will help you,
    http://help.sap.com/saphelp_nw04/helpdata/en/78/20244134a56532e10000000a1550b0/frameset.htm
    Might be Java version to the proxy settings. Try to go thru listed down various troubleshooting steps in following this weblog.
    Unable to open IR/ESR/ID ? (XI/PI/PI 7.1) [Updated for PI 7.1 support]
    Regards
    Agasthuri Doss

  • I just updated my iPad2 to ios7 and everything returned except my movies. Why??? I was trying to ADD a movie for my 5 year old and it said I needed a later iOS. Now he has ZERO movies!!!! Just great!!

    I just updated my iPad2 to ios7 and everything returned except my movies. Why??? I was trying to ADD a movie for my 5 year old and it said I needed a later iOS. Now he has ZERO movies!!!! Just great!! Can anyone help??

    For what it's worth, you posted this in 2011, and here in 2014 I am still having this same issue. Over the last two days, I have had to unlock my apple account 8 times. I didn't get any new devices. I haven't initiated a password reset. I didn't forget my password. I set up two factor authentication and have been able to do the unlocking with the key and using a code sent to one of my devices. 
    That all works.
    It's this having to unlock my account every time I go to use any of my devices. And I have many: iMac, iPad, iPad2, iPad mini, iPhone 5s, iPod touch (daughter), and my old iPhone 4 being used as an ipod touch now.  They are all synced, and all was working just fine.
    I have initiated an incident with Apple (again) but I know they are just going to suggest I change my Apple ID. It's a simple one, and one that I am sure others think is theirs. I don't want to change it. I shouldn't have to. Apple should be able to tell me who is trying to use it, or at least from where.
    Thanks for listening,
    Melissa

  • Returning Exception message

    Hi,
    I want to retrun exception message like this
    EXCEPTION
    WHEN OTHERS THEN
    v_code := SQLCODE;
    v_errm := SUBSTR(SQLERRM, 1, 64);
      RETURN(v_code||':'||v_errm);And I am getting error like this:
    Error(21,3): PLS-00372: In a procedure, RETURN statement cannot contain an expression
    If it is not possible like above, How can I return error message?Thanks

    Why don't you test it?
    Here is the way ->
    satyaki>
    satyaki>select * from v$version;
    BANNER
    Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
    PL/SQL Release 10.2.0.3.0 - Production
    CORE    10.2.0.3.0      Production
    TNS for 32-bit Windows: Version 10.2.0.3.0 - Production
    NLSRTL Version 10.2.0.3.0 - Production
    Elapsed: 00:00:00.23
    satyaki>
    satyaki>
    satyaki>select * from emp;
         EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
          9999 SATYAKI    SLS             7698 02-NOV-08      55000       3455         10
          7777 SOURAV     SLS                  14-SEP-08      45000       3400         10
          7521 WARD       SALESMAN        7698 22-FEB-81       1250        500         30
          7566 JONES      MANAGER         7839 02-APR-81       2975                    20
          7654 MARTIN     SALESMAN        7698 28-SEP-81       1250       1400         30
          7698 BLAKE      MANAGER         7839 01-MAY-81       2850                    30
          7782 CLARK      MANAGER         7839 09-JUN-81       4450                    10
          7788 SCOTT      ANALYST         7566 19-APR-87       3000                    20
          7839 KING       PRESIDENT            17-NOV-81       7000                    10
          7844 TURNER     SALESMAN        7698 08-SEP-81       1500          0         30
          7876 ADAMS      CLERK           7788 23-MAY-87       1100                    20
         EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO
          7900 JAMES      CLERK           7698 03-DEC-81        950                    30
          7902 FORD       ANALYST         7566 03-DEC-81       3000                    20
    Elapsed: 00:00:00.09
    satyaki>
    satyaki>
    satyaki>create or replace procedure test_ff(a in number,b out varchar2)
      2  is
      3    v_name varchar2(30);
      4    v_code varchar2(10);
      5    v_errm varchar2(64);
      6  begin
      7    select ename
      8    into v_name
      9    from emp
    10    where empno = a;
    11  exception
    12    when others then
    13      v_code := SQLCODE;
    14      v_errm := SUBSTR(SQLERRM, 1, 64);
    15      b := v_code||':'||v_errm;
    16      RAISE;
    17  end;
    18  /
    Elapsed: 00:00:03.08
    satyaki>
    satyaki>
    satyaki>declare
      2       v_out   varchar2(200);
      3     begin
      4       test_ff(6666,v_out);
      5       dbms_output.put_line(v_out);
      6     end;
      7  /
    declare
    ERROR at line 1:
    ORA-01403: no data found
    ORA-06512: at "SCOTT.TEST_FF", line 16
    ORA-06512: at line 4
    Elapsed: 00:00:00.33
    satyaki>
    satyaki>ed
    Wrote file afiedt.buf
      1  declare
      2       v_out   varchar2(200);
      3  begin
      4       test_ff(6666,v_out);
      5       dbms_output.put_line(v_out);
      6  exception
      7     when no_data_found then
      8       dbms_output.put_line('Outer Handler - No Data Found Exception');
      9* end;
    satyaki>/
    Outer Handler - No Data Found Exception
    Elapsed: 00:00:00.22
    satyaki>
    satyaki>Regards.
    Satyaki De.

  • FM 'FITP_CREATE_TRIP_FROM_REQUEST' returns exception

    Hello dear colleagues!
    I create trip requests for several personal numbers using fm 'FITP_CREATE_TRIP_FROM_REQUEST' in the loop.
    It works fine for the first person, but returns an exception creation_failed for the second. It looks like some internal buffers is filled during the first run and it leads to some inconsistency for the next runs.
    I changed the order of processing and it is always succesful for the first person and raises an exception for the second one.
    Has anybody faced this problem yet?
    Thanks!

    Done.
    I should call fm 'PTRA_SCREEN_MEM_CLEAR_ALL' before the next trip creation to clear buffers.

  • HELP! executing "use database" query returns exception!

    I have several databases running on my PC through port 1319 (MSSQL port) and I need to determinate which concrete I should use.
    when I put:
    SQLStatement.executeQuery("use ester");
    he returns to me:
    Error:
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]No ResultSet set was produced.
    so how to determinate it?

    hi Kirillica
    SQLStatement.executeQuery("use ester");
    return only resultset
    u have to do something like
    Resultset rs = SQLStatement.executeQuery("use ester");
    then find info from rs
    hope this help
    Regards
    Satinderjit

  • Is there any exception class which has method returning Exception id?

    Portal Runtime Error
    An exception occurred while processing a request for :
    iView : TestTableViewer.default
    Component Name : TestTableViewer.default
    The exception was logged. Inform your system administrator..
    Exception id: 05:26_15/03/06_0058_3045950
    See the details for the exception ID in the log file
    ==================================================== 
    Hi,
       I tried PortalException methods,PageException methods,PortalRuntimeException methods to get Exception id: generated at runtime.But I have not succeeded.If anybody knows it please reply.I need to find that Exception id in my project.
    Thanks in advance 
    ======================================================

    Portal Runtime Error
    An exception occurred while processing a request for :
    iView : TestTableViewer.default
    Component Name : TestTableViewer.default
    The exception was logged. Inform your system administrator..
    Exception id: 05:26_15/03/06_0058_3045950
    See the details for the exception ID in the log file
    ==================================================== 
    Hi,
       I tried PortalException methods,PageException methods,PortalRuntimeException methods to get Exception id: generated at runtime.But I have not succeeded.If anybody knows it please reply.I need to find that Exception id in my project.
    Thanks in advance 
    ======================================================

  • 'CRM_ORDER_MAINTAIN'  error messages

    HI guys,
    I am using BAPI 'CRM_ORDER_MAINTAIN' to create FS Quotation, but i want to get error message before SAVE, Bapi only return exceptions table and CV_LOG_HANDLE. How can I get details of errors generated in the process of creation?
    Thanks ind advance,
    Regards.
    Marisol
    Edited by: Marisol on May 3, 2011 4:22 PM

    Hi Marisol,
                    Not sure how you are using it - but CRM_ORDER_MAINTAIN returns exception names. Please use pattern button to get the complete code (or CONTROL + F6)
    * EXCEPTIONS
    *   ERROR_OCCURRED                = 1
    *   DOCUMENT_LOCKED               = 2
    *   NO_CHANGE_ALLOWED             = 3
    *   NO_AUTHORITY                  = 4
    *   OTHERS                        = 5
      Also, you are right BAPI would return exception table - but CRM_ORDER_MAINTAIN is just an FM and not bapi.
    Also, further I am sure you are calling CRM_ORDER_SAVE  and 'BAPI_TRANSACTION_COMMIT' after this .
      CV_LOG_HANDLE is for application log - you can use FM BAL_LOG_CREATE to create it and BAL_LOG_HDR_READ to read what it contains.
    I hope it helps.
    Thanks,
    Rohit

  • Problem in CRM_ORDER_MAINTAIN for updating qty in more than 1 line item .

    Hi abapers,
    I am using BAPI CRM_ORDER_MAINTAIN to update quantity. Its updating the quantity properly if there is single line item for a transaction .If more than 1 line item is there then its throwing an exception* "Document is being distributed - changes are not possible"*.
    Scenario:
    I have a itab  which is having 2 line items for a transaction. i run a loop pass the pass the required parameters in CRM_ORDER_MAINTAIN ,do CRM_ORDER_SAVE , BAPI_TRANSACTION_COMMIT for the 1st line item. When i run the 2nd loop, in  CRM_ORDER_MAINTAIN it gives an exception saying NO_CHANGE_ALLOWED for the same transactions 2nd line item. leaving the quantity unchanged for both the line items. What may be the problem?
    Note: We cannot say how many line items are there for an transaction. so no chance of grouping all items at a time and saving at a time.
    Regards,
    Navin

    Hi Navin,
    Why its not possible to use CRM_ORDER_SAVE only once. I think its possible. Call CRM_ORDER_MAINTAIN in loop for all the line item in transaction and after that call CRM_ORDER_SAVE once. Pls follow the below sample code.
    loop at it_item.
    call CRM_ORDER_MAINTAIN. (Here append data for all the line items and miantin the transaction).
    emdloop.
    After endloop call CRM_ORDER_SAVE. Also you can add some wait after CRM_ORDER_SAVE, In order to avoid locking issue.
    PLs let me know where you are trying to use CRM_ORDER_MAINATIAN ? In any BADI or Z program ?
    Regards,
    Amol.

  • 'CRM_ORDER_MAINTAIN'  getting errors

    HI guys,
    I am using BAPI 'CRM_ORDER_MAINTAIN' to create FS Quotation, but i want to get error message before SAVE, Bapi only return exceptions table and  CV_LOG_HANDLE. How  can I get details of errors  generated  in the process of creation?
    Thanks ind advance,
    Regards.
    Marisol
    Edited by: Marisol on May 3, 2011 4:23 PM

    Hi Darren,
    Have you use function crm_order_maintain before?
    Because it is quiet complicated that you have to prepare
    each of group tables (Orgman, Partner, Order_h, Order_I etc...) depending upon your requirement.
    For the error, can you more specific on the error.
    At which step this error occurr?
    Yes you can create Activity using this function module.
    The only thing you need to do is to fit necessary parameters (tables) to this function (which are some quiet
    trick and complex).
    Rgds,
    Gun.

  • Connection pool not re-establishing connections, throwing exception instead

    Hello,
    I've just set up a connection pool on the sun java system application server 8 for a MySQL database using the official mysql-connector/j 5.0. Everything is working great, except when the connections timeout (or i kill them all manually from the database server) and then request a page that needs to use the DataSource object, the following exception is thrown:
    Exception thrown: com.mysql.jdbc.CommunicationsException -- Communications link failure due to underlying exception:
    ** BEGIN NESTED EXCEPTION **
    java.io.EOFException
    STACKTRACE:
    java.io.EOFException
         at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1913)
         at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2304)
         at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803)
         at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
         at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
         at com.mysql.jdbc.Connection.execSQL(Connection.java:3118)
         at com.mysql.jdbc.Connection.execSQL(Connection.java:3047)
         at com.mysql.jdbc.Statement.executeQuery(Statement.java:1166)
         at com.mysql.jdbc.jdbc2.optional.StatementWrapper.executeQuery(StatementWrapper.java:705)
         at beans.MySessionBean.businessMethod(MySessionBean.java:73)
         at org.apache.jsp.index_jsp._jspService(index_jsp.java:70)
         at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:105)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
         at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:336)
         at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
         at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:251)
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:860)
         at sun.reflect.GeneratedMethodAccessor98.invoke(Unknown Source)
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:585)
         at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:249)
         at java.security.AccessController.doPrivileged(Native Method)
         at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
         at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:282)
         at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:165)
         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:257)
         at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:55)
         at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:161)
         at java.security.AccessController.doPrivileged(Native Method)
         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:263)
         at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:551)
         at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:225)
         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:173)
         at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:551)
         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
         at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:551)
         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:132)
         at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:551)
         at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:933)
         at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:185)
         at com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:653)
         at com.sun.enterprise.web.connector.grizzly.ProcessorTask.process(ProcessorTask.java:534)
         at com.sun.enterprise.web.connector.grizzly.ProcessorTask.doTask(ProcessorTask.java:403)
         at com.sun.enterprise.web.connector.grizzly.WorkerThread.run(WorkerThread.java:55)
    ** END NESTED EXCEPTION **
    Last packet sent to the server was 16 ms ago.What could be wrong?
    Thank you.

    The code is here:
        public String businessMethod() {
            //TODO implement businessMethod
            try
                InitialContext ic = new InitialContext();
                Object obj = ic.lookup("jdbc/MyDS");
                System.out.println("Object is: " + obj + " | Class is: " + obj.getClass().getName());
                DataSource ds = (DataSource)obj;
                Connection conn = ds.getConnection();
                Statement stmt = conn.createStatement();
                ResultSet rs = stmt.executeQuery("SELECT a,b FROM test");
                String ret = "";
                while(rs.next())
                    ret += rs.getString(1) + " - " + rs.getString(2) + "<br/>";
                conn.close();
                return ret;
            catch(Exception e)
                return "Exception thrown: " + e.getClass().getName() + " -- " + e.getMessage();
        }On the server, it is set up as XADataSource. I don't really have a big need for distributed transactions, but does it hurt badly to use it anyways? Could it be causing this problem?

  • RFC/BAPI Exception in PI 7.0

    Hi there,
      currently we have a scenario where the message come from middleware and pass through PI to POSDM system via RFC.
    my target structue is an BAPI .
      for some reason if the BAPI execution gets failed on POSDM system then the BAPI should return some exception back to PI system,
      can this be achived only by just adding the fault message type (ExchangeFaultData) in Inbound MI, whill this setting sufficient to get any error info from BAPI to PI via rfc, or do we need to do some exception mapping? if so can some one explain/

    Monika,
    RFM that pretends to be a BAPI has to follow a few strict rules. Some of them are :
    - BAPI is called always synchronously and are always successful i.e. errors are returned in EXPORT parameter (so  no matter if BAPI created some document/posting or not is successful!)
    - it does not return exceptions!
    so you should not advise to make use exceptions ...  otherwise it will not be a BAPI
    The one of possible solution is to wrap BAPI either using proxy or RFM and then you can propagate exceptions to SAP PI.
    /Jakub

  • How to store a class-based exception as container element?

    Hello,
    In a BO type method, there are situations where unexpected class-based exceptions can occur, I handle them with TRY ... CATCH ... ENDTRY.
    If such an error occurs, my BO type method also returns a BO type method exception using a return code (as usually).
    1) Now, my question is how can I store the exception instance in the task container ? (so that to get more information about what happened... it is an unexpected error as I said)
    Note that my question may apply to any class instance.
    2) To achieve this, I have an idea but not sure if it's realistic (maybe the question is not realistic too ). I'll create a new BO type ZOOINSTANC with string attribute containing the serialized instance, with a method to display it.
    Example how it could work, in my BO type method (it returns EXCEPTION parameter of type ZOOINSTANC):
    TRY.
      CATCH cx_root INTO lo_exc.
        DATA l_exc TYPE string.
        CALL TRANSFORMATION id
            SOURCE oo = lo_exc
            RESULT XML l_exc.
        DATA l_bor_zooinstanc TYPE swc_object.
        swc_create_object l_bor_zooinstanc 'ZOOINSTANC' ''. "no key
        swc_set_property l_bor_zooinstanc l_exc.
        swc_set_element container 'EXCEPTION' l_exc.
        exit_return 1001 '' '' '' ''.
    ENDTRY.
    One important issue is that I don't know any API to display the instance :-p
    Do you have any ideas, advices, ... ?
    Thx
    sandra

    Hi Mike, thank you for your answer, and sorry for the delay.
    > I'd rather go with the idea of returning the error details in a structured format that you can view in the container
    Yes, but that's the issue as I don't know which exceptions can be triggered, as I'd like to handle all exceptions.
    > I'd also ask why it's necessary to use BOR for this?
    When a BOR method fails, I want technical support to have all the details of the error, not only a generic error message. It's why I want to store the exception in the workitem container, and be able to display it later.
    > It's obviously your own development, so why not use classes. Subclasses of CX_BO_ERROR are recognised by workflow and you can even  bring a proper message back to the WF log. There's also some info on this in the second edition of the WF book.
    I did a test using demo workflow WS56400159 ("absence"), where I forced CX_BO_ERROR right after SWX_FORMABS_CREATE call in CL_SWF_FORMABSENC / CREATE method, but it seems that only the short text of the exception is kept.
    So, I'm a little disappointed to see that we have a great exception "tool" with class-based exceptions, but only the last text is kept in the system! That would have been great to be able to store the whole information (the attributes, and the whole bunch of cascading exceptions (PREVIOUS attribute), instead of only a simple text).
    sandra

  • Exception handling in MI service call

    Hi,
    I have consumed MI service in web dynpro java.
    I created model from local wsdl file etc and its working perfect
    But one problem is that even though its succesful execution, it returns exception.
    So I am not able to catch genuine failure cases.
    I have tried all below three exceptions:
         try{
    wdContext.createRequest_MI_UI_BSCS_GL1_OUT_518Element(request_MI_UI_BSCS_GL1_OUT_518).modelObject().execute();
         catch(Exception ex)
         //wdComponentAPI.getMessageManager().reportException(ex.getMessage().toString(),true);
         try {
    wdContext.createRequest_MI_UI_BSCS_GL1_OUT_518Element(request_MI_UI_BSCS_GL1_OUT_518).modelObject().execute();
         } catch (WDWSModelExecuteException e)
    // TODO Auto-generated catch block
    try {
    wdContext.createRequest_MI_UI_BSCS_GL1_OUT_518Element(request_MI_UI_BSCS_GL1_OUT_518).modelObject().execute();
                        } catch (RuntimeException e2) {
                             // TODO Auto-generated catch block
                             e2.printStackTrace();

    i used runtime exception along with the wdwsmodel exception

  • Is there a way to handle custom java exception in OSB?

    For example, i created a exception that extends RuntimeException.
    My exception has a new field called "code".
    I want to handle this exception in Oracle Service Bus process and retrieve this code to throws another exception with a XML structure that includes the code.
    Is there a way to do that ?
    <con:fault xmlns:con="http://www.bea.com/wli/sb/context">
         <con:errorCode>BEA-382515</con:errorCode>
         <con:reason>Callout to java method "public static org.apache.xmlbeans.XmlObject ...</con:reason>
         <con:java-exception xmlns:con="http://www.bea.com/wli/sb/context">
             <con:java-content ref="jcid:33a6c126:14006f3df18:-7fd9"/>
         </con:java-exception>
         <con:location xmlns:con="http://www.bea.com/wli/sb/context">
             <con:node>optmusPipeline</con:node>                    
             <con:pipeline>optmusPipeline_request</con:pipeline>
             <con:stage>processStage</con:stage>
             <con:path>request-pipeline</con:path>   
         </con:location>
    </con:fault>
    it is not enough to recover the information i needed.

    Hi Sandro,
    I've got the same situation. I agree that returning xml from function is not a best choice as you have to manually check if return status is an error or not. Processing exception in error handler is better and this is how I do it:
    I am doing a java callout to a function that can throw exception. Then I add ErrorHandler to stage containing this callout (all the exception are caught here).
    In the error handler I check if $fault/ctx:java-exception is not null. If not then I pass thrown exception to my utility function that converts it to xml similar to yours:
    import org.apache.xmlbeans.XmlException;
    import org.apache.xmlbeans.XmlObject;
    public static XmlObject exceptionToXML(Throwable exception)
      throws XmlException {
      String xmlString = exceptionToString(exception);
      return XmlObject.Factory.parse(xmlString);
    public static String exceptionToString(Throwable exception) {
      String cause = "";
      if (exception.getCause() != null) {
      cause = exceptionToString(exception.getCause());
      return String
      .format("<exception><name>%s</name><description>%s</description>%s</exception>",
      exception.getClass().getName(), exception.getMessage(),
      cause);
    Calling exceptionToXML with $fault/ctx:java-exception/ctx:java-content returns:
    <exception>
         <name>pl.app.MyException</name>
         <description>Exception message</description>
    </exception>
    Then you can check the exception class (IF action: $exception/name/text() = "pl.app.MyException") and handle it accordingly.
    Good luck,
    Krzysiek

Maybe you are looking for