SAP EXCEPTIONS NON CLASS



Get Example source ABAP code based on a different SAP table
  


VERSION 5 GREY

Non-Class-Based Exceptions
Non-class-based exceptions are the predecessors of class-based exceptions and should not be defined any more in new developments.
ITOC

ABAP_PGL
Using Class-Based Exceptions
ABAP_PGL_END

Definition
Non-class-based exceptions can be defined in the parameter interfaces of function modules and methods. These definitions take place as follows:
In methods of local classes, by assigning a name for the exception after the addition EXCEPTIONS of the statement $[CLASS-$] METHODS.
In methods of global classes, global interfaces or function modules, by assigning a name for the exception
BEGIN_SECTION VERSION 5 OUT in Class Builder or Function Builder
END_SECTION VERSION 5 OUT , whereby the checkbox for exception classes is not selected.
The statement RAISE EXCEPTION or the addition THROW in a conditional expression cannot be used to raise class-based exceptions in a method or a function module in whose interface non-class-based exceptions are defined.



Latest notes:

Before class-based exceptions were introduced, all exceptions defined in the parameter interface of methods or function modules were non-class-based.
NON_V5_HINTS
ABAP_HINT_END

Raising
Non-class-based exceptions are raised by the following statements:
RAISE
MESSAGE ... RAISING

Handling
The handling of non-class-based exceptions is made possible by the addition EXCEPTIONS in method calls and function module calls by assigning numeric values to the exceptions, which are used to fill the system field sy-subrc when the exception is raised. The actual error handling takes place after the call, when sy-subrc is evaluated.



Latest notes:

The exceptions that can be defined in the interfaces of methods and function modules are not real exceptions, since they do not change the control flow, but simply end the processing of the procedure prematurely and set the return code sy-subrc instead.
A predefined exception ABAP Addition error_message can be used when calling function modules to handle messages of types E and A sent during the processing of the function module as non-class-based exceptions.
NON_V5_HINTS
RFC currently allows only classic exception handling. Class-based exception handling is only possible in a different release track.
ABAP_HINT_END