如何在 Eclipse 中调试ABAP程序
原文链接:Debugging an ABAP Program
ADT 中的调试器是一个重要的诊断工具,可用于分析 ABAP 应用程序。
使用调试器,您可以通过在运行时 Debug 单步执行(F5)程序来确定程序无法正常工作的原因。这使您可以看到正在执行的语句以及随着程序的进行而变量值的变化。
要使用调试器,您首先决定从哪里开始调试过程。一种方法是在源代码中设置断点,运行程序并在设置的断点处停止。
调试器中可用的一些功能如下:
ADT调试器的特点
| Feature 特征 | ADT Debugger |
|---|---|
| 设置断点 | Yes |
| 观察点 | Yes (Depending on release) 是(取决于版本) |
| 条件断点 | Yes |
| 单步执行代码 | Yes |
| 显示变量值 | Yes |
| 分析内表 | 可以在ABAP内部表视图中显示和编辑内表行,但可以自定义该视图 |
| 显示结构 | 可以按字段显示结构,但无法自定义视图。 |
| 显示对象 | 支持对象内容的结构化显示,但不提供自定义对象工具的数据显示的功能。 |
| 比较数据对象 | 不适用于复杂的数据对象 |
| 分析内存使用情况 | No |
| 调试器脚本 | No |
| 更改调试器设置 | Yes |
| 在调试器中直接编辑代码 | Yes |
使用 ADT 调试 ABAP 程序
当您使用 ADT 调试 ABAP 程序时,您将使用“调试”透视图。这是标准 Eclipse 调试透视图的定制版本,它包含对于调试特别重要的视图和功能。

调试器视角的一些重要元素如下:
- Source Code View:源代码视图是调试器透视图的中心部分。它显示源代码并突出显示程序中的当前位置。
- Variables View:变量视图也非常重要。您可以使用此视图来显示变量的当前值。
- Breakpoints View:Breakpoints 视图显示在 Variables 视图旁边(在上图中“调试透视图”中未选择)。您可以使用此视图来显示、删除或创建断点。断点是程序中正常处理被中断的点,系统会向您显示调试器,以便您可以分析程序在该时刻的状态。
- Navigation Functions:在调试程序时,您可以使用导航函数来控制代码的执行。
- Debug View:左上角的“调试”视图显示调试会话和调用层次结构。稍后当您调试模块化单元(例如方法)的调用时,您将需要它。
- Perspective Selector:您可以使用右上角的透视选择器按钮切换回 ABAP Perspective Selector。
控制代码的执行
当开始调试时,使用导航函数来控制代码的执行。一些重要的导航功能如下:
- Step Into (F5):选择单步执行,或选择键盘上的 F5 以执行单个步骤。使用此功能进行逐步分析。例如,如果您想查看实际执行了控制结构的哪个代码块。

- Resume (F8):选择“Resume”(恢复),或选择键盘上的“F8”以执行程序直到下一个断点。如果调试器不再命中任何断点,则程序将执行到底并且调试会话终止。

- Run to Line (Shift+F8)
选择“Run to Line”,或选择键盘上的“Shift+F8”,将程序执行到当前光标位置。选择代码行并选择此函数是设置断点、选择“恢复”并再次删除断点的便捷替代方法。
- Jump to Line (Shift+F12)
选择“Jump to Line”或选择键盘上的 Shift+F12 可跳过某些代码行或向后跳转到某些已执行的代码。此功能有助于模拟删除某段代码时会发生的情况,或者重复调试您第一次错过分析的一些代码。请记住,这是跳转,而不是执行代码。当向后跳转时,对数据对象的更改不会恢复。
- Terminate
如果调试完毕并且不想执行剩余的程序,请选择“终止”(红框图标)。调试会话立即终止。
Watchpoints
如果变量得到一个意想不到的值,您可以使用观察点在程序执行过程中跟踪其值。

变量上的简单观察点会导致程序在该变量的值发生更改时在调试器中停止。通过添加条件,程序不会在变量的每次值更改时停止,而是仅在条件也满足的情况下停止。
要在变量上设置观察点,只需在调试器中突出显示源代码中的变量,然后右键单击它并选择“设置观察点”。这会在变量上创建一个观察点,您可以在“断点”视图中看到该观察点。
选择观察点变量以向观察点添加条件,在断点列表中选择它,然后在条件字段中输入条件。选择键盘上的 Enter 以保存带有条件的观察点。
要删除观察点,请转至断点视图,右键单击观察点变量,然后选择删除。
创建 ABAP 应用程序
- 创建一个类。
- 右键单击您的包。
- 选择 New → ABAP Class.

- 命名一个程序并添加描述。
- 在名称字段中,输入
ZCL_S4D100_DEBUG。 - 在描述字段中,输入
Debug Program。 - 选择下一步。
- 选择运输请求,然后选择完成。

- 在公共部分定义接口。
在公共部分中定义接口: IF_OO_ADT_CLASSRUN 。

- 将代码添加到程序中。
- 使用
D0-ENDDO循环和WRITE语句将以下循环代码添加到程序中。 - 您可以通过
LV_NUMBER1使用DO-ENDDO循环,并通过语句OUT->WRITE( lv_number1 )输出结果。 编写代码时,应考虑以下事项:WRITE和左括号之间没有空格- 左括号后至少有一个空格
- 右括号前至少有一个空格
- 该行末尾有一个句点

- 激活程序并清除控制台。
- 激活您的程序。
- 按 F9 运行应用程序。
- 选择右上角行中的“清除控制台”按钮以清除控制台内容。

调试程序并设置观察点
- 双击程序
ZCL_S4D100_DEBUG,将代码更改为如下图所示,然后激活该程序。

在第 16 行设置断点。要在第 16 行设置断点,请双击该代码行的列号左侧,或右键单击列号左侧,然后选择“Toggle Breakpoint”以在以下位置设置断点: 16 行处。

结果:

- 执行应用程序。
通过执行 F9(在键盘上)来执行应用程序。蓝色箭头和突出显示的行(第 16 行)指示该语句。
双击变量 LV_NUMBER1(展开局部节点)。

- 执行代码。
按键盘上的 F5(单步)查看 LV_NUMBER2 的值从 0 更改为 3。
按 F8(Resume)按钮。


- 清除内容。
请注意,输出显示在 ABAP 控制台中。您可以通过选择控制台工具栏上的“Clear Console”按钮来清除内容。

- 为变量创建观察点。
要在变量上创建观察点,您必须位于调试器中。 在第 16 行设置断点。
通过选择 F9(在键盘上)来执行程序。
在调试器中,突出显示变量 LV_NUMBER1 并右键单击它,然后选择“Set Watchpoint”。
- 选择断点列表中的变量。
- 双击变量
LV_NUMBER1。 - 选择 Breakpoints 选项卡。
- 如果“Breakpoints”选项卡未自动显示,请选择“Breakpoints”按钮。

- 此时,您可以添加条件。
- 双击变量
LV_NUMBER1。 - 添加条件 (
= 6) 并通过选择保存来保存条件。(注意:=和6之间有一个空格)

保存成功:

- 在观察点停止调试器。
- 在 ABAP 编辑器中双击变量
LV_NUMBER1。 - 按键盘上的 F5(Step Into)。
- 选择 Variables 选项卡。
- 展开观察点
LV_NUMBER1,并注意变量LV_NUMBER2已更改为 3。

- 按键盘上的 F8 resume 按钮。

结果:当 LV_NUMBER1 等于 6 时,观察点停止。

相关文章:
如何在 Eclipse 中调试ABAP程序
原文链接:Debugging an ABAP Program ADT 中的调试器是一个重要的诊断工具,可用于分析 ABAP 应用程序。 使用调试器,您可以通过在运行时 Debug 单步执行(F5)程序来确定程序无法正常工作的原因。这使您可以看到正在执…...
websocket是什么?
一、定义 Websocket是一种在单个TCP连接上进行全双工通信的协议,它允许服务器主动向客户端推送数据,而不需要客户端不断的轮询服务器来获取数据 与http协议不同,http是一种无状态的,请求,响应模式的协议(单向通信)&a…...
Java项目实战II基于微信小程序的图书馆自习室座位预约平台(开发文档+数据库+源码)
目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 在知识爆炸的时代,图书馆和…...
5.算法移植第六篇YOLOV5 /onnx模型转换成rknn
上两篇文章讲述了pytorch模型下best.pt转换成onnx模型,以及将onnx进行简化成为best-sim.onnx, 接下来这篇文章讲述如何将onnx模型转换成rknn模型,转换成该模型是为了在rk3568上运行 1.创建share文件夹 文件夹包含以下文件best-sim.onnx,rknn-tookit2-…...
微知-DOCA SDK中如何编译一个sample?如何运行?(meson /tmp/xxx; meson compile -C /tmp/xxx)
文章目录 快速回忆背景前期准备DOCA SDK中的例子情况编译编译request编译responser 执行测试启动响应端启动请求端查看响应端 综述参考 快速回忆 # 生成编译目录和相关文件 cd /opt/mellanox/doca/samples/doca_rdma/rdma_write_requester meson /tmp/req #将编译目录指定到/t…...
【Leetcode 每日一题】146. LRU 缓存(c++)
146. LRU 缓存 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值&#x…...
【机器学习】近似分布的熵到底是p(x)lnq(x)还是q(x)lnq(x)?
【1】通信的定义 信息量(Information Content)是信息论中的一个核心概念,用于定量描述一个事件发生时所提供的“信息”的多少。它通常用随机变量 𝑥的概率分布来定义。事件 𝑥发生所携带的信息量由公式给出࿱…...
网络安全,文明上网(6)网安相关法律
列举 1. 《中华人民共和国网络安全法》: - 这是中国网络安全的基本法律,于2017年6月1日开始实施。该法律明确了网络运营者的安全保护义务,包括采取数据分类、重要数据备份和加密等措施。 2. 《中华人民共和国数据安全法》: …...
网络安全学习74天(记录)
11.21日,今天学习了 app抓包(需要的工具charles(激活),夜神模拟器,postern,) 思路:首先charles需要抓取的app的包,需要的是装证书,将charles的证…...
Spring Boot 实战:基于 Validation 注解实现分层数据校验与校验异常拦截器统一返回处理
1. 概述 本文介绍了在spring boot框架下,使用validation数据校验注解,针对不同请求链接的前端传参数据,进行分层视图对象的校验,并通过配置全局异常处理器捕获传参校验失败异常,自动返回校验出错的异常数据。 2. 依赖…...
20241125复盘日记
昨日最票: 南京化纤 滨海能源 广博股份 日播时尚 众源新材 返利科技 六国化工 丰华股份 威领股份 凯撒旅业 华扬联众 泰坦股份 高乐股份高均线选股: 理邦仪器高乐股份日播时尚领湃科技威领股份资金最多的票: 资金攻击最多的票: …...
【Excel】拆分多个sheet,为单一表格
Private Sub 分拆工作表() Application.ScreenUpdating True 让屏幕显示操作过程, Dim sht As Worksheet Dim MyBook As Workbook Set MyBook ActiveWorkbook For Each sht In MyBook.Sheets If sht.Visible True Then 隐藏的sheet跳过,否则会报1004无…...
类和对象plus版
一.类的定义 1.1类定义的格式 图中class为关键字,Stack为类的名字,用{}框住类的主体,类定义完后;不能省略。 为了区分成员变量,一般习惯在成员变量前面或后面加一个特殊标识,_或者m_ 1.2访问限定符 c采用…...
shell练习
开篇小贴士:为创建的sh(当然可以是任何一个文件)文件添加开头的注释 1、进入到家目录,然后通过 ls -a 查看全部文件 2、找到并编辑一个名为 .vimrc (Vim编辑器的核心配置文件)的配置文件,下图…...
ApiChain 从迭代到项目 接口调试到文档生成单元测试一体化工具
项目地址:ApiChain 项目主页 ApiChain 简介 ApiChain 是一款类似 PostMan 的接口网络请求与文档生成软件,与 PostMan 不同的是,它基于 项目和迭代两个视角管理我们的接口文档,前端和测试更关注版本迭代中发生变更的接口编写代码…...
Vercel 设置自动部署 GitHub 项目
Vercel 设置自动部署 GitHub 项目 问题背景 最近 Vercel 调整了其部署政策,免费版用户无法继续使用自动部署功能,除非升级到 Pro 计划。但是,我们可以通过配置 Deploy Hooks 来实现同样的自动部署效果。 解决方案 通过设置 Vercel 的 Dep…...
SQL进阶:如何跳过多个NULL值取第一个非NULL值?
NULL 一、问题描述二、ORACLE<一>、last_value () over ()<二>、lag () over()<三>、相关子查询 三、MYSQL<一>、全局变量<二>、coalesce() lag() over()<三>、相关子查询<四>、 recursive<五>、lag() over() min() over() …...
laravel 5.5 增加宏指令 joinSub, 省去->toSql() 和 addBinding($bindings);
laravel 5.5 增加宏指令 joinSub, 省去->toSql() 和 addBinding($bindings); 1. 在laravel5使用join 子查询时 $sub_query DB::table(table1)->select([table1.id, cate_id])->join(table2, table1.id, , table2.id)->where(table1.cate_id, 2)->orderBy(tabl…...
远程控制软件:探究云计算和人工智能的融合
在数字化时代,远程控制工具已成为我们工作与生活的重要部分。用户能够通过网络远程操作和管理另一台计算机,极大地提升了工作效率和便捷性。随着人工智能(AI)和云计算技术的飞速发展,远程控制工具也迎来了新的发展机遇…...
网络协议之DNS
一、DNS概述 域名系统(Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53,通过递归查询请求的方式来…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
