假设我有一个运行时间很长的ABAP程序。所以我想检查一下程序此刻在做什么,哪一行代码正在执行,或者程序正在向哪个表写入。
我认为有一个事务来检查正在运行的程序。我说的对吗?如果我是那是什么?
您要做的是转到流程概述。
Transaction SM66显示当前系统的所有活动进程。如果您有多个应用程序服务器,这尤其有用。
SM50将显示您所登录的当前应用程序服务器的所有进程。查看可用的应用服务器,请登录SM51。
从进程概述(在SM66中)中,您可以单击进程并单击"调试"按钮。
同样,在SM50中,您可以从菜单中选择Administration -> Program -> Debugging
来调试程序。
您可以从进程概述中项目的详细信息中识别程序正在执行的进程。
如果您能够使用有限的数据集测试您的程序,那么您可能想要做的另一件事是通过运行时分析(事务SE30,或新系统中的SAT)运行它。这将允许您更容易地识别处理中的瓶颈。
您可以使用SM50
概览在相当有限的范围内检查ABAP进程的状态。如果程序在后台进程中运行(并且您有适当的权限),您可以从事务SM37
中调试后台作业。
如果您特别关注DB访问,您可以使用事务ST05启动SQL Trace。当您显示跟踪时,它将向您显示执行的SQL语句并提供一些信息,例如执行的时间、返回的记录数量以及使用了哪些索引。它还允许您查看在源代码中调用语句的位置。
ST05是一个系统范围的跟踪,但是您可以通过用户名/事务/程序/表过滤跟踪以缩小结果。还要注意,一次只能运行一个跟踪,因此在完成跟踪后务必将其关闭,以便下一个人可以使用它。