Abap 如何检查正在运行的程序的状态

Abap 如何检查正在运行的程序的状态,abap,sap-basis,Abap,Sap Basis,我假设我有一个ABAP程序,运行时间很长。所以我想检查程序此刻在做什么,执行哪一行代码,或者程序当时正在写入哪些表 我认为有一个事务来检查正在运行的程序。我说得对吗?如果我是,那是什么?您可以使用SM50概述在相当有限的范围内检查ABAP流程的状态。如果程序在后台进程中运行(并且您具有相应的权限),则可以从事务SM37调试后台作业,您要做的是转到进程概述 事务SM66显示当前系统的所有活动进程。如果您有多个应用程序服务器,这尤其有用 SM50将显示您登录的当前应用程序服务器的所有进程。要查看可用

我假设我有一个ABAP程序,运行时间很长。所以我想检查程序此刻在做什么,执行哪一行代码,或者程序当时正在写入哪些表


我认为有一个事务来检查正在运行的程序。我说得对吗?如果我是,那是什么?

您可以使用
SM50
概述在相当有限的范围内检查ABAP流程的状态。如果程序在后台进程中运行(并且您具有相应的权限),则可以从事务
SM37

调试后台作业,您要做的是转到进程概述

事务SM66显示当前系统的所有活动进程。如果您有多个应用程序服务器,这尤其有用

SM50将显示您登录的当前应用程序服务器的所有进程。要查看可用的应用程序服务器,请转到SM51

从流程概述(SM66)中,您可以单击流程并单击“调试”按钮

同样,在SM50中,您可以从菜单中选择
管理->程序->调试
,调试程序

您可以从流程概述中项目的详细信息中识别程序正在执行的流程


如果您能够使用有限的数据集测试程序,那么您可能要做的另一件事是通过运行时分析(事务SE30,或更新系统中的SAT)运行程序。这将使您能够更轻松地识别处理过程中的瓶颈。

如果您特别关注数据库访问,则可以使用事务ST05启动SQL跟踪。当您显示跟踪时,它将向您显示执行的SQL语句,并提供有关这些语句的一些信息,例如所用的时间、返回的记录数以及使用的索引。它还允许您查看在源代码中调用语句的位置


ST05是一个系统范围的跟踪,但您可以按用户名/事务/程序/表过滤跟踪,以缩小结果范围。还请注意,一次只能有一个跟踪在系统中运行,因此,请确保在完成后将其关闭,以便下一个人可以使用它。

如果程序正在进行数据库更新,则应谨慎使用调试。调试器在不可预测的时间执行提交工作,如果程序依赖于定义良好的工作单元,则可能会导致不一致。新调试器在这方面应该更好,不应该执行不可预测的提交,但始终建议谨慎。如果您关心性能,事务SE30/SAT是非常有用的非侵入性事务。