ABAP 工具练习
ABAP 工具练习 (8题)
#practice #debugging #analysis-tools
相关概念
📌核心模式(点击查看)
| 关键词 | 答案 |
|---|---|
| 新调试器关键点 | 在独立的外部会话中运行 |
| 观察点 | 字段内容改变时触发 |
| 运行时分析 | SAT/SE30,Aggregation=None 获取详情 |
| 代码检查器 | SCI,检查变体 + 对象集 |
| SQL 跟踪 EXPLAIN | 显示访问策略和使用的索引 |
第1题 - 新调试器优势 [记忆]
说出新版调试器相比传统调试器的三个优势。
📌点击查看答案
- 独立的外部会话 – 不干扰应用程序滚动区
- 自由可配置的 UI – 最多 9 个可自定义桌面
- 设置跨会话保留
- 可以调试转换出口和字段出口(旧调试器不支持)
第2题 - 观察点 [记忆]
观察点与断点有何不同?
📌点击查看答案
| 方面 | 断点 | 观察点 |
|---|---|---|
| 触发条件 | 到达特定代码行时 | 字段内容改变时 |
| 定义位置 | 代码中或调试器中 | 仅在调试器中 |
| 数量限制 | 无固定限制 | 最多 10 个观察点 |
| 链接 | 不适用 | 可用 AND/OR 运算符链接 |
观察点监控字段值,仅在值实际改变时激活调试。
第3题 - 调试器内存分析 [应用]
怀疑程序内表使用了过多内存。如何在调试器中分析?
📌点击查看答案
在调试器中使用菜单路径 转到 → 状态显示 → 内存使用:
- 内存使用 – 总计:整体内存消耗
- 内存使用 – 排序列表:按占用内存排序的数据对象
- 内存使用 – SCC:动态对象(内表、字符串、对象实例)
对于更深入的分析,保存内存提取并使用内存检查器(事务 S_MEMORY_INSPECTOR)分析。
第4题 - 运行时分析测量 [记忆]
运行时分析工具中运行时测量的三个区域是什么?
📌点击查看答案
| 区域 | 测量内容 |
|---|---|
| ABAP | 所有 ABAP 语句执行时间(不包括数据库) |
| 数据库 | 所有数据库访问时间 |
| 系统 | 程序加载过程、生成、其他系统活动 |
第5题 - 运行时分析变体 [应用]
详细运行时分析推荐什么变体设置?为什么?
📌点击查看答案
设置 Aggregation = None。这提供未聚合的测量结果,按单个调用进行详细分组。聚合结果隐藏了具体的调用层次,使得精确定位瓶颈更困难。
创建自己的变体(而非 DEFAULT)并使用此设置,可选地将测量限制到特定的程序操作以减少噪音。
第6题 - 代码检查器工作流 [记忆]
描述运行代码检查器检查任务所需的三个组件。
📌点击查看答案
- 检查变体:定义执行哪些检查(性能、安全、语法、规范)
- 对象集:定义检查哪些对象(特定程序、包或对象列表)
- 检查任务:将检查变体与对象集组合。命名以持久化;未命名的检查任务不被保存。
第7题 - SQL 跟踪 EXPLAIN [应用]
对一个慢速 SELECT 运行 SQL 跟踪,发现它使用全表扫描。如何使用 EXPLAIN 诊断和修复?
📌点击查看答案
- 在跟踪列表中,将光标定位到 PREPARE 或 OPEN 操作上
- 点击 Explain SQL(或跟踪列表 → SQL 跟踪 → Explain SQL)
- EXPLAIN 输出显示访问策略和使用的索引
- 如果没有使用索引(全表扫描),检查:
- WHERE 子句字段是否匹配现有索引
- 是否需要创建适当的次索引
- 创建/调整索引后,重新跟踪验证改进
第8题 - SQL 跟踪相同 SELECT [分析]
在 SQL 跟踪中,发现某个 SELECT 的 75% 执行是相同的(相同 SQL、相同绑定变量值)。这提示什么优化?
📌点击查看答案
这表示通过数据缓冲有 75% 的优化潜力。相同 SQL 以相同绑定变量执行返回相同结果,因此冗余的 75% 可以通过以下方式消除:
- 应用级缓冲:一次读取到内表,然后在内存中查找
- SAP 表缓冲:如果表适合,在 ABAP 字典中启用缓冲
SQL 跟踪的”显示相同 SELECT”功能准确显示有多少执行是冗余的,并计算优化潜力百分比。
📌模式总结(点击查看)
| 关键词 | 答案 |
|---|---|
| 新调试器会话 | 独立的外部会话 |
| 观察点触发 | 字段内容改变时 |
| 内存分析 | 转到 → 状态显示 → 内存使用 |
| 运行时区域 | ABAP、数据库、系统 |
| Aggregation = None | 详细的、非聚合结果 |
| SCI 组件 | 检查变体 + 对象集 = 检查任务 |
| EXPLAIN SQL | 显示访问策略 + 索引使用 |
| 相同 SELECT | 缓冲数据以避免冗余读取 |