ABAP 工具练习

ABAP 工具练习 (8题)

#practice #debugging #analysis-tools

相关概念

📌核心模式(点击查看)
关键词 答案
新调试器关键点 在独立的外部会话中运行
观察点 字段内容改变时触发
运行时分析 SAT/SE30,Aggregation=None 获取详情
代码检查器 SCI,检查变体 + 对象集
SQL 跟踪 EXPLAIN 显示访问策略和使用的索引

第1题 - 新调试器优势 [记忆]

说出新版调试器相比传统调试器的三个优势。

📌点击查看答案
  1. 独立的外部会话 – 不干扰应用程序滚动区
  2. 自由可配置的 UI – 最多 9 个可自定义桌面
  3. 设置跨会话保留
  4. 可以调试转换出口和字段出口(旧调试器不支持)

第2题 - 观察点 [记忆]

观察点与断点有何不同?

📌点击查看答案
方面 断点 观察点
触发条件 到达特定代码行时 字段内容改变
定义位置 代码中或调试器中 仅在调试器中
数量限制 无固定限制 最多 10 个观察点
链接 不适用 可用 AND/OR 运算符链接

观察点监控字段值,仅在值实际改变时激活调试。


第3题 - 调试器内存分析 [应用]

怀疑程序内表使用了过多内存。如何在调试器中分析?

📌点击查看答案
在调试器中使用菜单路径 转到 → 状态显示 → 内存使用
  • 内存使用 – 总计:整体内存消耗
  • 内存使用 – 排序列表:按占用内存排序的数据对象
  • 内存使用 – SCC:动态对象(内表、字符串、对象实例)

对于更深入的分析,保存内存提取并使用内存检查器(事务 S_MEMORY_INSPECTOR)分析。


第4题 - 运行时分析测量 [记忆]

运行时分析工具中运行时测量的三个区域是什么?

📌点击查看答案
区域 测量内容
ABAP 所有 ABAP 语句执行时间(不包括数据库)
数据库 所有数据库访问时间
系统 程序加载过程、生成、其他系统活动

第5题 - 运行时分析变体 [应用]

详细运行时分析推荐什么变体设置?为什么?

📌点击查看答案
设置 Aggregation = None。这提供未聚合的测量结果,按单个调用进行详细分组。聚合结果隐藏了具体的调用层次,使得精确定位瓶颈更困难。

创建自己的变体(而非 DEFAULT)并使用此设置,可选地将测量限制到特定的程序操作以减少噪音。


第6题 - 代码检查器工作流 [记忆]

描述运行代码检查器检查任务所需的三个组件。

📌点击查看答案
  1. 检查变体:定义执行哪些检查(性能、安全、语法、规范)
  2. 对象集:定义检查哪些对象(特定程序、包或对象列表)
  3. 检查任务:将检查变体与对象集组合。命名以持久化;未命名的检查任务不被保存。

第7题 - SQL 跟踪 EXPLAIN [应用]

对一个慢速 SELECT 运行 SQL 跟踪,发现它使用全表扫描。如何使用 EXPLAIN 诊断和修复?

📌点击查看答案
  1. 在跟踪列表中,将光标定位到 PREPAREOPEN 操作上
  2. 点击 Explain SQL(或跟踪列表 → SQL 跟踪 → Explain SQL)
  3. EXPLAIN 输出显示访问策略使用的索引
  4. 如果没有使用索引(全表扫描),检查:
    • WHERE 子句字段是否匹配现有索引
    • 是否需要创建适当的次索引
  5. 创建/调整索引后,重新跟踪验证改进

第8题 - SQL 跟踪相同 SELECT [分析]

在 SQL 跟踪中,发现某个 SELECT 的 75% 执行是相同的(相同 SQL、相同绑定变量值)。这提示什么优化?

📌点击查看答案
这表示通过数据缓冲75% 的优化潜力。相同 SQL 以相同绑定变量执行返回相同结果,因此冗余的 75% 可以通过以下方式消除:
  1. 应用级缓冲:一次读取到内表,然后在内存中查找
  2. SAP 表缓冲:如果表适合,在 ABAP 字典中启用缓冲

SQL 跟踪的”显示相同 SELECT”功能准确显示有多少执行是冗余的,并计算优化潜力百分比。


📌模式总结(点击查看)
关键词 答案
新调试器会话 独立的外部会话
观察点触发 字段内容改变时
内存分析 转到 → 状态显示 → 内存使用
运行时区域 ABAP、数据库、系统
Aggregation = None 详细的、非聚合结果
SCI 组件 检查变体 + 对象集 = 检查任务
EXPLAIN SQL 显示访问策略 + 索引使用
相同 SELECT 缓冲数据以避免冗余读取