✒️ABAP POO / El manejo de excepciones en los Objetos ABAP Por Jeferson Pena Curvelo
ABAP El manejo de excepciones en los Objetos ABAP

El Manejo de Excepciones en los Objetos ABAP:
Excepción: Se refiere a una situación que sucede cuando un programa se está ejecutando y por alguna razón ocurre una situación anormal en el programa, la cual es tratada ya que previamente fue contemplada en el mismo programa.
Muchas veces, la acción asociada a una excepción es simplemente producir un mensaje informativo y terminar el procesamiento. Otras veces, es solo la indicación de la necesidad de un cambio en la estrategia de resolución del problema.
A partir de la versión SAP Web AS 6.10, SAP introduce un nuevo concepto en las excepciones de los objetos ABAP, en paralelo al que describimos anteriormente. Este nuevo concepto es el de las "Excepciones basadas en Clases".
Las excepciones basadas en clases pueden lanzarse utilizando la sentencia RAISE EXCEPTION o por el entorno de ejecución.
La división por cero es un ejemplo de una excepción causada por el entorno de ejecución.
En una situación de excepciones, una excepción es representada por un objeto excepción, que es una instancia de la clase excepción. Los atributos de cada objeto excepción contienen información de la situación del error.
Podemos definir nuestras propias clases de excepciones, pero debemos tener en cuenta que ya existe un amplio rango de clases de excepciones predefinidas en el sistema, particularmente para las excepciones del entorno de ejecución.
Usualmente crearemos las clases de excepciones globales en el CLASS BUILDER a través de la transacción SE24, aunque también podemos definirlas localmente en nuestros programas.
Cuando una excepción basada en clases se produzca, el sistema interrumpirá el flujo normal del programa e intentar encontrar el manejador adecuado, si no puede hacerlo, ocurrirá un error en tiempo de ejecución.
Todas las clases de excepciones son derivadas de las clases estándar CX_NO_CHECK, CX_DYNAMIC_CHECK o CX_STATIC_CHECK que son a su vez subclases de la superclase CX_ROOT.
Todas las clases de excepciones estándar comienzan con CX_
La clase CX_ROOT proporciona algunos métodos predefinidos que son heredados por todas las clases, como el método GET_SOURCE_POSITION que devuelve el nombre del programa principal, los includes y la línea del código fuente donde se produjo la excepción y el método GET_TEXT que devuelve un texto de la excepción en el formato STRING.
Las nuevas clases de excepciones que creemos heredarán de alguna de las superclases anteriormente mencionadas, por lo que podremos agregarles otros componentes que generalmente serán textos. Luego podremos especificar qué texto se utilizará cuando se dispare una excepción.
Se pueden crear muchos textos en una clase, los ID asignados a estos textos son creados en el CLASS BUILDER correspondiente a la transacción SE24 en la pestaña TXT dentro de la clase GLOBAL como constantes ESTATICAS. Se puede especificar que texto será utilizado cuando una excepción se genera, pasando alguna de estas constante al parámetro de entrada TEXT_ID del constructor de instancia.
Todas las clases de excepciones heredan el atributo KERNEL_ERRID de CX_ROOT. Este atributo contiene el nombre del error en tiempo de ejecución que ha sido disparado por el entorno de ejecución. Por ejemplo BDC_ZERODIVIDE si el programa captura una excepción CX_SY_ZERODIVIDE que es la división por cero.
Una excepción solo podrá capturarse si la sentencia que la produjo esta encerrada en un broque TRY-ENDTRY. La excepción luego será manejada utilizando la sentencia CATCH en el bloque TRY-ENDTRY.
El bloque TRY contiene el conjunto de sentencias que manejan las excepciones. Si una excepción ocurre en el bloque TRY, el sistema busca la primera sentencia CATCH dentro del mismo bloque TRY-ENDTRY y luego gradualmente busca hacia afuera en todos los bloques TRY-ENDTRY que puedan manejar la excepción.
Si encuentra uno, tratara de buscar su manejador- Si no puede encontrar un manejador pero el bloque TRY-ENDTRY está dentro de una subrutina, entonces el sistema tratara de propagar la excepción al programa llamador.
El bloque CATCH contiene el manejador de excepciones que es ejecutado si una excepción especifica ocurre en el bloque TRY asociado.
Dentro de la sentencia CATCH podemos especificar la cantidad de clases de excepciones que necesitemos.
Al igual que todas las estructura de control de los objetos ABAP los bloques TRY-ENDTRY se puede anidar la cantidad de niveles que deseemos. Es decir, se puede colocar un bloque TRY-ENDTRY dentro de otro bloque TRY-ENDTRY, así los bloque CATCH, TRY y el bloque CLEANUP puede tener bloques completos TRY-ENDTRY.
 
 
 
Sobre el autor
Publicación académica de Jeferson Jos Pena Curvelo, en su ámbito de estudios para el Master ABAP Orientado a Objetos.
Jeferson Jos Pena Curvelo
Chile - Legajo: PD49W
✒️Autor de: 180 Publicaciones Académicas
🎓Egresado de los módulos:
- Master ABAP Orientado a Objetos
- Master ABAP for HANA
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
Disponibilidad Laboral: FullTime
























