15.[SAP ABAP] ABAP中的TYPES(自定义类型)
文章目录
- [15.[SAP ABAP] ABAP中的TYPES(自定义类型)](#15.[SAP ABAP] ABAP中的TYPES(自定义类型))
-
- [一. 基本语法](#一. 基本语法)
- [二. 常见用法](#二. 常见用法)
-
- [1. 定义基本类型别名](#1. 定义基本类型别名)
- [2. 定义结构类型(Structure)](#2. 定义结构类型(Structure))
- [3. 定义内表类型(Internal Table)](#3. 定义内表类型(Internal Table))
- [4. 使用REF TO定义引用类型](#4. 使用REF TO定义引用类型)
- [5. 泛型类型(常用于方法参数)](#5. 泛型类型(常用于方法参数))
- [二. DATA与TYPES区别](#二. DATA与TYPES区别)
在 ABAP(Advanced Business Application Programming)中, TYPES 语句用于定义 本地数据类型 (local data types)。这些类型仅在当前程序(如报表、类、函数模块等)中有效,不会存储在 ABAP 字典(DDIC)中。
一. 基本语法
ABAP
TYPES typename [TYPE type|LIKE dobj] [VALUE val] ...
或用于结构/内表
ABAP
TYPES:BEGIN OF typename,
my_para1 TYPE type1,
my_para2 TYPE type2,
END OF typename.
TYPES itab_type TYPE STANDARD TABLE OF line_type ...
二. 常见用法
1. 定义基本类型别名
ABAP
TYPES: my_char TYPE c LENGTH 10,
my_date TYPE d,
my_amount TYPE p DECIMALS 2.
2. 定义结构类型(Structure)
ABAP
TYPES: BEGIN OF ty_employee,
emp_id TYPE i,
name TYPE string,
salary TYPE p DECIMALS 2,
END OF ty_employee.
3. 定义内表类型(Internal Table)
ABAP
TYPES: tt_employee TYPE STANDARD TABLE OF ty_employee
WITH DEFAULT KEY.
TYPES: tt_sorted_emp TYPE SORTED TABLE OF ty_employee
WITH UNIQUE KEY emp_id.
TYPES: tt_hash_emp TYPE HASHED TABLE OF ty_employee
WITH UNIQUE KEY emp_id.
4. 使用REF TO定义引用类型
ABAP
TYPES: ty_ref_employee TYPE REF TO ty_employee.
5. 泛型类型(常用于方法参数)
ABAP
TYPES: ty_any_table TYPE STANDARD TABLE OF any_table.
注意:any_table是泛型,只能用于形式参数,不能用于实际变量声明。
二. DATA与TYPES区别
1. 核心区别
| 特性 | TYPES | DATA |
|---|---|---|
| 作用 | 定义数据类型(type definition) | 声明数据对象/变量(data object declaration) |
| 是否分配内存 | 不分配内存 | 分配内存 |
| 是否可赋初值 | ABAP 7.40 前不可;7.40+ 可用 VALUE,但仍是类型定义) |
可用 VALUE 赋初值 |
| 生命周期 | 仅作为模板内存 | 在程序运行时实际存在 |
| 使用范围 | 用于后续 DATA、PARAMETERS、方法参数等的类型参考 |
直接用于程序逻辑操作 |
2. 语法定义
TYPES:定义类型
ABAP
TYPES: ty_name TYPE string,
BEGIN OF ty_person,
id TYPE i,
name TYPE ty_name,
END OF ty_person.
DATA:创建变量
ABAP
DATA: lv_name TYPE string VALUE 'GoYeer',
ls_person TYPE ty_person.
总结口诀
TYPES 定义"是什么类型",DATA 创建"具体的东西