SAP ABAP 的几种调试方法
介绍
对于程序员来时,BUG 是不可避免的,因此 DEBUG 就很重要了。调试(Debug)是查找 SAP 一些事务发生错误原因的方法(例如,查找字段中某个值更新的原因,或者确定用户在事务处理过程中收到错误、警告或异常终止消息的原因)。如果无法通过功能方法(如检查定制或主数据)确定根本原因,则必须进行调试。
本文将介绍 ABAP 的调试概念以及用于调试的各种工具和技术。
如何触发调试模式
如果不知道前台操作在哪能开启调试模式,可以在执行任何事务时在命令提示符中输入事务 /h
,有时称为 OK CODE,接着按下 Enter
键激活调试器。
控制按钮
- 单步(
F5
键)。单击此图标时,调试器控件将移动到调试中的下一行代码。如果下一行是对另一个程序(例如,功能模块)的调用,则控制转移到该程序。 - 执行(
F6
键)。单击此图标时,调试器控件仅移动到同一程序中的下一行代码,而不进入在单击此图标的代码行中调用的函数模块或程序的代码。 - 返回(
F7
键)。单击此图标时,调试器控件将返回到调用程序。当您处于循环中或从主程序调用的功能模块或程序中,并且想要返回到主程序时,此图标很有用。 - 运行/继续(
F8
键)。单击此图标时,调试器控件将移动到下一个断点集(如果有)。否则,将关闭调试,并完全执行程序。
字段显示
在调试期间,字段显示显示字段列表。如果单击程序中的任何字段,调试器将显示该字段的当前值或内容。如果出于某种原因(例如在测试期间),您想为字段使用不同的值,则可以使用更改图标 更改字段值,但调试中的此访问权限通常仅授予开发人员,在生产系统中永远不会授予。(见下文)
.
表格显示
现在我们需要转向如何查看表格。为什么?假设您正在查看销售订单或购买要求…等等 这些项目通常存储在所谓的内部表中。这不要与像VBAK或VBAP这样的数据库表混淆。数据库表存储在后端DBMS(Oracle,DB2,甚至HANA)上,并且是持久的。虽然内部表不是持久的,并且具有内存中当前LUW的保质期。
要查看内部表格的当前内容或行,请双击该图标。我知道你需要知道如何添加、改变或删除行,所以这时你就会使用对象服务图标。 根据你正在看的东西(字段、数据库表、内部表…等),如果你点击这个图标,那么与你正在处理的对象类型有关的服务将可供你使用。例如,你可以添加、改变或删除一行。你还可以通过使用图标将内部表导出到 EXCEL。
断点
在调试器中,或者在编辑器(SE80/SE38/SE37/SE24)中,都可以为某一行代码设置断点。断点的图标看起来像这样。相反,这个图标显示了你在一个对象的执行过程中的位置。比如说,你用/h来触发调试器,每次单步走一行。那么这个图标就会随着执行而继续向下移动。
当你双击行号左边的一行代码时,你将设置一个 BREAK-POINT 。然后当你运行事务或程序时,调试器将在那行特定的代码处停止,并弹出一个你现在已经很熟悉的调试器屏幕。(见下图)
设置断点的方法不止一种。我个人最喜欢的一种方式是使用菜单路径 BREAKPOINTS->BREAKPOINT AT
。这里我们有很多选项,可以根据命令、函数、方法…等设置动态断点。一种使用方法是选择``BREAKPOINT AT语句,并输入
AUTHORITY_CHECK` 命令。
这将使对象在即将执行此命令的任何时候停止。然后当你停止时,用 F6 来执行。然后使用字段更改功能,将 SY-SUBRC 的内容改为零,如果它不是零的话。这是一个很好的方法来绕过和使用你可能没有授权的 SAP 事务。请记住,这样做的时候一定要小心,而且在生产中不能这样做。
调用堆栈
调试器用户界面中的 DESKTOP 2 标签显示 ABAP 调用栈。它允许你切换到每个堆栈级别的上下文,并通过打开 ABAP 编辑器导航到源代码,以便在一个单独的窗口中开始对代码进行深入分析(只需双击!)。SAP NetWeaver 2004s 的新功能还包括显示屏幕(Dynpro)堆栈的能力。更重要的是,你可以显示ABAP和屏幕堆栈的组合,以找出在哪个 ABAP 层调用了哪个屏幕,哪个屏幕调用了哪个 ABAP 模块。
你可以通过双击堆栈类型栏中的图标,在编辑器中从每个堆栈行导航到相应的源行
- 点赞
- 收藏
- 关注作者
评论(0)