结构体 (★★★★)

结构体 (★★★★)

#abap #abap-data

概览表

方面 要点
定义 将多个组件组合在一个名称下的数据对象
用途 将相关字段组合成一个数据对象
关键语句 TYPES(定义类型),DATA(定义变量)

定义结构体

使用字典类型

1
2
DATA: gs_carrier TYPE bc400_s_carrier,
gs_flight TYPE bc400_s_flight.

使用本地类型定义

1
2
3
4
5
6
7
8
TYPES: BEGIN OF gty_s_carrierflight,
carrid TYPE bc400_s_flight-carrid,
connid TYPE bc400_s_flight-connid,
carrname TYPE bc400_s_carrier-carrname,
url TYPE bc400_s_carrier-url,
END OF gty_s_carrierflight.

DATA gs_combined TYPE gty_s_carrierflight.

结构体操作

1
2
3
4
5
6
7
8
9
10
11
12
13
" 访问组件
WRITE: gs_flight-carrid, gs_flight-connid.

" 复制同名字段
MOVE-CORRESPONDING gs_carrier TO gs_combined.

" 清除所有字段
CLEAR gs_flight.

" 检查是否为初始值
IF gs_flight IS NOT INITIAL.
" 结构体中有数据
ENDIF.
📌MOVE-CORRESPONDING 规则
只复制两个结构体中名称相同的字段。仅存在于其中一个结构体中的字段保持不变。

结构体类型的来源类型

字典元素 是否可用 示例
数据元素 是(单个字段) TYPE s_carrid
结构体 (推荐) TYPE bc400_s_flight
表类型 否(用于内表)
否(仅用于技术定义)

考试/测试模式

场景/关键词 答案
“哪些字典元素可用于结构体类型?” 结构体(数据元素可用于单个字段)
“MOVE-CORRESPONDING 的行为?” 只复制同名字段
“检查结构体是否为空?” IF gs_struct IS INITIAL

相关笔记