Skip to Content


En ocasiones nos sucede que una transacción presenta mensajes de error que no son claros o que no nos proporcionan información suficiente para determinar cuál es la causa del error, o por ejemplo cuando el mensaje se pudo haber generado desde una validación, un exit o una BADI pero no podemos saber exactamente donde se generó.


En ocasiones como estas es bastante útil poder detener la ejecución en el punto exacto donde se generó el mensaje y poder analizar en el DEBUG todo el entorno que rodea la generación de este mensaje.  Vamos a ver cómo hacerlo en el siguiente ejemplo:


Supongamos que necesitamos ver los datos de un material por la transacción MM03 y obtenemos el siguiente mensaje:



Para ver el código del error hacemos doble click sobre el mensaje y obtenemos el siguiente dialogo:



Vemos entonces que el código del mensaje es M3305 donde 305 es el número del mensaje y M3 es la clase de mensajes.  El numero del error se almacena en la variable SY-MSGNO.


Nuevamente ingresamos a la transacción MM03, pero antes de digitar el código del material escribimos /h en la línea de comandos y presionamos ENTER para activar el debugger.



Luego escribimos el código de material y presionamos ENTER.  Una vez dentro del debugger presionamos el botón watchpoint:



En la ventana de diálogo que aparece escribimos la variable SY-MSGNO y en condición escribimos SY-MSGNO = ‘305’ para que solo se detenga cuando el ID del error sea 305.  Si no se agrega esta condición, la ejecución se detendrá cada vez la variable SY-MSGNO cambie de valor, es decir, cada vez que se genere un error.



Presionamos Enter o el botón aceptar y luego presionamos la Tecla F8 para que continúe la ejecución.  La ejecución continuara hasta el punto exacto donde la variable SY_MSGNO tome el valor 305 y se genere el mensaje de error M3305.

A partir de este punto es posible analizar el código y revisar el contenido de las variables y tablas internas con del fin de determinar las circunstancias que generaron el error.


Finalmente, es importante tener en cuenta que para poder activar el debugger debes tener las autorizaciones necesarias.  Normalmente en sistemas de pruebas y desarrollo la mayoría de los consultores los tienen habilitados, no obstante en sistemas productivos o con usuarios finales es posible que se genere un mensaje de error similar al siguiente. 



En este caso puedes hacer la solicitud de las autorizaciones correspondiente al lider BASIS o la persona responsable de roles y perfiles del sistema en que quieras hacer el análisis.


Muchas gracias por su atención y espero que les sea de utilidad.


To report this post you need to login first.

7 Comments

You must be Logged on to comment or reply to a post.

  1. Osvaldo Lopez

    Muy buen documento.

    Sin embargo, no estaría de más aclarar que ésto solo podrán llevarlo a cabo usuarios (o consultores) SAP que tengan permisos para desarrollar. Ya que no cualquier con acceso a una transacción estandar como la MM03 (por mencionar la que usan en este documento), podrá acceder al modo debug de SAP. 😎

    Más alla de la observación, está perfecto el documento.

    Sigue así !!!

    Saludos!

    (0) 

Leave a Reply