✒️ABAP POO El manejo de excepciones en los Objetos ABAP
ABAP POO El manejo de excepciones en los Objetos ABAP
Manejo de exceptions en los objetos abap
Es una situacion que sucede cuando un programa se está ejecutando y ocurre una
Situacion anormal, la cual es tratada porque fue previamente contemplada en el codigo.
La mayoria de las veces es mostrar un mensaje informativo y terminar el proceso. Otras
Veces es lan necesidad de un cambio en la estrategia de resolver el problema
A partir de SAP web AS 6.10 aparecen las instrucciones basadas en clases
Estas se pueden lanzar usando RAISE EXCEPTION o por el entorno de ejecucion.
Una excepcion es representada por un objeto exception. Sus atributos continienen informacion del error.
Existen varias clases de excepciones predefinidas en el sistema, especialmente para el entorno de ejecución.
Una excepcón solo sep uede capturar si la sentencia que la produjo está dentro de un bloque TRY - ENDTRY. La excepcion sera manejada usando la sentencia CATCH.
Se pueden anidar bloques de Try-ENDTRY todas las veces que queramos
El bloque catch contiene el manejador de excepciones que es ejecutado si una excepcion especifica ocurre en el bloque try asociado. Dentro de la sentencia catch podemos especificar la cantidad de clases de excepciones que necesitemos.
Si el programa no puede encontrar un manejador pero el bloque try esta dentro de una subrutina, el sistema tratara de propagar la excepcion al programa llamador.
El bloque CLEANUP es ejecutado si el sistema no encuentra un manejador de excepciones dentro del try-endtry
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.
 
 
 
Sobre el autor
Publicación académica de Juan Pablo Carro, en su ámbito de estudios para el Máster ABAP POO.
Juan Pablo Carro
Profesión: Analista de Sistemas - Argentina - Legajo: DB81J
✒️Autor de: 8 Publicaciones Académicas
🎓Egresado de los módulos:
Disponibilidad Laboral: FullTime
Certificación Académica de Juan Carro