作为一个ABAPer一定要掌握两个技能一个是baidu google的技能,另外一个就是debug的技能,下面就总结一下debug的方法和小技巧。
1, SE38中设置断点
程序运行前可以在ABAP编辑器中设置断点,如下:
会话断点-在同一登录会话不同窗口都有效,用户注销后消失
外部断点-用户注销后再登录还是有效,但只针对同一用户有效
程序运行中也可以设置断点:此断点又叫调试断点,仅在本次运行时有效,但是点击保存按钮后断点变成会话断点,本次会话的所有窗口都有效,只有在退出登录后消失
2, 代码断点
如果不愿意反复设定断点,也可以通过代码一劳永逸的设定断点,语法如下:
BREAK 'user1'."仅会在用户user1运行程序时有效,常用
BREAK-POINT. "针对所有的用户有效,慎用
可以在break 或break-point前调用FM C160_BREAK_POINT,然后在su3里对当前账户做如下设置:
这样只有在ESP为‘X'的时候,break断点才停,ESP为空的时候,break断点不会停,方便调试。
3, Breakpoint at
在程序运行时进入debug模式后,可以通过菜单Breakpoints-->Breakpoint at 设定更加多样化的断点,比如,到某个特定form停下,到某个特定语句,某个message停下,等等,下面一一说明:
3.1 语句断点
比如设定Select语句断点,
设定后,所有select语句处都会出现断点
3.2 form断点
3.3 函数断点
程序会在指定函数停下,
3.4 类方法断点
到指定类方法断点会停下,
类分三种,全局类,程序中的类,类中类,
3.5 异常断点
这个会在解决一些疑难杂症时用到,比如说要查找程序运行到何处时发生异常,
3.6 消息断点
这个也是一个常用的断点,有时一些业务顾问会叫abap跟踪程序,看看某某错误消息是在什么地方报出来的,
还有其他写breakpoint at,这里就不一一累述,大家自己研究一下吧,很简单
4, watch break point
同样也是在进入Debug模式下设置的一种断点,当某变量满足一定条件时停下,比如在loop中循环到第4圈时停下,
可以设置sy-tabix = 4,如下: 点击字典按钮可以查看一些常用的例子,供参考。
可以在tab页 break./watchpoints查看所有断点,包括watch point
以上。
发表评论