PDA

Ver la Versión Completa : TRY-CATCH abap


felix_cid
03/11/09, 14:35:00
Amigos:

Estoy tratando de controlar un dump en una función Z, el problema es que no sé como poder buscar el tipo de CATCH que corresponde al error que deseo manejar, ¿sabe alguien donde buscar los diferentes tipos de CATCH que existen?, por ejemplo encontré esto:

TRY.
INSERT INTO ZPROYECTOS VALUES WA_ZPROYEC.
CATCH CX_SY_DYNAMIC_OSQL_ERROR.
MESSAGE ‘Error al actualizar la tabla ZPROYECTOS’ TYPE ‘I’.
ENDTRY.

...pero...me imagino que no sólo existe el CX_SY_DYNAMIC_OSQL_ERROR, ¿dónde encuentro los demás tipos de control de error?

DavidXD_XD
03/11/09, 14:48:29
Hola Felix, intenta que tu programa genere un DUMP, cuando lo veas veras en las 3 primeras lineas el nombre de la excepción que deberás colocar dentro de la sentencia CATCH, si ya generast un DUMP puedes ir d frente a la ST22 y verla, espero te pueda ayudar :D

ic_man_777
03/11/09, 16:47:07
También existe una excepción genérica, la cuál nunca he probado, porque comunmente uno maneja las excepciones que uno sabe que pueden ocurrir (cuando ya nos ha mandado algún DUMP, como dice David). La excepción es:

CX_ROOT.

felix_cid
03/11/09, 17:45:50
Muchas gracias por la información, me queda clarísimo la manera de poder utilizar la excepción dentro del CATCH. Mi duda es si el mensaje que se quiere mostrar cuando ocurre un dump, ¿es posible que no lo muestre por pantalla sino que lo envíe a través de una tabla interna que ya estoy manejando en la función Z???

ic_man_777
03/11/09, 19:22:00
Cuando pones un TRY-CATCH, el Dump no se mostrará, se ejecutará el código que tengas en el catch, que quieres mandar a la tabla interna?, la excepción que se lanzó?

felix_cid
03/11/09, 20:53:28
Tengo una tabla interna en donde envío los errores internos producidos en validaciones que hago, entonces en este caso quiero enviar, no el mensaje que me muestra el CATCH, sino que poner un error interno mío en la tabla, por ejemplo "Sistema inestable, inetente nuevamente".