ABAP调试
ABAP 开发系列(02): ABAP Development Workbench 介绍(下)- ABAP 调试器
开发程序,调试器是必不可少的工具,而ABAP调试器与一般的IDE调试器也有些差异。
ABAP调试器的主要内容有:
1. 进入Debugger模式的方法;
2. Single Step/Execute/Return/Contiune 的用法;
3. Watchpoint 的使用方法;
4. 调试器的其他功能;
8.1 进入Debugger模式的方法
8.1.1 通过内部断点
我们可以通过ABAP编辑器中工具栏 的会话断点按钮,
将光标停在待调试的程序行后,点击设置断点按钮,然后直接执行,程序就会停在我们设置断点的位置:
提到内部断点,我们不得不说下另外一种断点 外部断点。
顾名思义,外部断点用于我们提供给外部接口时的程序调试断点
例如:Call RFC、Web Dynpro for Java。而且只限于Call RFC的公共用户,且只保持2个小时有效。
外部断点位于内部断点的右边,添加外部断点后,断点标志是以头像的形式出现:
激活调试后,当我们运行时,系统会新开一个调试会话窗口,也就是我们的调试界面:
8.1.2 通过 '/h' 命令(一般常用于生产环境)
如果不想在程序里面去设置断点进行调试的话,我们进入程序运行初始屏幕后(输入T-Code后的屏幕界面),
在命令域里面输入 '/h', 来激活调试:
当激活调试成功时,系统下边栏会弹出相关提示:
这时当我们执行程序,则会进入到调试界面,只不过这里默认的断点位置是从程序的开头开始。
8.1.3 通过系统菜单
在操作事务的屏幕界面上,也可以通过系统菜单(系统 -> 实用程序 -> 调试ABAP)激活调试:
8.2 Single Step/Execute/Return/Continue 的用法
调试界面工具栏上,我们可以看到这样几个工具按钮:
从左到右分别是:
Single Step(单步执行/F5)、Execute(执行/F6)、Return(返回/F7)、Continue(继续执行/F8)、Watchpoint(创建查看点/ Shift+F4)、Layout(布局)
8.2.1 Single Step 用法
Single Step 也是我们常说的单步调试(快捷键:F5),这种方式都是以单步跟踪调试每一条程序;
可以通过Single Step 来调试查看标准程序的操作。
8.2.2 Execute 用法
执行调试(快捷键:F6),这种方式是调试中最常用的方式;
对我们当前屏幕上的程序进行跟踪,当遇到Subroutine或者Function时,则会直接执行过去。
8.2.3 Return 用法
返回(快捷键:F7),返回并退出当前程序块,也就是当我们进入到某个程序块(例如:Subroutine、Function)时,
我们需要跟踪的信息已经确认完成了,想退出这个程序块,继续跟踪后面的程序,则可以通过Return方式,退出当前程序块。
8.2.4 Continue 用法
继续执行(快捷键:F8),当我们进入断点并确认相关信息后,可以通过Continue(F8)直接运行程序到结束 或 者遇到下一个断点为止。
这也是一个常用的调试方式。
一般情况下,上面几种方式都会综合使用,以达到事半功倍的作用。
而在调试过程中,我们可以通过双击变量,然后,系统会帮我们将需要跟踪的变量、内表等信息内容显示在屏幕的右边界面:
8.3 Watchpoint 的使用方法
在调试过程中,当数据量很庞大,特别是在Loop中遍历时,需要找到其中特定跟踪的数据,这时候只能看着程序发懵。
为了解决这种困惑,SAP为我们提供了 Watchpoint 功能。
在工具栏中,点击创建 Watchpoint按钮(Shift+F4),输入你要跟踪的变量名称,并在条件中输入符合的条件:
注意:输入条件时,变量名称必须是大写的。
创建成功后,直接按F8(Continue方法),程序会继续执行并停在变量符合你输入条件的位置:
而且,当到达位置时,界面下边栏也会对变量给出提示:
8.4. 调试器的其他功能
8.4.1 修改变量值
在调试过程中,可以修改、删除变量值(包括内表),来节省调试时间。
双击待监控的变量,将其添加进监控区域后,再次双击该变量:
点击变量旁边的 "铅笔" ,进入到编辑状态:
编辑你需要的值之后,敲回车即可。
内表的操作,则都是通过服务工具来完成,查看内表明细内容时,选中待修改或删除的记录行后,点击右边栏的"小锤子":
弹出操作框:
在Change Table Content 菜单下,可选择操作:
- 1. Change Row Content 修改内表行记录
- 2. Insert Row(Index) 插入新纪录
- 3. Append Row(APPEND) 追加新纪录
- 4. Delete Rows 删除选择行记录(可包括多条记录)
- 5. Delete Table (FREE) 删除释放整个内容记录
选择相应的工具操作即可。
8.4.2 定位到光标指定位置
调试过程中,如果不留意跳过你要跟踪的程序段,这时候就很纠结,可能需要重新跑一次程序,这样既浪费时间又浪费精力。
有个方法,可以避免这种情况:直接将光标定位在你调试过的程序,
然后在菜单栏上选择:Debugger -> Goto statement 或者快捷键:Shift + F12
这样程序则会从当前位置:
倒回到光标指定位置,这样就可以重新跟踪调试:
需要注意的是:指定位置后,应将之前得到结果的变量值或内表清掉,否则会出现重复记录。
8.4.3 导出内表到Excel文件
调试过程中,从数据库中取出的数据量非常庞大,在内表中要找到我们待跟踪的记录,会非常麻烦。
解决办法就是:将整个内表数据导出到Excel文件。
在内表维护工具中,找到Save to Local File,然后选择保存成 .xls 格式即可:
ABAP调试的更多相关文章
- SAP技术专家的ABAP调试器培训材料
首先弄清楚ABAP Classic调试器和新调试器的区别: Classic debugger: (1) Static breakpoint a. BREAK-POINT : non-user spec ...
- ABAP断点调试
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- ABAP宏的调试
我们都知道高级语言宏一般是无法调试的.但是ABAP的宏例外. 比如我写了下面一段宏,名为insert_table. 执行这段代码,调试器会在第23行停下来. ABAP调试器里有个工具可以用于宏的调试, ...
- Jerry带您了解Restful ABAP Programming模型系列之三:云端ABAP应用调试
Jerry的Restful ABAP Programming模型介绍系列的前两篇文章: 30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用 Jerry带 ...
- ABAP(笔记)
1.excel表格上传 *&---------------------------------------------------------------------* ** 程序名称:ZSD ...
- Jerry的ABAP原创技术文章合集
我之前发过三篇和ABAP相关的文章: 1. Jerry的ABAP, Java和JavaScript乱炖 这篇文章包含我多年来在SAP成都研究院使用ABAP, Java和JavaScript工作过程中的 ...
- 20170517 ABAP debug
1.新版本调试模式下的观察点: 在新版本模式画面的工具栏上选择'watchpoint' 按钮可以创建观察点. 举例:当生产内表itab第5行时,设置为观察点,追加条件如下: Lines(itab) = ...
- 使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数
最近Jerry接到一个原型开发的任务,需要在微信里调用ABAP On Premise系统(SAP CRM On-Premise)里的某些函数.具体场景和我之前的公众号文章 Cloud for Cust ...
- 动手使用ABAP Channel开发一些小工具,提升日常工作效率
今天的故事要从ABAP小游戏说起. 中国的ABAP从业者们手头或多或少都搜集了一些ABAP小游戏,比如下面这些. 消灭星星: 扫雷: 来自我的朋友刘梦,公众号"SAP干货铺"里的俄 ...
随机推荐
- Python 实现单例模式的一些思考
一.问题:Python中如何实现单例模式 单例模式指一个类只能实例化一个对象. 二.解决方案: 所有资料参考于: http://python.jobbole.com/87294/ https://ww ...
- hihoCoder 403 Forbidden 字典树
题意:给定个规则,个ip,问这些ip是否能和某个规则匹配,如果有多个规则,则匹配第一个.如果没能匹配成功,则认为是"allow",否则根据规则决定是"allow" ...
- 关于我上传的activiti自定义流程demo的说明
最近又收到了一些询问activiti的问题,其中好几个都是向我索要我上传的这个activiti自定义流程demo的数据库设计. 索要的多了,而我早就把这个库给删掉了,所以我便觉得有必要做一个说明: 我 ...
- R语言︱缺失值处理之多重插补——mice包
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:缺失值是数据清洗过程中非常重要的问题 ...
- AM335x(TQ335x)学习笔记——GPIO按键驱动移植
还是按照S5PV210的学习顺序来,我们首先解决按键问题.TQ335x有六个用户按键,分别是上.下.左.右.Enter和ESC.开始我想到的是跟学习S5PV210时一样,编写输入子系统驱动解决按键问题 ...
- (十九)java小练习
练习1:计算13-23+33-43+--+993-1003的结果 package demo; /** * 计算13-23+33-43+--+993-1003的结果 * @author tu ...
- SQL游标使用及实例
declare my_cursor cursor scroll dynamic for select * from t_msg open my_cursor declare @name sysname ...
- 新建.Net Core应用程序后引用项一直黄色感叹号怎么办?
我们在vs中创建.Net Core应用程序后,引用项可能出现黄色感叹号,正常情况下,这种黄色感叹号时能在项目创建成功之后迅速消失的,可也有些时候一直不消失,怎么办? 我们可以选中异常的项目,然后右键菜 ...
- python 内置函数range和xrange
range range 是一种类型(type),它是一个数字的序列,而且是不可变的,通常用在for循环中. class range(stop)class range(start, stop [, st ...
- XCTF(77777-2)
题目链接:http://47.52.137.90:20000 这道题目和前面的那道题目大致一样,只不过是过滤的函数不一样 检查过滤函数的方式就不写了,直接来解题 检查函数发现过滤了ord ascii ...