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
SAP SLG1 日志API相关推荐
- SAP全日志管理系统(堡垒机)
一.系统概述: SAP全日志安全管理系统(简称AMS-L系统)是一款面向SAP ERP 系统的网络安全管理工具,提供基于SAP系统用户业务行为的常态化监管,是对SAP现有日志体系的有效增强管理. AM ...
- SAP 错误日志的调查
有时候启动或操作sap会出现故障,只是察看sap用户当前目录下的日志文件可能不得要领,此时有必要察看work目录下的一些trace. 以Linux系统为例,其他的也差不多. instance说明 如下 ...
- 循序渐进看Java web日志跟踪(2)-Java日志API认识
接触过Java的朋友应该都会知道,java的开源框架百花齐放,实现同样的功能,总能找到几个强大的开源框架来进行选择.在日志方面,Java同样不逊色.除了JDK本身自带的简单的日志工具,java还有如l ...
- 部署在SAP Cloud Platform CloudFoundry环境的应用如何消费SAP Leonardo机器学习API
Jerry的前一篇文章 如何在Web应用里消费SAP Leonardo的机器学习API 里介绍的例子是Neo测试环境的Web应用消费sandbox版本的机器学习API,url如下: https://s ...
- SAP Commerce Cloud WCMS 里的 home 页面和 SAP Spartacus Page API 返回的数据比较
You can only create new components in the WCMS Page View perspective. In the Live Edit perspective, ...
- SAP Spartacus public API的概念 - index.ts
看一个具体的例子: https://github.com/SAP/spartacus/issues/11730 backport of #11744 to maintanance branch As ...
- 关于SAP Spartacus在服务器端渲染模式和SAP Commerce Cloud API白名单的问题
We are configuring our Spartacus application with SSR in SAP Commerce Cloud. Also we used the IP Fil ...
- SAP Data Intelligence API执行出错的排错之道
使用HTTP GET访问SAP Data Intelligence graph API时,遇到500 internal server error的错误: 返回SAP Data Intelligence ...
- SAP Data Intelligence API如何获得Access Token - no authentication means found
试图使用postman访问SAP Data Intelligence graph API时,遇到401 unauthorized的错误: no authentication means found A ...
最新文章
- 微服务限流Sentinel讲解(四)
- Activity 与ListActivity的区别
- 1.几大开发模型区别与联系
- SpringBoot-EnvironmentPostProcessor
- 一道『easy』等级的力扣题,我写了两个小时的笔记...
- spark性能调优05-troubleshooting处理
- Linux一些基本概念
- rust里面的柴油桶有什么用_用了橡木桶的红酒就一定好吗?什么样的酒才适合橡木桶?...
- VSS2005 使用方法
- LTE下行DC子载波为0的原因解释
- windows镜像_Windows 系统镜像下载地址
- 数据库原理mysql课堂超星尔雅_超星尔雅数据库原理网课答案
- 基于python的科比职业生涯命中率分析
- 甲骨文裁员事件的思考
- 晶体三极管共射放大电路(共射基本放大电路)的研究与设计
- Linux环境,使用convert命令批量转换JPG图片——缩小图片尺寸
- python中string什么意思_Python:string是什么意思
- 精约而不简单 极速迅雷只为下载而生
- 记一次ARM-鲲鹏服务器读写parquet报错解决过程
- Android webview和HTML的JS交互