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
ThanksHi 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...
mattHi 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.
-JoshI 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 -
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,
CurtChetan, 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 fountAbhilashs01,
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,
SachinDear 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
sandraHi 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
UdoClass-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. -
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,
johnsomehow, 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
-
Hi All, I've a intercompany customer (say ICABCD) which has Ship-to Party maintained as 12345678 (not same as Sold-to Party) in Customer master. Now when I create a I/C PO to procure goods for ICABCD and create delivery (outbound), it sets Ship-to Pa
-
MSI k9n6sgm-v - problem installing SM Bus Controller
in Device Manager, theres a yellow exclamation point by SM Bus Controller.. everytime i try to update the driver with the mobo CD or with the drivers from this site, it installs fine, eliminates the yellow exclamation point by SM Bus Controller but w
-
My phone keeps saying " Is disabled" and i have changed my password ...
Twice already. I have followed all of apples instructions, even turned my phone off to possible reset/refresh the system and i am still not able to update any apps. This is very incovienant!! Ive even tried creating a new id and putting all my info i
-
Since I have upgraded to ios7 my internet banking page will not fit the screen. Before updating I enlarged the page by using the *2 button in the bottom right hand of the screen, there no longer is that option?
-
My Oracle Support (requires Flash)
Trying to access new metalink My Oracle Support (requires Flash) , ending up with error, even i put my CSI # also? any body know the fix? Access to all other features in My Oracle Support is disabled. This account requires one valid Support Identifie