zoukankan      html  css  js  c++  java
  • (转载)如何跟踪一个报错消息

    在SAP项目中,经常会遇到一个比较复杂的程序报出个错误消息(有时会是一个标准SAP程序报错),但是不知道到底是哪段ABAP代码出错了。

    下面通过一个简单的例子,来介绍6种方法来定位报message的ABAP程序。

    比如在SE38中输入一个不存在的程序ZSDFSF,点击显示按钮,在下面的状态栏会弹出一个消息,如下:

    1, 利用Where use list功能

    举例说明,双击状态栏上的消息,找到message class ID: DS, number 017,如下图,

    SE91,选中对应的消息,点击where use list按钮

    一般会找到很多程序,

    这时候只能靠人工过滤,找到正确的出错位置,

    然后设置断点,再运行一下程序,确认一下。

    2, 设置sy-msgid的watch point断点

    在命令栏输入/h,回车激活debug模式,

    创建watch point如下:

    程序运行后就会自动在message ID ‘DS' ,message号017处停下来。

    创建watch point的详细界面如下:

    3, 设置ABAP Command类型断点

    在debug模式下,创建一个abap command类型的断点,

    输入的abap命令是关键字message,如下:

    程序运行是就会在每一个执行到的message语句停下。然后进一步定位错误。

    4, 源代码查询

    通过SAP标准程序RS_ABAP_SOURCE_SCAN可以搜索到使用到相关message的abap程序。

    SE38所在的package是SEDT,

    运行RS_ABAP_SOURCE_SCAN,在package SEDT中查找关键字message 017,

    然后手动分析结果,找到出错的abap程序。

    也可以使用CODE_SCANNER来查询,

    5, 使用SAT工具

    Tcode SAT,创建一个新的SAT 变式,在变式屏幕中,选择“Aggregation – None”选项,

    然后在SAT主屏幕中输入SE38,选择上面创建的变式,运行,

    在SE38中输入一个不存在的程序名,运行后,会显示跟踪结果,在结果集中查找message关键字,在Hit list中双击行就能跳到具体的ABAP代码处。

    附:[工具]SAT性能分析使用教程

    6, 使用ST05工具

    使用ST05跟踪SE38后,在结果屏幕中,选中object Name是PROGDIR的行,点击display ABAP Call Location按钮,

    在定位到的774行程序附近就能找到相关的报出message的代码:

    果然在813行找到了message。

    注:为什么要在ST05结果屏幕中找PROGDIR,是因为sap系统中,所有的程序名都保存在表PROGDIR中,在PROGDIR中找不到就会报错。。。

  • 相关阅读:
    BZOJ 3205 [Apio2013]机器人 ——斯坦纳树
    BZOJ 3782 上学路线 ——动态规划 Lucas定理 中国剩余定理
    HDU 1423 Greatest Common Increasing Subsequence ——动态规划
    BZOJ 3309 DZY Loves Math ——莫比乌斯反演
    POJ 1038 Bugs Integrated, Inc. ——状压DP
    POJ 3693 Maximum repetition substring ——后缀数组
    POJ 2699 The Maximum Number of Strong Kings ——网络流
    POJ 2396 Budget ——有上下界的网络流
    BZOJ 4650 [Noi2016]优秀的拆分 ——后缀数组
    源码安装python
  • 原文地址:https://www.cnblogs.com/tangcy1110/p/9120843.html
Copyright © 2011-2022 走看看