Class based error handling

Hi evrybody,
i'd like to implemt some own errorclasses, but i cand find anything about the namespace to use. Am i right that evry class based error handling must start with cx? So which namespace is for customoers?
cu
  Rainer

Hi Rainer,
if you already have a regulation for class names, just replace CL by CX and apply them accordingly.
For example, if your classes are named ZCL_... or YCL_..., your exception classes will be named ZCX... or YCX_..., respectively.
See T100 message OO 145 for the details. Here is the German version:
+Kurztext
Klassenname &1 ist für den gewählten Klassentyp nicht zulässig
Diagnose
Namenskonvention für Klassen :
Für eine persistente Klasse ist der Präfix 'CL_' bzw. Namensraum+Präfix 'CL_' ( z.B. 'ZCL' oder '/NAMESPACE/CL_' ) vorgeschrieben.
Für eine Exceptionklasse ist der Präfix 'CX_' bzw. NamensraumPräfix 'CX_' ( z.B. 'ZCX' oder '/NAMESPACE/CX_' ) vorgeschrieben.
Best regards,
Thorsten Franz

Similar Messages

  • Class based exception handling

    Hi everyone....
    I am new to object oriented abap.
    I would like to know more about exception handling using classes.
    please provide some good material or links on the topic?
    Points will be rewarded.......

    hi,
    Download the PDF from here.
    http://www.esnips.com/doc/6d16a298-9227-4d32-acf1-e91164c89daf/3-ABAP-Objects(P283)
    Follow this link too for tutorials.
    http://www.****************/Tutorials/OOPS/MainPage.htm
    Hope this helps, Do reward.
    Edited by: Runal Singh on Mar 14, 2008 3:28 PM

  • Replacing @@ERROR Based Error Handling With Structured Exception Handling

    Could please any one explain 
    Thanks

    Hi Rmohan,
    In SQL Server 2008 R2, we can use RAISERROR to generate an error message and initiates error processing for the session. RAISERROR can either reference a user-defined message stored in the sys.messages catalog view or build a message dynamically.
    Do you want to build a custom error message? If so, you can use the following script:
    Begin Try
    RAISERROR ('Generate custom error message.', -- Message text.
    16, -- Severity.
    1 -- State.
    End Try
    Begin Catch
    -- We can also print the error message if necessary
    Print 'custom error message'
    DECLARE @ErrorMessage NVARCHAR(4000);
    DECLARE @ErrorSeverity INT;
    DECLARE @ErrorState INT;
    SELECT
    @ErrorMessage = ERROR_MESSAGE(),
    @ErrorSeverity = ERROR_SEVERITY(),
    @ErrorState = ERROR_STATE();
    -- Use RAISERROR inside the CATCH block to return error
    -- information about the original error that caused
    -- execution to jump to the CATCH block.
    RAISERROR (@ErrorMessage, -- Message text.
    @ErrorSeverity, -- Severity.
    @ErrorState -- State.
    End Catch
    The result is as follows:
    Reference:
    http://msdn.microsoft.com/en-IN/library/ms178592(v=sql.105).aspx
    Regards,
    Mike Yin
    TechNet Community Support

  • Handling general errors via class based exceptions

    Fairly standard scenario: I've got this.
      DATA:  l_requester TYPE xubname.
      CALL FUNCTION 'ENQUEUE_EZMYTAB'
        EXPORTING
          username             = i_username
        EXCEPTIONS
          foreign_lock         = 1
          system_failure       = 2
          OTHERS               = 3.
      CASE sy-subrc.
        WHEN 1.
          l_requester = sy-msgv1.
          RAISE EXCEPTION TYPE zcx_my_exception EXPORTING textid   = zcx_my_exception=>lock_error
                                                          user     = i_username
                                                          lockedby = l_requester.
        WHEN 2.
          RAISE EXCEPTION TYPE zcx_my_exception.
      ENDCASE.
    But what I really want for WHEN 2 is the class based exception of
    MESSAGE sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1...
    I.e., in my calling code, I want to catch the exception, and display whatever the original error message was as generated by the ENQUEUE function module.
    I suppose I could do this
    DATA: ls_error TYPE scx_t100key.
    WHEN 2.
      ls_error-msgid = sy-msgid.
      ls_error-msgty = sy-msgty.
      ls_error-msgno = sy-msgno.
      RAISE EXCEPTION TYPE zcx_my_exception EXPORTING textid = ls_error
    but I can't help feel I'm missing something staggeringly obvious...
    matt

    Hi Matt,
    this may sound too simple:
    For me the real advantage of class-based-exception is that they can be raised in an inner block and caught in an outer block at any level.
    I never use the exception attributes to communicate any details, but use
    IF SY-SUBRC NE 0.
      MESSAGE sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1... INTO lv_string.
      Raise Exception type zcx_my_exception.
    ENDIF.
    Catching the exception I may (roughly) know where it comes from. As the message variables are present, I can check their values or repeat the MESSAGE without INTO. The main function of MESSAGE INTO is for transparency, the ability to see the whole message in debugger in lv_string and the where-used-list if message is created by programmer..
    If I really need different reaction for different SY-SUBRC ( = different untyped exception), I'd rather create different class-based exceptions. This helps transparency.
    In other oo language you do not have an ABAP message concept with everywhere-present message variables. Why use this crutch of putting the message variable filled by functions exception into exception object attributes only to convert them back to message output?
    I prefer [KISS|http://en.wikipedia.org/wiki/KISS_principle].
    Regards,
    Clemens

  • ColdFusion.Ajax.submitForm error handler problem with AppleWebKit-based browsers

    All-
    When using an AppleWebKit-based browser (i.e. Safari or
    Chrome), the
    message argument of the Coldfusion.Ajax.submitForm error
    handler always contains the string "OK", regardless of what error
    was cfthrown by my CFM form handler.
    Recall that the signature for the error handler is this:
    MyFormErrorHandler = function( code, message )
    In other browsers (i.e. IE or Firefox), the
    message argument of the error handler properly contains the
    message that was cfthrown by my form handler.
    Can anyone offer any guidance for this problem? Thanks in
    advance for your help.
    -Josh

    I was testing on IE8, Windows7 Starter.  I don't have IE6 available to test on.  Can test on IE7 a bit later on, but I have to fart-arse around with a VM to get it ready, so I'll do that after work.
    I tested multiple submits both via clicking between the tabs within one main "request" as well as multiple entire requests (like via refreshing the whole browser window).  I had no problems.
    I think you're being quite optimistic ot expect AJAX stuff to work reliably on IE6.  IE6 crashes.  That's what it's most famous for doing.  One needs to expect crashes if one pushes it (push it anywhere than out the window, that is).  And your client company's IT dept should be lined up against a wall and shot for still running it.  That's professionally negligent IMO.  But... you probably don't need to be told that.
    Adam

  • JDev 11.1.1.2.0 - Error while providing Error Handler Class in Databindings

    I get this exception as soon as I provide a reference to ErrorHandlerClass in DataBindings.cpx
    Error 500--Internal Server Error
    oracle.jbo.JboException: JBO-29000: Unexpected exception caught: java.lang.InstantiationException, msg=empexceptions.model.EmpDCErrorHandler
         at oracle.jbo.common.JBOClass.newInstance(JBOClass.java:253)
         at oracle.jbo.uicli.mom.JUApplicationDefImpl.initializeBindingContext(JUApplicationDefImpl.java:1242)
         at oracle.jbo.uicli.mom.JUApplicationDefImpl.populateContext(JUApplicationDefImpl.java:1215)
         at oracle.jbo.uicli.mom.JUMetaObjectManager.loadCpx(JUMetaObjectManager.java:713)
         at oracle.adf.model.BindingRequestHandler.initializeBindingContext(BindingRequestHandler.java:399)
         at oracle.adf.model.BindingRequestHandler.beginRequest(BindingRequestHandler.java:182)
         at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:189)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:97)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:420)
         at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:420)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:247)
         at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:157)
         at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:94)
         at java.security.AccessController.doPrivileged(Native Method)
         at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313)
         at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413)
         at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:138)
         at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:70)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at oracle.dms.wls.DMSServletFilter.doFilter(DMSServletFilter.java:326)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
         at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)
         at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3592)
         at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
         at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
         at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2202)
         at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2108)
         at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1432)
         at weblogic.work.ExecuteThread.execute(ExecuteThread.java:201)
         at weblogic.work.ExecuteThread.run(ExecuteThread.java:173)
    Caused by: java.lang.InstantiationException: empexceptions.model.EmpDCErrorHandler
         at java.lang.Class.newInstance0(Class.java:340)
         at java.lang.Class.newInstance(Class.java:308)
         at oracle.jbo.common.JBOClass.newInstance(JBOClass.java:245)
         ... 34 more
    DataBindings.cpx looks like this
    <?xml version="1.0" encoding="UTF-8" ?>
    <Application xmlns="http://xmlns.oracle.com/adfm/application"
                 version="11.1.1.55.36" id="DataBindings" SeparateXMLFiles="false"
                 Package="empexceptions.view" ClientType="Generic"
                ErrorHandlerClass="empexceptions.model.EmpDCErrorHandler">and my error handler class looks like this
    package empexceptions.model;
    import oracle.adf.model.binding.DCBindingContainer;
    import oracle.adf.model.binding.DCErrorHandlerImpl;
    public class EmpDCErrorHandler extends DCErrorHandlerImpl {
        public EmpDCErrorHandler(boolean b) {
            super(false);
        @Override
        public void reportException(DCBindingContainer dCBindingContainer,
                                    Exception exception) {
            super.reportException(dCBindingContainer, exception);
    }Am I doing anything wrong here?

    hi Harry
    See "28.10 Customizing Error Handling"
    at http://download.oracle.com/docs/cd/E14571_01/web.1111/b31974/web_adv.htm#ADFFD1398
    that says "... The exception error handler must have a default constructor, as shown in Example 28-27. ...".
    success
    Jan Vervecken

  • Error handler for event based messaging framework

    I've been very interested in using the event based messaging framework (described here http://forums.ni.com/t5/LabVIEW/Community-Nugget-2009-03-13-An-Event-based-messageing-framework/td-p...) for my next large application.
    My main concern is the fact that it seems like typos would be very difficult to debug since you need to ignore unknown commands to make this system work.
    To solve this problem I've been considering the idea of having a single message error handler VI which will store all valid commands and check all sent commands to see if they are valid.  Each VI would send out a register message on startup with their name and all messages they can send and receive.  The message error handler would store these and then check all future messages to be sure it is a valid message, throwing an error if it is not.
    My basic problem is this: for this to work the message error handler VI would have to be started before any messages are sent so that it can capture all the register events.  If this is a VI that will be continuously running the entire application how can I ensure it starts first since I cannot wait for it to complete? (I.e. the usual method of running an error out wire or using a sequence structure will not work since everything will then wait for it to complete which will not happen until the program is ready to shut down)
    I'm assuming the answer might be to use an asynchronous call but I'm not very familiar with this method.  
    Any help is appreciated.  Thanks. 

    Could you just use the error handler as a subVI inside a case structure that is only called when you have new message to be checked? I'm not sure I understood the exact functionality you are looking for, so sorry if this does not apply.
    Zach P.
    Product Support Engineer | LabVIEW R&D | National Instruments

  • Error Handling on procedure based forms

    Hi all,
    I have seen examples of error handling on table based forms like
    the following:
    begin
    doInsert;
    exception
    when others then
    --redirect to some error page
    I have tried the same with a procedure based form by wrapping
    the doSubmit procedure, but when the procedure returns an
    exception, it doesn't execute my exception handling code.
    Any ideas on why this is happening or at least how I can catch
    these exceptions with my own exception handler?
    Thanks,
    Curt

    Chetan, Antonio,
    I opened a TAR on this issue with Oravle and they got the same
    results. Thay suggested a work around of creating an error table
    that gets written to and then dispaly and new page to retrieve
    the error from the table.
    What I ended up doing is creating a dummy procedure that does
    nothing (NULL). The form based on the dummy procedure allows me
    to get the values I need from the user.
    The procedure always returns succesful since it doesn't do
    anything. So in the form success code area I call the real
    procedure, check the return value, and now I can redirect back
    to the orignal form on error, or direct to another paqe on
    success.
    Not the most elegant solution, but it is working for now.
    Curt

  • Error in custom error handler class

    Hiii...
    i got some error s when i create error handler class
    i use the following code for creating that class
    package view.controller.fwkext;
    import java.util.ArrayList;
    import java.util.List;
    import oracle.adf.model.binding.DCBindingContainer;
    import oracle.adf.model.binding.DCErrorHandlerImpl;
    import oracle.jbo.CSMessageBundle;
    import oracle.jbo.DMLConstraintException;
    import oracle.jbo.JboException;
    public class CustomErrorHandler extends DCErrorHandlerImpl {
    List<ExceptionMapper> exceptionMapperList = new
    ArrayList<ExceptionMapper>();
    public CustomErrorHandler() {
    this(true);
    public CustomErrorHandler(boolean setToThrow) {
    super(setToThrow);
    exceptionMapperList.add(new DisableJboExceptionCodesMapper());
    public void reportException(DCBindingContainer bc, Exception ex) {
    for (ExceptionMapper mapper : exceptionMapperList) {
    if (mapper.canMapException(ex)) {
    ex = mapper.mapException(ex);
    super.reportException(bc, ex);
    I got errors
    DisableJboExceptionCodesMapper not fount
    canMapException not fount
    mapException not fount

    Abhilashs01,
    Yes, that example from the docs appears to be missing a few things, to-wit: the ExceptionMapper class and the DisableJboExceptionCodesMapper class. Without the ExceptionMapper class, JDeveloper's import assistance is finding one in com.sun.jndi somewhere, which is obviously the wrong one. So, yes, the docs are good, but they appear to be missing some key things, making it kind of hard...
    Another place to find an example error handler class is in the Fusion Order Demo: http://www.oracle.com/technology/products/jdev/samples/fod/index.html
    John

  • Centralized error handling class

    Hello Gurus!!!
    I have developed coding for transaction fb03 in module pool program using OO concepts.
                   Now I want to enhance my coding using centralized error handling class.
    ie. the errors are not shown immediately but a class captures those errors and then they are sent to the calling class which displays those errors).
    Kindly suggest your answers.
    Thanks in advance,
    Sachin

    Dear Uwe,
    I have implemented validation class which displays all the error messages through message class inside which I displayed error messages.
                    The code is as follows :-
    CLASS z_validation DEFINITION.
      PUBLIC SECTION.
        METHODS: check_company_code,
                 check_docnr,
                 check_fiscal_year.
    ENDCLASS.                    "Z_Validation DEFINITION
          CLASS Z_Validation IMPLEMENTATION
    CLASS z_validation IMPLEMENTATION.
      METHOD: check_company_code.
      if txt_codco = ' ' and txt_docno = ' ' and  txt_fisyr = ' '.
          MESSAGE i006.
      endif.
        IF txt_codco = ' '.
          MESSAGE i002.
          LEAVE TO SCREEN 0100.
        ELSE.
          SELECT t001~bukrs INTO CORRESPONDING FIELDS OF TABLE it_doc FROM t001
           WHERE t001~bukrs = txt_codco..
          IF sy-subrc NE 0.
            MESSAGE i000.
            LEAVE TO SCREEN 0100.
          ENDIF.
        ENDIF.
      ENDMETHOD.                    "Check_Company_Code
      METHOD: check_docnr.
        IF txt_docno = ' '.
          MESSAGE i003.
          LEAVE TO SCREEN 0100.
        ELSE.
          SELECT  belnr
           INTO CORRESPONDING FIELDS OF TABLE it_doc FROM bkpf
           WHERE bkpfbukrs = txt_codco AND bkpfbelnr = txt_docno.
          IF sy-subrc NE 0.
            MESSAGE i005.
            LEAVE TO SCREEN 0100.
          ENDIF.
        ENDIF.
      ENDMETHOD .                    "Check_Docnr
      METHOD: check_fiscal_year.
        IF txt_fisyr = ' '.
          MESSAGE i004.
          LEAVE TO SCREEN 0100.
        ELSE.
          SELECT gjahr
          INTO CORRESPONDING FIELDS OF TABLE it_doc FROM bkpf
          WHERE bkpfbukrs = txt_codco AND bkpfbelnr = txt_docno AND bkpf~gjahr = txt_fisyr.
          IF sy-subrc NE 0.
            MESSAGE i001.
            LEAVE TO SCREEN 0100.
          ENDIF.
        ENDIF.
      ENDMETHOD.                    "Check_Fiscal_Year
    ENDCLASS.                    "Z_Validation IMPLEMENTATION
    MODULE user_command_0100 INPUT.
      DATA: obj1 TYPE REF TO z_validation,
              obj2 TYPE REF TO z_data_processing,
              obj3 TYPE REF TO z_screen.
      CREATE OBJECT: obj1, obj2, obj3.
      CASE sy-ucomm.
        WHEN 'SEARCH'.
          CALL METHOD: obj1->check_company_code.
          CALL METHOD: obj1->check_docnr.
          CALL METHOD: obj1->check_fiscal_year.
          LEAVE TO SCREEN 0200.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    Please suggest your answer.
    Thanks in advance,
    Sachin

  • ABAP OO Exception Class based processing

    Hi there,
    Note: In going forward with SAP WAS 6.20, one can handle exceptions using exception-class based handling using RAISE EXCEPTION TYPE abc and then CATCHing it in TRY/ ENDTRY block. Standard method like GET_TEXT can be used to get the text of the exception raised.
    Question: If I know the EXCEPTION CLASS and Exception ID of my exception class, is it possible to get the exception text directly from the repository without creating the exception class object?
    E.g. Exception class is CX_MY_SECRET_ID
    and Exception IDs for this class are
    ID_NOT_FOUND,
    ID_EXPIRED,
    ID_IS_FOR_SPECIAL_ACCESS
    E.g. last two exception IDs are my warning conditions, and if such conditions are encountered, all I want to do is collect the warning messages. Whereas first exception ID condition (i.e. ID_NOT_FOUND) is an error for me, in which I have pass the exception back to the calling program. E.g. the source code is like this:
    PERFORM.......
    If ID is not found
       RAISE EXCEPTION TYPE ZCX_MY_SECRET_ID
               EXPORTING TEXT_ID = 'ID_NOT_FOUND'.
    else if ID has expired
       ...... then do I have to first raise the exception like raised above and CATCH it before I can get its text? or can I get the exception text directly without raising the exception first (as I know i have to retrieve the text of ZCX_MY_SECRET_ID exception class for Exception ID ID_EXPIRED)?
    In other words, if a certain condition is warning for my program, can I get the condition for that exception (from exception class based on exception class name and exception ID), or do I have to RAISE it first explicitely and then CATCH it immediately and execute GET_TEXT to get its text?
    Thanks very much!

    Hello Chetan,
    in basic the raise exception type xxx creates an exception object and aborts normal execution continuing in the enclosing try block.
    The Abap runtime contains some optimizations regarding the try block has an 'into xxx' clause. But as long you use the same exception you cant take benefit from this.
    As far I understand your problem you have two different kind of severities. So I would use 2 differnt exception classes (maybe derived from a common parent type, or one from the other).
    So both the code which throws the exception and the one which catches it are aware of the different semantic.
    Kind Regards
    Klaus

  • 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

  • Working with class based exception and dynamic method calls

    Hi Gurus,
    we just changed out ERP from EHP6 to EHP7.
    Since we did so we are facing an issue with an Z-Report we are using quite often.
    This reports looks up Workitems and executes the according methods so that we can go into debugging if we were facing any problems or errors.
    since the EHP Upgrade this statement has problems:
      data:        lt_parmbind   type abap_parmbind_tab,         lt_excpbind   type abap_excpbind_tab,         lo_runtime    type ref to object.     call method lo_runtime->(iv_cls_method)       parameter-table       lt_parmbind       exception-table       lt_excpbind.this CALL METHOD Statement has Problem with the Exception Table. We are quite often getting DYN_CALL_METH_EXCP_NOT_FOUND short dumps with Exception "CX_SY_DYN_CALL_EXCP_NOT_FOUND".
    The system has problems handling the content of lt_excpbind. if i clear this table the CALL METHOD statement works fine.
    AS an example we are trying to call /IDXGC/CL_PD_PROCESS_STEPS-->CREATE_DATA. This method has 2 exceptions
    /IDXGC/CX_PROCESS_ERROR
    Process Layer Exception
    CX_BO_TEMPORARY
    Temporary Business Exception
    The Content of LT_EXCPBIND is
    INDEX
    NAME
    VALUE
    2
    /IDXGC/CX_PROCESS_ERROR
    1
    2
    CX_BO_TEMPORARY
    2
    From my point of view the Problem ist, that they are marked as "class based". I think so because if you looked up the SAP Help for the EXCEPTION-TABLE Statement it is written that is statement only works for none-classbased exception.
    I think that restriction is quiet clear. But what i am wondering about is.. that restriction also exists for EHP6. And in EHP6 it work. Does anyone know why? Or how i can change me CALL METHOD Statement that i will work again?
    Best Regards
    Udo

    Class-based exceptions must be caught using try/catch statement.
    Calling dynamically a method catchable exceptions are:
    CX_SY_DYN_CALL_EXCP_NOT_FOUND
    CX_SY_DYN_CALL_ILLEGAL_CLASS 
    CX_SY_DYN_CALL_ILLEGAL_METHOD
    CX_SY_DYN_CALL_PARAM_MISSING 
    CX_SY_DYN_CALL_PARAM_NOT_FOUND 
    CX_SY_REF_IS_INITIAL
    Anyway catching cx_root (as shown by Matthias) will catch everything is catchable.

  • Error handling function: ORA-20001: get_dbms_sql_cursor error:ORA-00942: table or view does not exist  is not trapped. Why?

    Why APEX 4.1 Error handling function does not trap  the error of missing table?
    Say, I create simple application with single IR report page and I also assign standard simple error handling function.
    Function works perfectly, except but this case:
    If I just drop a table used by report page and then refresh the page I am getting usual APEX error message:
    ORA-20001: get_dbms_sql_cursor error ORA-00942: table or view does not exist
    and error handling function is not invoked at all.
    Is this a feature or a bug?

    Hi,
    Check the corrections given in the note 990764:
    Reason and Prerequisites
    Up to now, using a characteristic with its own master data read class as the InfoProvider was not supported. This is now released but it is not available for all modelings. Using the attributes in the query is not supported for characteristics that have their own master data read class. Using the attributes in the query causes a termination. The following errors may occur in this case:
    ORA-00942: table or view does not exist
    Fehler in CL_SQL_RESULT_SET  Include NEXT_PACKAGE
    RAISE_READ_ERROR in CL_RSDRV_VPROV_BASE
    Solution
    SAP NetWeaver 2004s BI
               Import Support Package 11 for SAP NetWeaver 2004s BI (BI Patch 11 or SAPKW70011) into your BI system. The Support Package is available once Note 0914305 "SAPBINews BI 7.0 Support Package 11", which describes this Support Package in more detail, has been released for customers.
    In urgent cases you can implement the correction instructions.
    The correction instructions contain the tightened inspection for characteristics.
    Regards,
    Anil Kumar Sharma .P

  • Issue with SRDemo error handling

    Hi All,
    Glad the forums are back up and running. In debugging some error-handling issues in our own application, I found an issue in the error handling code of SRDemo. I thought I'd post the issue here, as many of us (myself included) use some SRDemo code as the basis for our own applications.
    The issue can be found in the oracle.srdemo.view.frameworkExt.SRDemoPageLifecycle class, specifically in the translateExceptionToFacesErrors method. I'll show the code that has the issue first, and explain the issue afterwards:
            if (numAttr > 0) {
                Iterator i = attributeErrors.keySet().iterator();
                while (i.hasNext()) {
                    String attrNameKey = (String)i.next();
                     * Only add the error to show to the user if it was related
                     * to a field they can see on the screen. We accomplish this
                     * by checking whether there is a control binding in the current
                     * binding container by the same name as the attribute with
                     * the related exception that was reported.
                    ControlBinding cb =
                        ADFUtils.findControlBinding(bc, attrNameKey);
                    if (cb != null) {
                        String msg = (String)attributeErrors.get(attrNameKey);
                        if (cb instanceof JUCtrlAttrsBinding) {
                            attrNameKey = ((JUCtrlAttrsBinding)cb).getLabel();
                        JSFUtils.addFacesErrorMessage(attrNameKey, msg);
                }Now, this bit of code attempts to be "smart" and only show error messages relating to attributes if those attributes are in fact displayed on the screen. It does so by using a utility method to find a control binding for the attribute name. There are two issues with this code, one obvious, and one that is a bit more subtle.
    The obvious issue: if there is a binding in the page definition, it doesn't necessarily mean that the attribute is shown on the screen. It's a good approximation, but not exact.
    The other issue is more subtle, and led to errors being "eaten," or not shown, in our application. The issue comes if you are using an af:table to display and update your data. In that case, the findControlBinding will not find anything for that attribute, since the attribute is contained within a table binding.
    Just posting this as a word to the wary.
    Best,
    john

    somehow, this message got in the wrong thread....
    Hi Frank,
    Yes, I simply scripted it out this way to contrast the behaviour if the first attribute was read-only vs not read-only. I found the issue on a page in our app that was simply drag-and-drop the VO from the data control on the page.
    It's quite annoying, because our particular use case that hit this error is a "save" button on the page. If the commit operation doesn't return any errors (and it doesn't in this use case!), we add a JSF message saying "save successful" - then the attribute errors are further added later in the page lifecycle, so we get 3 messages: "Save successful" and "Fix this error" and "Tried to set read-only attribute" - quite confusing to the end-user when the only message they should see is "fix this error."
    At any rate, the fix is to simply re-order the attributes in the page definition - that doesn't affect the UI at all, other than to fix this issue.
    John
    it was supposed to be something like:
    Hi Frank,
    Thanks for the reply. I was simply posting this here so that people who use the SRDemo application techniques as a basis for developing the same functionality in their own apps (like me) can be aware of the issue, and avoid lots of head-scratching to figure out "what happened to the error message?"
    John

Maybe you are looking for