文章目录
- sap 应用日志-Application Log
- 概念
- 事务代码
- 函数
- 创建程序
- 显示配置文件
- 运行结果
- 弹出式
- 全屏式
- 程序剖析
- 清空日志
- 创建日志
- 模拟数据
- 添加日志消息
- 显示日志
- BAL_DSP_LOG_DISPLAY-显示内存消息
- 全部程序
sap 应用日志-Application Log
概念
SAP 应用日志(Application Log)是用于创建、保存和分析系统消息的工具。应用程序事件可以集中记录在应用程序日志中。
应用程序日志提供了一个基础结构(应用程序日志是由多个表组成的表结构),用于收集日志中的消息和异常,保存,读取和删除数据库中的日志并显示它们。
应用程序日志记录了应用程序执行的进度。系统日志记录系统事件,我们可以使用应用程序日志记录特定于应用程序的事件,其优点是系统范围的标准化和统一的事件日志记录,便于分析。
应用程序日志旨在临时存储消息。应该间隔删除日志(例如每周批量删除日志)以避免数据库负载过高。
事务代码
函数
创建程序
显示配置文件
运行结果
弹出式
全屏式
程序剖析
清空日志
CALL FUNCTION 'BAL_GLB_MEMORY_REFRESH' .
创建日志
DATA i_s_log TYPE bal_s_log.
DATA e_log_handle TYPE balloghndl.
CALL FUNCTION 'BAL_LOG_CREATE'
EXPORTING
i_s_log = i_s_log
IMPORTING
e_log_handle = e_log_handle
EXCEPTIONS
log_header_inconsistent = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
模拟数据
*DATA WORK_PROCESS_GROUP TYPE BAPI_ORDER_CNTRL_PARAM-WORK_PROC_GROUP.
*DATA WORK_PROCESS_MAX TYPE BAPI_ORDER_CNTRL_PARAM-WORK_PROC_MAX.
DATA return TYPE bapiret2.
DATA orders TYPE STANDARD TABLE OF bapi_order_key.
DATA detail_return TYPE STANDARD TABLE OF bapi_order_return.
*DATA APPLICATION_LOG TYPE STANDARD TABLE OF BAPI_ORDER_APPLICATION_LOG.
DATA order LIKE LINE OF orders .
order-order_number = '200200'.
APPEND order TO orders.
CALL FUNCTION 'BAPI_PROCORD_CLOSE'
* EXPORTING
* WORK_PROCESS_GROUP = 'COWORK_BAPI'
* WORK_PROCESS_MAX = 99
IMPORTING
return = return
TABLES
orders = orders
detail_return = detail_return
* APPLICATION_LOG = APPLICATION_LOG
.
我这里是故意没有给生产订单加前导0,没有办法关闭订单,所以一定是错误的。
添加日志消息
DATA i_s_msg TYPE bal_s_msg.
LOOP AT detail_return INTO DATA(s_detail_return).
i_s_msg-msgty = s_detail_return-type.
i_s_msg-msgid = s_detail_return-id.
i_s_msg-msgno = s_detail_return-number.
i_s_msg-msgv1 = s_detail_return-message_v1.
i_s_msg-msgv2 = s_detail_return-message_v2.
i_s_msg-msgv3 = s_detail_return-message_v3.
i_s_msg-msgv4 = s_detail_return-message_v4.
CALL FUNCTION 'BAL_LOG_MSG_ADD'
EXPORTING
i_log_handle = e_log_handle
i_s_msg = i_s_msg
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDLOOP.
显示日志
DATA e_s_display_profile TYPE bal_s_prof.
"是没有树状的,弹出的
CALL FUNCTION 'BAL_DSP_PROFILE_POPUP_GET'
* EXPORTING
* START_COL = 5
* START_ROW = 5
* END_COL = 87
* END_ROW = 25
IMPORTING
e_s_display_profile = e_s_display_profile
.
"是没有树状的,全屏的
CALL FUNCTION 'BAL_DSP_PROFILE_NO_TREE_GET'
IMPORTING
e_s_display_profile = e_s_display_profile
.
BAL_DSP_LOG_DISPLAY-显示内存消息
CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
EXPORTING
i_s_display_profile = e_s_display_profile
EXCEPTIONS
profile_inconsistent = 1
internal_error = 2
no_data_available = 3
no_authority = 4
OTHERS = 5
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
全部程序
*&---------------------------------------------------------------------*
*& Report Z_TEST_LOG_LHY
*&---------------------------------------------------------------------*
*& Description:测试应用日志 Application Log
*&---------------------------------------------------------------------*
REPORT z_test_log_lhy.
"清空日志
CALL FUNCTION 'BAL_GLB_MEMORY_REFRESH' .
"创建日志
DATA i_s_log TYPE bal_s_log.
DATA e_log_handle TYPE balloghndl.
CALL FUNCTION 'BAL_LOG_CREATE'
EXPORTING
i_s_log = i_s_log
IMPORTING
e_log_handle = e_log_handle
EXCEPTIONS
log_header_inconsistent = 1
OTHERS = 2
.
IF sy-subrc <> 0.
* Implement suitable error handling here
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
*DATA WORK_PROCESS_GROUP TYPE BAPI_ORDER_CNTRL_PARAM-WORK_PROC_GROUP.
*DATA WORK_PROCESS_MAX TYPE BAPI_ORDER_CNTRL_PARAM-WORK_PROC_MAX.
DATA return TYPE bapiret2.
DATA orders TYPE STANDARD TABLE OF bapi_order_key.
DATA detail_return TYPE STANDARD TABLE OF bapi_order_return.
*DATA APPLICATION_LOG TYPE STANDARD TABLE OF BAPI_ORDER_APPLICATION_LOG.
DATA order LIKE LINE OF orders .
order-order_number = '200200'.
APPEND order TO orders.
CALL FUNCTION 'BAPI_PROCORD_CLOSE'
* EXPORTING
* WORK_PROCESS_GROUP = 'COWORK_BAPI'
* WORK_PROCESS_MAX = 99
IMPORTING
return = return
TABLES
orders = orders
detail_return = detail_return
* APPLICATION_LOG = APPLICATION_LOG
.
"添加日志
DATA i_s_msg TYPE bal_s_msg.
LOOP AT detail_return INTO DATA(s_detail_return).
i_s_msg-msgty = s_detail_return-type.
i_s_msg-msgid = s_detail_return-id.
i_s_msg-msgno = s_detail_return-number.
i_s_msg-msgv1 = s_detail_return-message_v1.
i_s_msg-msgv2 = s_detail_return-message_v2.
i_s_msg-msgv3 = s_detail_return-message_v3.
i_s_msg-msgv4 = s_detail_return-message_v4.
CALL FUNCTION 'BAL_LOG_MSG_ADD'
EXPORTING
i_log_handle = e_log_handle
i_s_msg = i_s_msg
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDLOOP.
"显示文件
DATA e_s_display_profile TYPE bal_s_prof.
"是没有树状的,弹出的
CALL FUNCTION 'BAL_DSP_PROFILE_POPUP_GET'
* EXPORTING
* START_COL = 5
* START_ROW = 5
* END_COL = 87
* END_ROW = 25
IMPORTING
e_s_display_profile = e_s_display_profile
.
*"是没有树状的,全屏的
* CALL FUNCTION 'BAL_DSP_PROFILE_NO_TREE_GET'
* IMPORTING
* e_s_display_profile = e_s_display_profile
* .
"日志,BAL_DSP_LOG_DISPLAY-应用程序日志:全屏日志输出
CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
EXPORTING
i_s_display_profile = e_s_display_profile
EXCEPTIONS
profile_inconsistent = 1
internal_error = 2
no_data_available = 3
no_authority = 4
OTHERS = 5
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.