SAP Application log


SAP Application log

Hata veya olağandışı birşeyler olana kadar çoğu developer atladığı ama yeri geldiğinde hayat kurtaran loglama ile SAP kendi Application Logları tuttuğu bir yapı bulunmakta.

Kullanımı oldukça basit ve entegrasyonu çok hızlı bir yapı.

SLG0 işlem kodu üzerinden log objesi oluşturuyoruz.



Loglamak istediğimiz noktada,
“Create log

DATA: gv_log_handle TYPE balloghndl.   "Application Log: Log Handle
DATA: ls_log        TYPE bal_s_log.    "Log header data 

* define some header data of this log
ls_log
-extnumber  = 'Application Log Demo'.
ls_log
-object     = 'ZSAPUI5'.
ls_log
-subobject  = ''.
ls_log
-aldate     = sy-datum.
ls_log
-altime     = sy-uzeit.
ls_log
-aluser     = sy-uname.
ls_log
-alprog     = sy-repid. 

   CALL FUNCTION 'BAL_LOG_CREATE'
      
EXPORTING
        i_s_log                 
= ls_log
      
IMPORTING
        e_log_handle            
= gv_log_handle
      
EXCEPTIONS
        log_header_inconsistent 
= 1
        
OTHERS                  = 2.

    
IF sy-subrc <> 0.
      
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
          
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    
ENDIF.

    
DATA: l_s_msg TYPE bal_s_msg.
* define data of message for Application Log
    l_s_msg
-msgty     = sy-msgty.
    l_s_msg
-msgid     = sy-msgid.
    l_s_msg
-msgno     = sy-msgno.
    l_s_msg
-msgv1     = sy-msgv1.
    l_s_msg
-msgv2     = sy-msgv2.
    l_s_msg
-msgv3     = sy-msgv3.
    l_s_msg
-msgv4     = sy-msgv4.
*add message
    
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.

    
IF sy-subrc <> 0.
      
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
          
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    
ENDIF.


*save db
    
CALL FUNCTION 'BAL_DB_SAVE'
      
EXPORTING
        i_save_all       
= 'X'
      
EXCEPTIONS
        log_not_found    
= 1
        save_not_allowed 
= 2
        numbering_error  
= 3
        
OTHERS           = 4.

    
IF sy-subrc <> 0.
      
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
         
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    
ENDIF.

Logları SLG1 işlem kodu üzerinden analizleyebilirsiniz.








SAP Application log’da ayrıca,

Loglar search edebilmek için,

DATA: gr_object     TYPE bal_s_obj.
DATA: gr_extnumber  TYPE bal_s_extn.
DATA: gs_log_filter TYPE bal_s_lfil.
DATA: gt_log_header TYPE balhdr_t.

* create a filter with all relevant criteria:
gr_object
-sign   = 'I'.
gr_object
-option = 'EQ'.
gr_object
-low    = 'ZTEST'.
APPEND gr_object TO gs_log_filter-object.

gr_extnumber
-sign   = 'I'.
gr_extnumber
-option = 'EQ'.
gr_extnumber
-low    = 'Application Log Demo'.
APPEND gr_extnumber TO gs_log_filter-extnumber.

* search on DB for these logs
CALL FUNCTION 'BAL_DB_SEARCH'
  
EXPORTING
    i_s_log_filter 
= gs_log_filter
  
IMPORTING
    e_t_log_header 
= gt_log_header
  
EXCEPTIONS
    LOG_NOT_FOUND      
= 1
    NO_FILTER_CRITERIA 
= 2.

IF sy-subrc <> 0.
    
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

  

Logları okumak için,

DATA: P_NUMBER_OF_LOGS LIKE SY-TABIX.
* Log header data
DATA: BEGIN OF P_HEADER_DATA_TAB OCCURS 0.
INCLUDE STRUCTURE BALHDR.
DATA: END OF P_HEADER_DATA_TAB.
* Log parameters
DATA: BEGIN OF P_HEADER_PARA_TAB OCCURS 0.
INCLUDE STRUCTURE BALHDRP.
DATA: END OF P_HEADER_PARA_TAB.
* Log messages
DATA: BEGIN OF P_MESSAGE_TAB OCCURS 0.
INCLUDE STRUCTURE BALM.
DATA: END OF P_MESSAGE_TAB.
* Message parameters
DATA: BEGIN OF P_MESSAGE_PARA_TAB OCCURS 0.
INCLUDE STRUCTURE BALMP.
DATA: END OF P_MESSAGE_PARA_TAB.

CALL FUNCTION 'APPL_LOG_READ_DB'
  
EXPORTING
    OBJECT          
= 'ZTEST'
    SUBOBJECT       
= 'ZTEST01'
    EXTERNAL_NUMBER 
= 'Application Log Demo'
  
IMPORTING
    NUMBER_OF_LOGS  
= P_NUMBER_OF_LOGS
  
TABLES
    HEADER_DATA        
= P_HEADER_DATA_TAB
    HEADER_PARAMETERS  
= P_HEADER_PARA_TAB
    MESSAGES           
= P_MESSAGE_TAB
    MESSAGE_PARAMETERS 
= P_MESSAGE_PARA_TAB.

Hiç yorum yok:

Yorum Gönder