📘Excepciones
Definición de Excepciones
En SAP, el término "excepciones" se refiere a una técnica de manejo de errores y situaciones especiales en la programación con el lenguaje ABAP (Advanced Business Application Programming).
Una excepción es un evento que ocurre durante la ejecución de un programa y que interrumpe el flujo normal de las instrucciones. No es necesariamente un error fatal (como un short dump), sino una condición que un programador puede anticipar y manejar de manera controlada.
Propósito y Mecanismo
El principal objetivo del manejo de excepciones es hacer que los programas sean más robustos y predecibles. En lugar de que un programa termine abruptamente (lo que podría causar un short dump) ante una situación inesperada, el programador puede "capturar" la excepción y tomar una acción correctiva o de manejo de errores, como:
-
Mostrar un mensaje de error al usuario.
-
Registrar el problema en un log.
-
Intentar una operación alternativa.
-
Terminar la ejecución de forma controlada.
El mecanismo de excepciones en ABAP se basa en las palabras clave TRY... CATCH.
-
TRY: Se utiliza para delimitar un bloque de código que podría generar una excepción. -
CATCH: Se utiliza para "capturar" o manejar una excepción que se produce en el bloqueTRY.
Tipos de Excepciones en ABAP
Existen dos tipos principales de excepciones en ABAP:
-
Excepciones Basadas en Clases (Class-Based Exceptions):
-
Este es el enfoque moderno y recomendado para el manejo de excepciones en ABAP.
-
Las excepciones se definen como clases de excepción que se derivan de una clase padre, como
CX_ROOT. Esto permite una jerarquía de excepciones y la posibilidad de capturar excepciones más generales o específicas. -
El programador lanza una excepción utilizando la instrucción
RAISE EXCEPTION. -
Ejemplo:
ABAPTRY. CALL METHOD lcl_myclass=>do_something. CATCH cx_my_exception. MESSAGE 'Error en el método' TYPE 'E'. ENDTRY.En este caso, si el método
do_somethinglevanta una excepción de la clasecx_my_exception, el bloqueCATCHse activará y mostrará el mensaje de error.
-
-
Excepciones No Basadas en Clases (Non-Class-Based Exceptions) o Excepciones con
RAISE:-
Este es el enfoque más antiguo, aunque todavía se encuentra en código legado.
-
Las excepciones se definen y se activan utilizando la palabra clave
RAISEseguida de un nombre simbólico de excepción. -
No hay una jerarquía de clases.
-
Ejemplo:
ABAPCALL FUNCTION 'MY_FUNCTION' EXPORTING iv_data = lv_data EXCEPTIONS not_found = 1 OTHERS = 2. IF sy-subrc <> 0. CASE sy-subrc. WHEN 1. MESSAGE 'Datos no encontrados' TYPE 'E'. WHEN 2. MESSAGE 'Error desconocido' TYPE 'E'. ENDCASE. ENDIF.En este caso, la función
MY_FUNCTIONpuede levantar las excepcionesnot_foundoOTHERS. El sistema asigna un valor numérico (sy-subrc) a cada excepción, y el programador debe verificar este valor para saber qué ocurrió. Este enfoque es menos flexible que el basado en clases.
-
Diferencia con un Short Dump
Es fundamental entender la diferencia:
-
Short Dump: Es una terminación anormal no controlada. El programa se detiene y no puede recuperarse. Ocurre cuando un error grave no ha sido anticipado ni manejado por el programador.
-
Excepción: Es un evento que el programador ha anticipado y para el cual ha proporcionado un mecanismo de manejo. El programa puede "atrapar" la excepción y continuar su ejecución de forma controlada, sin fallar.


Disponibilidad Laboral: FullTime