ABAP 中的断点分为静态和动态两种.
一. 静态断点(Static Breakpoints) 是程序员在程序中用代码设定的, 当程序运行到该断点时,会进入调试状态.
语法:
break-point.
也可以将其标号以明确其位置.
break-point 1.
...
break-point 2.
当然也可以针对具体某个用户设定断定.
break username.
二. 动态断点.
在ABAP编辑器中有两个按钮用于设置断点, 第一个(set/deletesession
breakpoint)用于设置临时断点, 该断点只有在当前Session 才有效,若退出, 该断点则被自动取消.
第二个(set/delete external breakpoint)用于设置外部断点, 该断点在当前 Session 有效,但在SAP退出后,重新登录运行程序时不会再执行该断点功能, 而是在原来的代码处留下一个标签, 必须手动删除,而且也有时间的限制.
第二个(set/delete external breakpoint)用于设置外部断点, 该断点在当前 Session 有效,但在SAP退出后,重新登录运行程序时不会再执行该断点功能, 而是在原来的代码处留下一个标签, 必须手动删除,而且也有时间的限制.
三. 调试方法.
F5 为单步执行, 程序逐步执行, 若遇到子程序或函数, 则会转入该函数中.
F6 只在本程序中单步执行, 遇到子程序或函数时会直接执行, 而不进入函数内部.
F7 会一次性执行完当前代码所在的过程, 如子程序和函数, 若在主程序中, 则直接执行完该程序.
F8 则是一次性执行完全部程序, 直到遇到下一个断点时才终止.
Watchpoint 按钮.
用于设置在程序执行中遇到某个条件时才进入 Debug 状态.
设置好断点后, 按F7 或F8 程序会一直执行到Watchpoint条件满足的地方.
四. 查看程序执行中的参数.
在程序Debug状态下能够查看当前程序中的所有参数的值.
而且还可以更改这些参数的值.
在内表数据浏览窗口的右侧还有一个工具栏, 可以通过该工具实现对内表数据的控制, 修改, 删除, 下载.
五. 实现调试功能的其它方法.
上面讲的是最基本的一些Debug方法.
现在再讲些其它一些常用方法.
1. background job 的debug方法.
输入SM37, 找出想要Debug的job, 在job前打勾, 已经完成或是Release都可以. 在输入栏输入
JDBG.
进入debug.
2. 在程序运行界面进入debug.
在程序的运行界面, 控制框输入 /h
3. 正在运行的程序进入debug.
输入SM50, 找出正在运行的程序, 然后进入Debug.
4. Call Function in update 的 debug.
我们在 update task的 function里面设断点的话, 正常是进不去debug的.
我们在 debugger 里面路径 setting->Display/changedebugger settings.
这里面会有 update debugging 选上以后, 我们运行到update task的 function后会自动开辟新的 session 进行debug.
5. sm13 error message 的 debug.
有些时候我们在程序运行的时候会报一些update的 error message.
进入 sm13 可以找到相应的item 就可以进行 debug.
6. RFC 的debug.
在RFC所在的系统, 用RFC连接所用的用户账号去设断点.
然后再进行debug.
7. 针对一些弹出窗口的debug.
可能有时候我们程序运行过程中会出现一些弹出窗口, 没有输入 /h 的地方, 但我们想 debug ,这时怎么办?
新建一个 txt 文档, 内容如下: 当我们需要 debug 某个窗口的时候直接把它个 txt 文档插入对应窗口即可实现debug.
[FUNCTION]
Command=/H
Title=Debugger
Type=SystemCommand
8. 为 debug 命令创建快捷键.