En este artículo aprenderemos a crear, ver y borrar Logs SLG1.

Cuando creamos un programa que realiza actualizaciones de la base de datos como por ejemplo una carga masiva, es interesante poder ver los mensajes y el estado de cada una de las actualizaciones en un Log que podremos consultar cuando sea necesario desde las transacciones que nos proporciona SAP.

Estas son:

  • SLG0 : Crear objeto y subobjeto del Log.
  • SLG1: Visualizar Logs.
  • SLG2: Borrar Logs.

ESTRUCTURA DEL LOG:

Antes de nada, veamos la información que nos proporciona un Log:  Contiene información de cabecera ( tipo , creador, nº de log, Fecha, Programa desde el que se ha creado el log…) y un listado de mensajes que pueden ser de 3 tipos: error, warning y correcto.

En el listado de mensajes podremos filtrar por tipo de mensaje simplemente pulsando en la barra el tipo que queramos ver.

CREAR UN LOG

1. SLG0-El primer paso es crear el objeto y sub-objeto log

Es una forma de clasificar los logs , deberemos dar un nombre al objeto y subobjeto con el que luego crearemos nuestro log.

2. Modulos de funciones Application Log

Podemos usar varias funciones para crear el log, todas ellas empiezan por BAL_LOG*, las más importantes y en el orden que debemos utilizarlas son:

DATA: ls_log_header TYPE bal_s_log,                        gv_log_handle TYPE balloghndl.    CALL FUNCTION ‘BAL_LOG_CREATE’   EXPORTING     i_s_log                 = ls_log_header   IMPORTING     e_log_handle            = gv_log_handle   EXCEPTIONS     log_header_inconsistent = 1     OTHERS                  = 2.  IF sy-subrc <> 0. ENDIF.  
  • Iniciar el Log -> BAL_LOG_CREATE

En primer lugar, debemos abrir el log con este módulo de funciones, pasándole la estructura de la cabecera del log (ls_log_header) que contendrá entre otras cosas el nombre del objeto y subobjeto que hemos creado previamente.

  • Añadir mensajes al Log:

BAL_LOG_MSG_ADD  , BAL_LOG_MSG_ADD_FREE_TEXT  , BAL_LOG_MSG_CUMULATE

CALL FUNCTION ‘BAL_LOG_MSG_ADD_FREE_TEXT’
    EXPORTING
      i_log_handle     = gv_log_handle
      i_msgty          = lv_tipo     *Puede ser ‘E’,’W’,’A’,’S’
      i_probclass      = lv_probclass
      i_text           = lv_texto
    EXCEPTIONS
      log_not_found    = 1
      msg_inconsistent = 2
      log_is_full      = 3
      OTHERS           = 4.
  IF sy-subrc <> 0.
  ENDIF.  

Ejemplo: Con texto libre: En lv_texto podemos añadir el texto que nosotros queramos:

Lv_probclass puede tomar 4 valores:

Si queremos por ejemplo mostrar los mensajes que nos ha devuelto una llamada CALL TRANSACTION (l_s_msg) podremos utilizar:

CALL FUNCTION ‘BAL_LOG_MSG_ADD’    EXPORTING   
i_log_handle             = gv_log_handle      
i_s_msg                  = l_s_msg    
EXCEPTIONS      
log_not_found      = 1     
msg_inconsistent = 2      
log_is_full              = 3      
OTHERS             = 4    
  • Grabar el Log:

Para poder consultar el log que hemos creado desde la transacción SLG1 tenemos que guardarlo. Si no lo hacemos el log solamente estará disponible durante la ejecución del programa, puede ser útil si solo queremos ver el resultado cuando termine de ejecutarse el programa y si este se ejecuta en modo online. Al guardar el log, se le asigna un número, durante la ejecución del programa este número es temporal.

    CALL FUNCTION ‘BAL_DB_SAVE’
      EXPORTING
        i_save_all       = ‘X’
      EXCEPTIONS
        log_not_found    = 1
        save_not_allowed = 2
        numbering_error  = 3
        OTHERS           = 4.  
  • Mostrar el resultado del Log:
call function ‘BAL_DSP_LOG_DISPLAY’     
exceptions        
others                 = 1.

Transaccion SLG1

Desde esta transacción podemos ver todos los logs guardados en el sistema:

Esperamos que este post te haya sido de ayuda. Recuerda que puedes dejarnos tus preguntas en comentarios o ponerte en contacto con nuestro equipo de consultores SAP HXM.