第5单元:复杂数据对象练习(10题)
第5单元:复杂数据对象练习(10题)
#practice #abap #abap-data
相关概念
📌关键模式(点击展开)
| 关键词 | 答案 |
|---|---|
| 三种表类型 | STANDARD、SORTED、HASHED |
| APPEND 适用于? | 仅标准表 |
| 默认键 | 所有非数字字段 |
| 表头行 | 已过时,不要使用 |
| sy-tabix | 当前表行索引 |
问题 1 - 结构体类型定义 [recall]
可以通过 ABAP 字典中的哪些元素来设置结构体变量的类型?
📌显示答案
通过 ABAP 字典中的结构体类型。(数据元素可以用于定义单个字段的类型,但对于整个结构体,应使用字典结构体。)
问题 2 - MOVE-CORRESPONDING [recall]
MOVE-CORRESPONDING 语句会考虑哪些字段?
📌显示答案
只有在两个结构体中都存在且名称相同的字段。仅存在于一个结构体中的字段会被忽略。
问题 3 - 内表定义 [recall]
定义内表时需要哪三个要素?
📌显示答案
- 行类型(行结构)
- 表类型(STANDARD、SORTED 或 HASHED)
- 主键(键字段和唯一性)
问题 4 - 表类型 [recall]
有哪三种内表类型?
📌显示答案
STANDARD(非唯一键、索引访问),SORTED(唯一/非唯一键、按键排序),HASHED(仅唯一键、哈希算法访问)。
问题 5 - 表类型(字典) [recall]
ABAP 字典中的表类型是什么?
📌显示答案
表类型是对内表的描述(而不是表本身)。它集中定义了行类型、表类型和键属性,以便重复使用。
问题 6 - 工作区定义 [application]
给定内表
gt_flights,如何定义一个合适的工作区?
📌显示答案
DATA gs_flight LIKE LINE OF gt_flights. — 这会创建一个与表的行类型兼容的结构体。问题 7 - 单条记录读取 [recall]
哪条语句用于从内表中检索单条记录?
📌显示答案
READ TABLE,配合 INDEX(用于索引表)或 WITH TABLE KEY / WITH KEY(用于任何表)。
问题 8 - APPEND 与 INSERT 对比 [analysis]
比较 APPEND 和 INSERT 向内表添加行的区别。何时应该使用哪个?
📌显示答案
APPEND 只适用于标准表 — 将行添加到末尾。INSERT 适用于所有表类型 — 对于排序表会按键的排序位置插入,对于哈希表按哈希算法插入,对于标准表则在末尾添加。
问题 9 - 性能选择 [application]
你需要频繁地通过完整键从一个大型内表(10万+行)中读取单条记录。哪种表类型最高效?
📌显示答案
HASHED 表 — 它提供与表大小无关的按键常量时间访问。排序表使用二分查找(log n),也不错但不如哈希表在大数据集上快速。
问题 10 - 内存管理 [application]
你已经处理完一个大型内表且不再需要它。使用哪条语句来释放内存?
📌显示答案
FREE gt_tab. — 这会清除内容并释放已分配的内存。REFRESH 只清除内容但保留已分配的内存。
📌模式总结(点击展开)
| 关键词 | 答案 |
|---|---|
| 结构体类型定义 | 字典结构体类型 |
| MOVE-CORRESPONDING | 仅同名字段 |
| 内表三要素 | 行类型、表类型、主键 |
| 表类型 | STANDARD、SORTED、HASHED |
| APPEND | 仅标准表 |
| 单条记录读取 | READ TABLE |
| 大表按键查找 | HASHED |
| 释放内存 | FREE |