SAP R/3 提供标准ABAP SQL 跟踪工具。使用T-Code:ST05 可以进入追踪设定画面:
在Trace Modes 区域中选择需要在SAP R/3 Server 上trace 的范围:
SQL Trace: 追踪该AP Server 上已过滤的SQL 语句。
Enqueue Trace: 追踪Enqueue Server 上的队列。
RFC Trace: 追踪该AP Server 上RFC 行为。
Buffer Trace: 追踪该AP Server 上Buffer 中的行为。
这里若要追踪SQL 则只要选中SQL Trace。然后在Trace Requests 区域中点选 Trace on with Filter 进行输出过滤:
这里仅追踪SBA 账号对于MB03 所有的SQL操作。也可以填入程序名称甚至AP Server 上的进程代号来追踪。还可以在Table name 区域选定包含/排除的表名。点击对钩之后即启动追踪。
在需要查看追踪结果时需要先停止追踪(Trace off) 然后再点击Display trace 显示如下:
需要重新对结果进行过滤(因为SAP R/3只有一个或两个Log 文件,系统不会自动分解对应程序的Log 信息)。Trace modes 只选择SQL Trace 。SQL Trace Period 系统已自动设置好无需更改。User name 可以自行设定,这里设定空值表示任何账号(因为开始追踪时仅过滤一个账号,所以这里无需进一步过滤)。Objectname 保留系统设定(这样可以排除追踪Log 本身所产生的Log 信息)。
Duration: 执行这条操作所消耗的时间,单位是微秒。
1微秒=1/1000000秒。
Objectname: 指示该条操作的对象,对于SQL Trace 一般就是Table name。
Op.: 指示该条操作的类型。其中对应OPEN的条目对SQL 性能具有很大的参考价值。
Statement: 指示该条操作所下的SQL 语句(不完全和ABAP 语句中的SQL 一样)
点击SQL 语句,可以显示该语句的所有信息,包括条件变量(使用@PXXX 字符替换)。甚至按F5 可以直接跳转到ABAP 语句,方便大家修改调试。
注意事项:
1. 进入ST05 追踪后可以关闭该界面继续执行其他操作,而不会影响到ST05 的执行。
2. 因为ST05 不会随界面的关闭而结束,那么必须在使用完ST05 后手动停止追踪,否则会持续追踪,直到SAP DB LOG 满为止。这样将会导致系统故障。
3.使用追踪看到的SQL 语句是ABAP SQL 经解释后的版本,可能其中ABAP SQL 将会被自动分解或优化。可以参照ABAP code 进行比对。