Ejemplo 1
REPORT ztest_excepciones_2.
PARAMETERS: v_num1 TYPE i,
v_num2 TYPE i.
DATA: v_resultado TYPE i,
text TYPE string,
ref_exc TYPE REF TO cx_root.
START-OF-SELECTION.
TRY.
*sentencia para la que las excepciones seran controladas
v_resultado = v_num1 * v_num2.
WRITE: 'El resultado es: ', v_resultado.
CATCH cx_sy_arithmetic_overflow INTO ref_exc.
text = ref_exc->get_text( ).
MESSAGE text TYPE 'I'.
ENDTRY.
Ejemplo 2
REPORT ztest_excepciones.
PARAMETERS: v_num1 TYPE i,
v_num2 TYPE i.
DATA: v_resultado TYPE i,
text TYPE string,
ref_exc TYPE REF TO cx_root.
START-OF-SELECTION.
TRY.
v_resultado = v_num1 / v_num2.
WRITE: 'El resultado es: ', v_resultado.
CATCH cx_sy_zerodivide INTO ref_exc.
text = ref_exc->get_text( ).
MESSAGE text TYPE 'I'.
ENDTRY.
Todas las clases de excepciones derivan de las clases standard
CX_NO_CHECK, CX_DYNAMIC_CHECK y CX_STATIC_CHECK. Estas 3 derivan de CX_ROOT.
Atributos importantes:
KERNEL_ERRID: contiene el nombre del error en tiempo de ejecucion. Ej: BDC_ZERODIVIDE.
Metodos importantes:
_Get_source_position: devuelve nombre del programa principal, includes y linea de codigo con error
-Get_Text: devuelve el texto de la excepcion.
Las clases de excepcion se suelen construir de manera global con se24. Los textos se establecen en la solapa TEXT como constantes estaticas. Podemos especificar que texto mostrar indicando el id del texto usando el paramtro TEXTID del constructor de la instancia.