云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

腾讯云_网站建设评估_怎么申请

小七 141 0

ABAP调试器是一个强大的工具,有助于在运行时检查您的ABAP代码。

除了常见的和基本的功能,如单步执行代码和检查变量、字段符号和引用的值外,它还提供了一些有用的功能,可以简化和缩短调试会话。并非所有人都知道这些特性。

在这篇博文中,我将展示我个人的最爱。

在调用堆栈内部进行深入调试

除了在应用程序级别调试您自己的自定义源代码或面向业务的代码外,可能还需要不时深入到调用堆栈中。有时您只能在调试异步执行的更新任务或系统程序时发现错误。

系统程序通常由SAP自己提供,您不应将自己的程序归类为此类程序。系统代码被认为是相对技术性的,不包含任何业务逻辑。因此,专注于业务逻辑的开发人员通常不需要/不想对此进行调试。但是,云服务器厂商,有时您的调试会话可能会以系统程序结束。

为了使用ABAP调试器深入系统代码,您必须事先激活系统调试。在"设置"菜单中选择"系统调试开/关"菜单项。

激活"系统调试"可以访问通常看不到的源代码,因此有助于调查问题。另一方面,您需要处理不断增长的调用堆栈,因为所有系统程序都是可见的。通常系统代码是在后台执行的,不会引起您的注意。

每当您处理使用异步更新任务的事务或报告(例如,持久化业务数据)时,您可能会遇到更新任务中执行的代码产生的错误消息。此类错误通常出现在SAP GUI中,告诉您"更新已终止"。

为了检查出了什么问题,您可以激活更新调试。如果启用了更新调试,则在执行更新任务后,ABAP调试器将打开,并允许您检查程序流。

以成本中心的更改为例。我们打开事务处理KS02,选择一个演示成本中心,然后打开它的主数据。让我们调整一下描述。在单击保存之前,我们在左上角的事务代码输入字段中输入"/h",然后按回车键。底部显示绿色成功消息"调试已打开"。

单击保存后,调试器打开,显示当前ABAP程序的PAI/PBO模块。为了激活更新调试,我们按照菜单路径设置->更改调试器配置文件/设置打开调试器设置。在此对话框中,我们激活更新调试并确认。

按F8跳过当前调试器会话。ABAP服务器继续处理当前的ABAP程序,该程序准备并将更新任务移交给更新处理程序。一旦它们被执行,调试器将再次打开。

回到成本中心更改示例,我们将进入函数模块KOSTL\u WRITE\u文档。根据其源代码,它负责计算与此成本中心主数据更改相关的更改文档。

在大多数情况下,一个业务流程将执行多个更新任务(但更改成本中心相对容易)。让我们弄清楚如何在运行时找到它们。

查看调用堆栈,我们可以看到窗体例程VB\u V2\u NORMAL。

在导航到此代码之前,我们必须激活系统调试(见上一章)。

在这个表单例程中,我们可以看到内部表VBMOD\u TABL包含所有要处理的功能模块。

使用更新调试,您可以发现更新任务中执行的功能模块中的错误。即使您没有遇到任何错误,也可能会很有趣地看到引擎盖下发生了什么。

在运行时影响程序行为

当您在调试器中检查ABAP程序的流时,您的目标是只关注其中的某一部分,自助建站模板,您正在调查的特定案例可能只在某些情况下发生(例如,某些变量具有某些值)。在这种情况下,您必须花时间修改所有内容,以便调试器到达您感兴趣的代码段。

避免这种努力(时间就是金钱),您可以利用名为Goto Statement的简单但非常有价值的功能。

假设调试器当前位于给定屏幕截图的第32行,右键单击要继续的行号,然后选择"转到语句"。因此,跳过中间的行,即不执行,处理将继续进行。

请注意,此功能可能被滥用:用户可以跳过预期和有意义的授权检查,因此,执行不允许执行的操作。通常,建议在生产环境中关闭此功能(即不授权任何人)。

使断点更强大

断点允许开发人员指定调试器应停止的代码行。

通常,您选择一个特定代码(例如程序z中的x行),因为您要检查程序围绕这段代码运行。除了这些动态断点之外,您还可以利用特殊的动态断点和条件断点来简化调试体验。

假设我们需要识别在程序流期间执行的所有授权检查。我们知道AUTHORITY-CHECK是相应的ABAP关键字。我们如何解决这一挑战?

首先,我们可以在调试器中执行ABAP程序,手动跟踪程序流程。在浏览了所有的方法、功能模块等之后,我们记下了所有的授权检查。显然,这种方法非常耗时,而且容易出错,因为您永远不知道是否遗漏了调用堆栈深处的某段代码。