数据类型与数据对象 (★★★★)

数据类型与数据对象 (★★★★)

#abap #abap-syntax #abap-data

概览表

类别 示例 要点
标准类型 I, F, P, C, N, D, T, STRING SAP 预定义
局部类型 使用 TYPES 定义 仅在当前程序中有效
全局类型 ABAP 数据字典类型 系统范围内可用

类型分类

完整的 ABAP 标准类型(固定长度)

类型 描述 长度
D 日期 (YYYYMMDD) 8
T 时间 (HHMMSS) 6
I 整数 4
F 浮点数 8
STRING 动态字符串 可变
XSTRING 动态十六进制字符串 可变
DECFLOAT16 十进制浮点数 8
DECFLOAT34 十进制浮点数 16

不完整的 ABAP 标准类型(必须指定长度)

类型 描述 长度说明
C 字符串 LENGTH n
N 数字文本字符串 LENGTH n
X 十六进制字节序列 LENGTH n
P 压缩数字 LENGTH n + DECIMALS m
⚠️类型 N 不是数值类型!
N 是一种字符串类型,只允许包含数字字符。它不能用于算术运算。数值类型包括:I, F, P, DECFLOAT16, DECFLOAT34

定义数据对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
" 变量
DATA gv_name TYPE string.
DATA gv_count TYPE i.
DATA gv_price TYPE p LENGTH 8 DECIMALS 2.

" 带初始值
DATA gv_flag TYPE c LENGTH 1 VALUE 'X'.

" 常量
CONSTANTS gc_pi TYPE p LENGTH 8 DECIMALS 5 VALUE '3.14159'.

" 参考已有对象
DATA gv_copy LIKE gv_name.

" 字面量(固定数据对象)
" 文本字面量:'Hello World'
" 数字字面量:42

类型层次结构

1
2
3
4
5
6
7
8
9
ABAP 标准类型(预定义)

├── 局部类型(TYPES 语句,仅限程序内)
│ └── 可基于标准类型或全局类型构建

└── 全局类型(ABAP 数据字典)
├── 数据元素(语义类型)
├── 结构
└── 表类型

局部类型定义

1
2
TYPES: gty_price TYPE p LENGTH 8 DECIMALS 2,
gty_name TYPE c LENGTH 30.

全局类型使用

1
2
DATA gv_carrid TYPE s_carrid.    " 数据字典中的数据元素
DATA gs_flight TYPE bc400_s_flight. " 数据字典中的结构

命名规范

前缀 含义
g 全局(程序级)作用域
l 局部作用域
v 简单变量(值)
ty 类型
c 常量
p 参数(选择屏幕)

考试/测试模式

场景/关键词 答案
“哪些类型是数值类型?” I, F, P, DECFLOAT16, DECFLOAT34(不包括 N!)
“不完整的类型有哪些?” C, N, X, P(必须指定长度)
“定义局部类型的关键字?” TYPES
“如何定义常量?” CONSTANTS

相关笔记