一个查看 SAP CRM One Order 运行时生成的应用日志(Application Log)的小工具

简介: 一个查看 SAP CRM One Order 运行时生成的应用日志(Application Log)的小工具

方法参数定义:


方法源代码:

  METHOD GET_ORDER_ERROR_MESSAGE_OPT.
    DATA:
      ls_log_filter TYPE bal_s_lfil,
      ls_extnumber  TYPE bal_s_extn,
      ls_object     LIKE ls_extnumber,
      ls_subobject  LIKE ls_extnumber,
      lt_log_header TYPE balhdr_t,
      lt_allmsgs    TYPE bal_t_msgh,
      ls_msg        TYPE bal_s_msg,
      ls_log        TYPE crmt_odata_task_logs,
      ls_protype    LIKE ls_extnumber.
    FIELD-SYMBOLS: <order_guid>  TYPE crmt_object_guid,
                   <msg_handler> LIKE LINE OF lt_allmsgs,
                   <log_header>  LIKE LINE OF lt_log_header.
    LOOP AT it_order_guid_tab ASSIGNING <order_guid>.
      ls_extnumber-sign = 'I'.
      ls_extnumber-option = 'EQ'.
      ls_extnumber-low = <order_guid>.
      APPEND ls_extnumber TO ls_log_filter-extnumber.
    ENDLOOP.
    ls_object-sign = ls_subobject-sign = ls_protype-sign = 'I' .
    ls_object-option = ls_subobject-option = 'EQ'.
    ls_object-low = 'CRM_DOCUMENT'.
    APPEND ls_object TO ls_log_filter-object.
    ls_subobject-low = 'SINGLE'.
    APPEND ls_subobject TO ls_log_filter-subobject.
    ls_protype-option = 'LE'.
    ls_protype-low = '2'. " priority very important & important
    APPEND ls_protype TO ls_log_filter-probclass.
    CALL FUNCTION 'BAL_DB_SEARCH'
      EXPORTING
        i_s_log_filter     = ls_log_filter
      IMPORTING
        e_t_log_header     = lt_log_header
      EXCEPTIONS
        log_not_found      = 1
        no_filter_criteria = 2.
    CHECK sy-subrc = 0.
    CALL FUNCTION 'BAL_DB_LOAD'
      EXPORTING
        i_t_log_header     = lt_log_header
      IMPORTING
        e_t_msg_handle     = lt_allmsgs
      EXCEPTIONS
        no_logs_specified  = 1
        log_not_found      = 2
        log_already_loaded = 3.
    CHECK sy-subrc = 0.
    DATA: lt_logh  TYPE bal_t_logh,
          ls_mfil  TYPE bal_s_mfil,
          lt_cfil  TYPE bal_t_cfil,
          ls_cfil  LIKE LINE OF lt_cfil,
          lr_field LIKE LINE OF ls_cfil-t_range,
          lr_level LIKE LINE OF ls_mfil-detlevel.
    LOOP AT lt_log_header ASSIGNING <log_header>.
      INSERT <log_header>-log_handle INTO TABLE lt_logh.
    ENDLOOP.
    lr_level-sign   = 'I'.
    lr_level-option = 'LE'.
*   default level - employee, refer to FM CRM_ORDER_VALUE_RANGE_CHECK for detail
    lr_level-low    = '3'.
    APPEND lr_level TO ls_mfil-detlevel.
    ls_cfil-tabname   = 'CRMT_MSG_CONTEXT'.
    ls_cfil-fieldname = 'INACTIVE'.
    lr_field-option = 'EQ'.
    lr_field-sign   = 'I'.
    lr_field-low    = space.
    APPEND lr_field TO ls_cfil-t_range.
    APPEND ls_cfil TO lt_cfil.
    CALL FUNCTION 'BAL_GLB_SEARCH_MSG'
      EXPORTING
        i_t_log_handle         = lt_logh
        i_s_msg_filter         = ls_mfil
        i_t_msg_context_filter = lt_cfil
      IMPORTING
        e_t_msg_handle         = lt_allmsgs
      EXCEPTIONS
        msg_not_found          = 1
        OTHERS                 = 2.
    CHECK sy-subrc = 0.
    LOOP AT lt_allmsgs ASSIGNING <msg_handler>.
      CLEAR: ls_msg.
      CALL FUNCTION 'CRM_MESSAGES_GET_MSG_INFO'
        EXPORTING
          is_msg_handle = <msg_handler>
        IMPORTING
          es_msg        = ls_msg
        EXCEPTIONS
          OTHERS        = 99.
      CHECK sy-subrc = 0.
*     message priority and message type are two different perspective so here we still need to filter by message type
      CHECK ls_msg-msgty = 'E'.
      CLEAR ls_log.
      ls_log-msgid = ls_msg-msgid.
      ls_log-msgno = ls_msg-msgno.
      ls_log-msg_type = ls_msg-msgty.
      READ TABLE lt_log_header ASSIGNING <log_header> WITH KEY log_handle = <msg_handler>-log_handle.
      ASSERT sy-subrc = 0.
      ls_log-header_guid = <log_header>-extnumber.
      MESSAGE ID ls_msg-msgid TYPE ls_msg-msgty NUMBER ls_msg-msgno
              WITH ls_msg-msgv1 ls_msg-msgv2 ls_msg-msgv3 ls_msg-msgv4 INTO ls_log-log_msg.
      APPEND ls_log TO et_messages.
    ENDLOOP.
  ENDMETHOD.


用到的 Function Module BAL_GLB_SEARCH_MSG 介绍:


BAL_GLB_SEARCH_MSG 的参数包括 I_MSGID(消息 ID)、I_MSGNO(消息编号)、I_MSGV1 到 I_MSGV4(消息变量)、E_LOGNUMBER(日志编号)和 E_LOG_HANDLE(日志句柄)。当你使用这个 Function Module 查找消息时,你需要提供消息的 ID 和编号,你也可以选择性地提供消息变量。Function Module 会返回找到的消息的日志编号和日志句柄。


举个例子,假设你在运行某个 SAP 事务时遇到了一个错误消息,这个消息的 ID 是 ZMYMSGID,编号是 001,并且它有一个变量 VAR1。你可以使用 BAL_GLB_SEARCH_MSG 来查找这个消息:

DATA: lv_lognumber TYPE balloghndl,
      lv_log_handle TYPE balloghndl.
CALL FUNCTION 'BAL_GLB_SEARCH_MSG'
  EXPORTING
    i_msgid  = 'ZMYMSGID'
    i_msgno  = '001'
    i_msgv1  = 'VAR1'
  IMPORTING
    e_lognumber  = lv_lognumber
    e_log_handle = lv_log_handle.
IF lv_lognumber IS INITIAL.
  WRITE: '没有找到匹配的消息'.
ELSE.
  WRITE: '找到了匹配的消息,日志编号是 ', lv_lognumber.
ENDIF.


在这个例子中,如果找到了匹配的消息,lv_lognumber 将会被赋予相应的日志编号。如果没有找到匹配的消息,lv_lognumber 将会保持初始值。


BAL_GLB_SEARCH_MSG 是一个非常有用的 Function Module,它可以帮助你在系统中查找特定的消息。但是,你需要注意的是,查找的范围可能会受到你的系统设置的限制。例如,如果你的系统设置为只保留一定时间内的日志,那么你可能无法找到更早期的消息。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
26天前
|
Java
使用Java代码打印log日志
使用Java代码打印log日志
83 1
|
27天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
79 1
|
1月前
|
SQL 关系型数据库 MySQL
MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复
对于MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复。二进制日志是MySQL中记录所有数据库更改操作的日志文件。要进行时间点恢复,您需要执行以下步骤: 1. 确保MySQL配置文件中启用了二进制日志功能。在配置文件(通常是my.cnf或my.ini)中找到以下行,并确保没有被注释掉: Copy code log_bin = /path/to/binary/log/file 2. 在需要进行恢复的时间点之前创建一个数据库备份。这将作为恢复的基准。 3. 找到您要恢复到的时间点的二进制日志文件和位置。可以通过执行以下命令来查看当前的二进制日志文件和位
100 1
|
1月前
|
监控 Serverless 数据库
Serverless 应用引擎常见问题之biphon-education-配置了SLS后一直重启如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
28 5
|
1月前
|
运维 监控 数据挖掘
应用研发平台EMAS产品常见问题之将阿里后台的日志落到我们后台失败如何解决
应用研发平台EMAS(Enterprise Mobile Application Service)是阿里云提供的一个全栈移动应用开发平台,集成了应用开发、测试、部署、监控和运营服务;本合集旨在总结EMAS产品在应用开发和运维过程中的常见问题及解决方案,助力开发者和企业高效解决技术难题,加速移动应用的上线和稳定运行。
|
1月前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
【Shell 命令集合 系统管理 】Linux 自动轮转(log rotation)日志文件 logrotate命令 使用指南
51 0
|
5天前
|
监控 JavaScript Java
|
6天前
|
Java
log4j异常日志过滤规则配置
log4j异常日志过滤规则配置
15 0
|
10天前
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断2
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
17 0
|
10天前
|
机器学习/深度学习 前端开发 数据挖掘
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
39 0