SAP SLG1 日志API
生活随笔
收集整理的這篇文章主要介紹了
SAP SLG1 日志API
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
*&---------------------------------------------------------------------*
*& ?包括 ? ? ? ? ? ? ? ?ZLOG
*&---------------------------------------------------------------------*
******************************* 調用演示 ********************************
*REPORT zwtest.
*
*"首先通過TCode:SLG0,創建日志對象和子對象
*"在代碼中加入ZLOG的包含文件,調用日志API進行日志記錄
*"通過TCode:SLG1查看日志
*"通過TCode:SLG2刪除日志
*
*"首先初始化日志,傳入參數為日志的子對象,
*"主對象在Include文件中寫死了,一般只建立一個主對象即可,在主對象下可建立多個子對象
*PERFORM init_log USING 'UNKNOWN_LOG' '單據ID'.
*
*"記錄日志,可傳STRING類型參數
*PERFORM log USING 'S' 'Hello World'.
*PERFORM log USING 'W' 'Hello World'.
*PERFORM log USING 'E' 'Hello World'.
*
*"最后保存日志到數據庫
*PERFORM save_log.
*
*INCLUDE zlog."添加Include引用
******************************* 調用演示 ********************************
DATA: gv_log_handle TYPE balloghndl."Application Log: Log Handle GUID
*&---------------------------------------------------------------------*
*& ? ? ?Form ?init_log
*&---------------------------------------------------------------------*
* ? ? ? 初始化日志
*----------------------------------------------------------------------*
* ? ? ?-->p_subobject ?事務碼SLG0,在對象ZRIGOL下建立的子對象
* ? ? ?-->p_extnumber ?外部標識符(單據號),可作為檢索條件
*----------------------------------------------------------------------*
FORM init_log USING p_subobject
? ? ? ? ? ? ? ? ? ? p_extnumber.
? DATA: ls_msg TYPE bal_s_msg.
? DATA: ls_log TYPE bal_s_log."日志標題數據
? ls_log-object ? ? = 'ZRIGOL'."主對象
? ls_log-subobject ?= p_subobject."子對象
? ls_log-extnumber ?= p_extnumber."外部標識符
? 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.
? ELSE.
? ? ls_msg-msgty = 'S'.
? ? ls_msg-msgid = '00'.
? ? ls_msg-msgno = '001'.
? ? ls_msg-msgv1 = '▼▼▼▼▼▼▼▼▼▼'.
? ? CONCATENATE sy-datum+0(4) '-' sy-datum+4(2) '-' sy-datum+6(2) ' ' sy-uzeit+0(2) ':' sy-uzeit+2(2) ':' sy-uzeit+4(2) INTO ls_msg-msgv2.
? ? ls_msg-msgv3 = ' 開始'.
? ? ls_msg-msgv4 = '▼▼▼▼▼▼▼▼▼▼'.
? ? PERFORM log3 USING ls_msg.
? ENDIF.
ENDFORM. ? ? ? ? ? ? ? ? ? ?"init_log
*&---------------------------------------------------------------------*
*& ? ? ?Form ?log3
*&---------------------------------------------------------------------*
* ? ? ? 向日志里添加消息(3)
*----------------------------------------------------------------------*
FORM log3 USING p_msg TYPE bal_s_msg.
? IF gv_log_handle IS INITIAL.
? ? PERFORM init_log USING 'UNKNOWN_LOG' ''.
? ENDIF.
? CALL FUNCTION 'BAL_LOG_MSG_ADD'
? ? EXPORTING
? ? ? i_log_handle ? ? = gv_log_handle
? ? ? i_s_msg ? ? ? ? ?= p_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.
ENDFORM. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"log3
*&---------------------------------------------------------------------*
*& ? ? ?Form ?log2
*&---------------------------------------------------------------------*
* ? ? ? 向日志里添加消息(2)
*----------------------------------------------------------------------*
* ? ? ?-->MSGTY 消息類型 S E W
* ? ? ?-->MSGV1 日志消息1
* ? ? ?-->MSGV2 日志消息2
* ? ? ?-->MSGV3 日志消息3
* ? ? ?-->MSGV4 日志消息4
*----------------------------------------------------------------------*
FORM log2 USING p_msgty TYPE symsgty
? ? ? ? ? ? ? ? value(p_msgv1)
? ? ? ? ? ? ? ? value(p_msgv2)
? ? ? ? ? ? ? ? value(p_msgv3)
? ? ? ? ? ? ? ? value(p_msgv4).
? DATA: ls_msg TYPE bal_s_msg.
? ls_msg-msgty = p_msgty.
? ls_msg-msgid = '00'.
? ls_msg-msgno = '001'.
? ls_msg-msgv1 = p_msgv1.
? ls_msg-msgv2 = p_msgv2.
? ls_msg-msgv3 = p_msgv3.
? ls_msg-msgv4 = p_msgv4.
? CONDENSE ls_msg-msgv1 NO-GAPS.
? CONDENSE ls_msg-msgv2 NO-GAPS.
? CONDENSE ls_msg-msgv3 NO-GAPS.
? CONDENSE ls_msg-msgv4 NO-GAPS.
? PERFORM log3 USING ls_msg.
ENDFORM. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"log2
*&---------------------------------------------------------------------*
*& ? ? ?Form ?log
*&---------------------------------------------------------------------*
* ? ? ? 向日志里添加消息
*----------------------------------------------------------------------*
* ? ? ?-->P_MSGTY ?消息類型 S E W
* ? ? ?-->P_MSG ? ?日志消息
*----------------------------------------------------------------------*
FORM log USING p_msgty TYPE symsgty
? ? ? ? ? ? ? ?value(p_msg).
? DATA: lv_times TYPE int4,
? ? ? ? lv_length TYPE int4,
? ? ? ? lv_laststr TYPE char200.
? DATA: ls_msg TYPE bal_s_msg.
? CONDENSE p_msg NO-GAPS.
? lv_length = STRLEN( p_msg ).
? lv_times = lv_length DIV 200 + 1.
? DO lv_times TIMES.
? ? IF sy-index <> lv_times.
? ? ? CLEAR: ls_msg.
? ? ? ls_msg-msgty = p_msgty.
? ? ? ls_msg-msgid = '00'.
? ? ? ls_msg-msgno = '001'.
? ? ? ls_msg-msgv1 = p_msg+0(50).
? ? ? ls_msg-msgv2 = p_msg+50(50).
? ? ? ls_msg-msgv3 = p_msg+100(50).
? ? ? ls_msg-msgv4 = p_msg+150(50).
? ? ? PERFORM log3 USING ls_msg.
? ? ? SHIFT p_msg LEFT BY 200 PLACES.
? ? ELSE.
? ? ? CLEAR: lv_laststr.
? ? ? lv_laststr = p_msg.
? ? ? CLEAR: ls_msg.
? ? ? ls_msg-msgty = p_msgty.
? ? ? ls_msg-msgid = '00'.
? ? ? ls_msg-msgno = '001'.
? ? ? ls_msg-msgv1 = lv_laststr+0(50).
? ? ? ls_msg-msgv2 = lv_laststr+50(50).
? ? ? ls_msg-msgv3 = lv_laststr+100(50).
? ? ? ls_msg-msgv4 = lv_laststr+150(50).
? ? ? PERFORM log3 USING ls_msg.
? ? ENDIF.
? ENDDO.
ENDFORM. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"log
*&---------------------------------------------------------------------*
*& ? ? ?Form ?log_bapi
*&---------------------------------------------------------------------*
* ? ? ? 記錄BAPI日志
*----------------------------------------------------------------------*
* ? ? ?-->P_BAPIRET ?BAPI標準返回參數
*----------------------------------------------------------------------*
FORM log_bapi USING p_bapiret TYPE bapiret2.
? DATA: ls_msg TYPE bal_s_msg.
? ls_msg-msgty = p_bapiret-type.
? ls_msg-msgid = p_bapiret-id.
? ls_msg-msgno = p_bapiret-number.
? ls_msg-msgv1 = p_bapiret-message_v1.
? ls_msg-msgv2 = p_bapiret-message_v2.
? ls_msg-msgv3 = p_bapiret-message_v3.
? ls_msg-msgv4 = p_bapiret-message_v4.
? PERFORM log3 USING ls_msg.
ENDFORM. ? ? ? ? ? ? ? ? ? ?"log_bapi
*&---------------------------------------------------------------------*
*& ? ? ?Form ?save_log
*&---------------------------------------------------------------------*
* ? ? ? 保存日志到數據庫
*----------------------------------------------------------------------*
FORM save_log.
? DATA: ls_msg TYPE bal_s_msg.
? DATA: lt_log_handle TYPE bal_t_logh.
? IF gv_log_handle IS INITIAL.
? ? EXIT.
? ENDIF.
? ls_msg-msgty = 'S'.
? ls_msg-msgid = '00'.
? ls_msg-msgno = '001'.
? ls_msg-msgv1 = '▲▲▲▲▲▲▲▲▲▲'.
? CONCATENATE sy-datum+0(4) '-' sy-datum+4(2) '-' sy-datum+6(2) ' ' sy-uzeit+0(2) ':' sy-uzeit+2(2) ':' sy-uzeit+4(2) INTO ls_msg-msgv2.
? ls_msg-msgv3 = ' 結束'.
? ls_msg-msgv4 = '▲▲▲▲▲▲▲▲▲▲'.
? PERFORM log3 USING ls_msg.
? APPEND gv_log_handle TO lt_log_handle.
? CALL FUNCTION 'BAL_DB_SAVE'
? ? EXPORTING
* ? ? I_CLIENT ? ? ? ? ? ? ? = SY-MANDT
* ? ? I_IN_UPDATE_TASK ? ? ? = ' '
* ? ? I_SAVE_ALL ? ? ? ? ? ? = ' '
? ? ? i_t_log_handle ? ? ? ? = lt_log_handle
* ? IMPORTING
* ? ? E_NEW_LOGNUMBERS ? ? ? =
? ? 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.
ENDFORM. ? ? ? ? ? ? ? ? ? ?"save_log 與50位技術專家面對面20年技術見證,附贈技術全景圖
*& ?包括 ? ? ? ? ? ? ? ?ZLOG
*&---------------------------------------------------------------------*
******************************* 調用演示 ********************************
*REPORT zwtest.
*
*"首先通過TCode:SLG0,創建日志對象和子對象
*"在代碼中加入ZLOG的包含文件,調用日志API進行日志記錄
*"通過TCode:SLG1查看日志
*"通過TCode:SLG2刪除日志
*
*"首先初始化日志,傳入參數為日志的子對象,
*"主對象在Include文件中寫死了,一般只建立一個主對象即可,在主對象下可建立多個子對象
*PERFORM init_log USING 'UNKNOWN_LOG' '單據ID'.
*
*"記錄日志,可傳STRING類型參數
*PERFORM log USING 'S' 'Hello World'.
*PERFORM log USING 'W' 'Hello World'.
*PERFORM log USING 'E' 'Hello World'.
*
*"最后保存日志到數據庫
*PERFORM save_log.
*
*INCLUDE zlog."添加Include引用
******************************* 調用演示 ********************************
DATA: gv_log_handle TYPE balloghndl."Application Log: Log Handle GUID
*&---------------------------------------------------------------------*
*& ? ? ?Form ?init_log
*&---------------------------------------------------------------------*
* ? ? ? 初始化日志
*----------------------------------------------------------------------*
* ? ? ?-->p_subobject ?事務碼SLG0,在對象ZRIGOL下建立的子對象
* ? ? ?-->p_extnumber ?外部標識符(單據號),可作為檢索條件
*----------------------------------------------------------------------*
FORM init_log USING p_subobject
? ? ? ? ? ? ? ? ? ? p_extnumber.
? DATA: ls_msg TYPE bal_s_msg.
? DATA: ls_log TYPE bal_s_log."日志標題數據
? ls_log-object ? ? = 'ZRIGOL'."主對象
? ls_log-subobject ?= p_subobject."子對象
? ls_log-extnumber ?= p_extnumber."外部標識符
? 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.
? ELSE.
? ? ls_msg-msgty = 'S'.
? ? ls_msg-msgid = '00'.
? ? ls_msg-msgno = '001'.
? ? ls_msg-msgv1 = '▼▼▼▼▼▼▼▼▼▼'.
? ? CONCATENATE sy-datum+0(4) '-' sy-datum+4(2) '-' sy-datum+6(2) ' ' sy-uzeit+0(2) ':' sy-uzeit+2(2) ':' sy-uzeit+4(2) INTO ls_msg-msgv2.
? ? ls_msg-msgv3 = ' 開始'.
? ? ls_msg-msgv4 = '▼▼▼▼▼▼▼▼▼▼'.
? ? PERFORM log3 USING ls_msg.
? ENDIF.
ENDFORM. ? ? ? ? ? ? ? ? ? ?"init_log
*&---------------------------------------------------------------------*
*& ? ? ?Form ?log3
*&---------------------------------------------------------------------*
* ? ? ? 向日志里添加消息(3)
*----------------------------------------------------------------------*
FORM log3 USING p_msg TYPE bal_s_msg.
? IF gv_log_handle IS INITIAL.
? ? PERFORM init_log USING 'UNKNOWN_LOG' ''.
? ENDIF.
? CALL FUNCTION 'BAL_LOG_MSG_ADD'
? ? EXPORTING
? ? ? i_log_handle ? ? = gv_log_handle
? ? ? i_s_msg ? ? ? ? ?= p_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.
ENDFORM. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"log3
*&---------------------------------------------------------------------*
*& ? ? ?Form ?log2
*&---------------------------------------------------------------------*
* ? ? ? 向日志里添加消息(2)
*----------------------------------------------------------------------*
* ? ? ?-->MSGTY 消息類型 S E W
* ? ? ?-->MSGV1 日志消息1
* ? ? ?-->MSGV2 日志消息2
* ? ? ?-->MSGV3 日志消息3
* ? ? ?-->MSGV4 日志消息4
*----------------------------------------------------------------------*
FORM log2 USING p_msgty TYPE symsgty
? ? ? ? ? ? ? ? value(p_msgv1)
? ? ? ? ? ? ? ? value(p_msgv2)
? ? ? ? ? ? ? ? value(p_msgv3)
? ? ? ? ? ? ? ? value(p_msgv4).
? DATA: ls_msg TYPE bal_s_msg.
? ls_msg-msgty = p_msgty.
? ls_msg-msgid = '00'.
? ls_msg-msgno = '001'.
? ls_msg-msgv1 = p_msgv1.
? ls_msg-msgv2 = p_msgv2.
? ls_msg-msgv3 = p_msgv3.
? ls_msg-msgv4 = p_msgv4.
? CONDENSE ls_msg-msgv1 NO-GAPS.
? CONDENSE ls_msg-msgv2 NO-GAPS.
? CONDENSE ls_msg-msgv3 NO-GAPS.
? CONDENSE ls_msg-msgv4 NO-GAPS.
? PERFORM log3 USING ls_msg.
ENDFORM. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"log2
*&---------------------------------------------------------------------*
*& ? ? ?Form ?log
*&---------------------------------------------------------------------*
* ? ? ? 向日志里添加消息
*----------------------------------------------------------------------*
* ? ? ?-->P_MSGTY ?消息類型 S E W
* ? ? ?-->P_MSG ? ?日志消息
*----------------------------------------------------------------------*
FORM log USING p_msgty TYPE symsgty
? ? ? ? ? ? ? ?value(p_msg).
? DATA: lv_times TYPE int4,
? ? ? ? lv_length TYPE int4,
? ? ? ? lv_laststr TYPE char200.
? DATA: ls_msg TYPE bal_s_msg.
? CONDENSE p_msg NO-GAPS.
? lv_length = STRLEN( p_msg ).
? lv_times = lv_length DIV 200 + 1.
? DO lv_times TIMES.
? ? IF sy-index <> lv_times.
? ? ? CLEAR: ls_msg.
? ? ? ls_msg-msgty = p_msgty.
? ? ? ls_msg-msgid = '00'.
? ? ? ls_msg-msgno = '001'.
? ? ? ls_msg-msgv1 = p_msg+0(50).
? ? ? ls_msg-msgv2 = p_msg+50(50).
? ? ? ls_msg-msgv3 = p_msg+100(50).
? ? ? ls_msg-msgv4 = p_msg+150(50).
? ? ? PERFORM log3 USING ls_msg.
? ? ? SHIFT p_msg LEFT BY 200 PLACES.
? ? ELSE.
? ? ? CLEAR: lv_laststr.
? ? ? lv_laststr = p_msg.
? ? ? CLEAR: ls_msg.
? ? ? ls_msg-msgty = p_msgty.
? ? ? ls_msg-msgid = '00'.
? ? ? ls_msg-msgno = '001'.
? ? ? ls_msg-msgv1 = lv_laststr+0(50).
? ? ? ls_msg-msgv2 = lv_laststr+50(50).
? ? ? ls_msg-msgv3 = lv_laststr+100(50).
? ? ? ls_msg-msgv4 = lv_laststr+150(50).
? ? ? PERFORM log3 USING ls_msg.
? ? ENDIF.
? ENDDO.
ENDFORM. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?"log
*&---------------------------------------------------------------------*
*& ? ? ?Form ?log_bapi
*&---------------------------------------------------------------------*
* ? ? ? 記錄BAPI日志
*----------------------------------------------------------------------*
* ? ? ?-->P_BAPIRET ?BAPI標準返回參數
*----------------------------------------------------------------------*
FORM log_bapi USING p_bapiret TYPE bapiret2.
? DATA: ls_msg TYPE bal_s_msg.
? ls_msg-msgty = p_bapiret-type.
? ls_msg-msgid = p_bapiret-id.
? ls_msg-msgno = p_bapiret-number.
? ls_msg-msgv1 = p_bapiret-message_v1.
? ls_msg-msgv2 = p_bapiret-message_v2.
? ls_msg-msgv3 = p_bapiret-message_v3.
? ls_msg-msgv4 = p_bapiret-message_v4.
? PERFORM log3 USING ls_msg.
ENDFORM. ? ? ? ? ? ? ? ? ? ?"log_bapi
*&---------------------------------------------------------------------*
*& ? ? ?Form ?save_log
*&---------------------------------------------------------------------*
* ? ? ? 保存日志到數據庫
*----------------------------------------------------------------------*
FORM save_log.
? DATA: ls_msg TYPE bal_s_msg.
? DATA: lt_log_handle TYPE bal_t_logh.
? IF gv_log_handle IS INITIAL.
? ? EXIT.
? ENDIF.
? ls_msg-msgty = 'S'.
? ls_msg-msgid = '00'.
? ls_msg-msgno = '001'.
? ls_msg-msgv1 = '▲▲▲▲▲▲▲▲▲▲'.
? CONCATENATE sy-datum+0(4) '-' sy-datum+4(2) '-' sy-datum+6(2) ' ' sy-uzeit+0(2) ':' sy-uzeit+2(2) ':' sy-uzeit+4(2) INTO ls_msg-msgv2.
? ls_msg-msgv3 = ' 結束'.
? ls_msg-msgv4 = '▲▲▲▲▲▲▲▲▲▲'.
? PERFORM log3 USING ls_msg.
? APPEND gv_log_handle TO lt_log_handle.
? CALL FUNCTION 'BAL_DB_SAVE'
? ? EXPORTING
* ? ? I_CLIENT ? ? ? ? ? ? ? = SY-MANDT
* ? ? I_IN_UPDATE_TASK ? ? ? = ' '
* ? ? I_SAVE_ALL ? ? ? ? ? ? = ' '
? ? ? i_t_log_handle ? ? ? ? = lt_log_handle
* ? IMPORTING
* ? ? E_NEW_LOGNUMBERS ? ? ? =
? ? 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.
ENDFORM. ? ? ? ? ? ? ? ? ? ?"save_log 與50位技術專家面對面20年技術見證,附贈技術全景圖
總結
以上是生活随笔為你收集整理的SAP SLG1 日志API的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何使用应用日志(Application
- 下一篇: EAI概述