*&---------------------------------------------------------------------*
*&  包括                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相关推荐

  1. SAP全日志管理系统(堡垒机)

    一.系统概述: SAP全日志安全管理系统(简称AMS-L系统)是一款面向SAP ERP 系统的网络安全管理工具,提供基于SAP系统用户业务行为的常态化监管,是对SAP现有日志体系的有效增强管理. AM ...

  2. SAP 错误日志的调查

    有时候启动或操作sap会出现故障,只是察看sap用户当前目录下的日志文件可能不得要领,此时有必要察看work目录下的一些trace. 以Linux系统为例,其他的也差不多. instance说明 如下 ...

  3. 循序渐进看Java web日志跟踪(2)-Java日志API认识

    接触过Java的朋友应该都会知道,java的开源框架百花齐放,实现同样的功能,总能找到几个强大的开源框架来进行选择.在日志方面,Java同样不逊色.除了JDK本身自带的简单的日志工具,java还有如l ...

  4. 部署在SAP Cloud Platform CloudFoundry环境的应用如何消费SAP Leonardo机器学习API

    Jerry的前一篇文章 如何在Web应用里消费SAP Leonardo的机器学习API 里介绍的例子是Neo测试环境的Web应用消费sandbox版本的机器学习API,url如下: https://s ...

  5. 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, ...

  6. SAP Spartacus public API的概念 - index.ts

    看一个具体的例子: https://github.com/SAP/spartacus/issues/11730 backport of #11744 to maintanance branch As ...

  7. 关于SAP Spartacus在服务器端渲染模式和SAP Commerce Cloud API白名单的问题

    We are configuring our Spartacus application with SSR in SAP Commerce Cloud. Also we used the IP Fil ...

  8. SAP Data Intelligence API执行出错的排错之道

    使用HTTP GET访问SAP Data Intelligence graph API时,遇到500 internal server error的错误: 返回SAP Data Intelligence ...

  9. SAP Data Intelligence API如何获得Access Token - no authentication means found

    试图使用postman访问SAP Data Intelligence graph API时,遇到401 unauthorized的错误: no authentication means found A ...

最新文章

  1. 微服务限流Sentinel讲解(四)
  2. Activity 与ListActivity的区别
  3. 1.几大开发模型区别与联系
  4. SpringBoot-EnvironmentPostProcessor
  5. 一道『easy』等级的力扣题,我写了两个小时的笔记...
  6. spark性能调优05-troubleshooting处理
  7. Linux一些基本概念
  8. rust里面的柴油桶有什么用_用了橡木桶的红酒就一定好吗?什么样的酒才适合橡木桶?...
  9. VSS2005 使用方法
  10. LTE下行DC子载波为0的原因解释
  11. windows镜像_Windows 系统镜像下载地址
  12. 数据库原理mysql课堂超星尔雅_超星尔雅数据库原理网课答案
  13. 基于python的科比职业生涯命中率分析
  14. 甲骨文裁员事件的思考
  15. 晶体三极管共射放大电路(共射基本放大电路)的研究与设计
  16. Linux环境,使用convert命令批量转换JPG图片——缩小图片尺寸
  17. python中string什么意思_Python:string是什么意思
  18. 精约而不简单 极速迅雷只为下载而生
  19. 记一次ARM-鲲鹏服务器读写parquet报错解决过程
  20. Android webview和HTML的JS交互

热门文章

  1. Welcome email
  2. 优酷土豆CEO:打造爆款产品的3个关键步骤
  3. CF17E:Palisection——题解
  4. C#创建https请求并使用pfx证书
  5. DockerCon 2016 深度解读: Citrix 服务发现解决方案 —— Nitrox
  6. RemoteIE 开发者可跨平台使用IE测试网页
  7. 润乾集算报表多样性数据源之动态SQL传递
  8. WCF学习笔记之可靠会话
  9. C++类、函数、指针
  10. Oracle数据库—— 事务处理与并发控制