第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]

定义内表时需要哪三个要素?

📌显示答案
  1. 行类型(行结构)
  2. 表类型(STANDARD、SORTED 或 HASHED)
  3. 主键(键字段和唯一性)

问题 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