SAP Crear Log para la SLG1


  1.      Crear los objetos en la SLG0
  2.      Crear los mensajes en la SE91
  3.      Implementar el código

 PERFORM create_log USING    c_ciw_log c_ciw_sublog
                       
CHANGING lv_log_handle.
*&---------------------------------------------------------------------*

*&      Form  CREATE_LOG

*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_C_OBJECT  text
*      -->P_C_SUBOBJECT  text

*      <--P_GV_LOG_HANDLE  text

*---------------------------------------------------------------*

FORM
 
create_log  USING    p_object      TYPE balobj_d
                          p_subobject   
TYPE balsubobj
                 
CHANGING p_log_handle  TYPE balloghndl.

  
DATAls_header     TYPE bal_s_log.

  ls_header
-object     p_object.
  ls_header
-subobject  p_subobject.
  ls_header
-aldate     sy-datum.
  ls_header
-altime     sy-uzeit.
  ls_header
-aluser     sy-uname.
  ls_header
-altcode    sy-tcode.
  ls_header
-alprog     sy-repid.


  
CALL FUNCTION 'BAL_LOG_CREATE'
    
EXPORTING
      i_s_log                 
ls_header
    
IMPORTING
      e_log_handle            
p_log_handle
    
EXCEPTIONS
      log_header_inconsistent 
1
      
OTHERS                  2.

ENDFORM                   " CREATE_LOG




Añadimos el mensaje al Log Se realiza el contenido del programa y se graban los mensajes.

PERFORM new_message USING lv_log_handle 'E' '025' 'ZXXX'  ls_sociedades-sociedad space space space 4.


*&---------------------------------------------------------------------*
*&      Form  NEW_MESSAGE
*&--------------------------------------------------------------------
*      -->P_GV_LOG_HANDLE  text
*      -->P_0090   text
*      -->P_0091   text
*      -->P_0092   text
*      -->P_LS_SOCIEDADES_SOCIEDAD  text
*      -->P_SPACE  text
*      -->P_SPACE  text
*      -->P_SPACE  text
*      -->P_4      text
*----------------------------------------------------------------------*


FORM new_message USING     p_log_handle TYPE balloghndl
                             p_mtype
                             p_msgno
                             p_msgid
                             p_msgv1
                             p_msgv2
                             p_msgv3
                             p_msgv4
                             p_probc
.

  
DATAls_msg   TYPE bal_s_msg.
  
DATAl_msg_was_logged TYPE boolean.

  
CLEAR ls_msg.
  ls_msg
-msgty p_mtype"Tipo de Mensaje
  ls_msg
-msgno p_msgno"Numero de Mensaje
  ls_msg
-msgid p_msgid.  "Clase de Mensaje
  ls_msg
-msgv1 p_msgv1.   "Variables de Mensaje
  ls_msg
-msgv2 p_msgv2.
  ls_msg
-msgv3 p_msgv3.
  ls_msg
-msgv4 p_msgv4.
  
ls_msg-probclass p_probc 

 "1 muy import, 2 import, 3 medio, 4  Info adicional, space Otros

Añadimos el mensaje al Log

  

CALL FUNCTION 'BAL_LOG_MSG_ADD'
    
EXPORTING
      i_log_handle     
p_log_handle
      i_s_msg          
ls_msg
    
IMPORTING
      e_msg_was_logged 
l_msg_was_logged
    
EXCEPTIONS
      log_not_found    
1
      msg_inconsistent 
2
      log_is_full      
3
      
OTHERS           = 4.



ENDFORM.                    " NEW_MESSAGE



Por último añadimos el mensaje al Log


PERFORM grabar_log  USING  lv_log_handle.


*&---------------------------------------------------------------------*
*&      Form  GRABAR_LOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*


FORM grabar_log  USING  p_log_handle TYPE balloghndl.

  
DATAlt_log_handles  TYPE bal_t_logh.

  
INSERT p_log_handle INTO TABLE lt_log_handles.

  
CALL FUNCTION 'BAL_DB_SAVE'
    
EXPORTING
      i_save_all       
'X'
      i_in_update_task 
'X'
      i_t_log_handle   
lt_log_handles
    
EXCEPTIONS
      log_not_found    
1
      save_not_allowed 
= 2
      numbering_error  
3
      
OTHERS           4.

  
COMMIT WORK.

ENDFORM.                    " GRABAR_LOG


Cabe destacar que para el Objeto y subojeto los podemos crear en la Tx: SLG0 para la organización del Log.

Comentarios

  1. Uso exactamente las mismas funciones para un programa que me lanza funciones z en modo batch (in update task por ejemplo) pero no me carga los mensajes de esas ejecuciones. Alguna idea por que puede ser?. Le estoy pasando el handle como parámetro a esas funciones y realizo el SAVE cuando finaliza cada una de sus ejecuciones.

    ResponderEliminar
  2. Hola Jorge , encantado!!

    Yienes que poner esto después de salvar el LOG

    METHOD save_log.

    DATA: lt_log_handles TYPE bal_t_logh.

    INSERT iv_log_handle INTO TABLE lt_log_handles.

    CALL FUNCTION 'BAL_DB_SAVE'
    EXPORTING
    i_save_all = 'X'
    i_in_update_task = 'X'
    i_t_log_handle = lt_log_handles
    EXCEPTIONS
    log_not_found = 1
    save_not_allowed = 2
    numbering_error = 3
    OTHERS = 4.

    COMMIT WORK.

    *-- Mostrar el LOG
    CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
    EXCEPTIONS
    profile_inconsistent = 1
    internal_error = 2
    no_data_available = 3
    no_authority = 4
    OTHERS = 5.
    ENDMETHOD.


    Un saludo!

    ResponderEliminar

Publicar un comentario