20.SAP ABAP DATA与TYPES异同
文章目录
- [20.SAP ABAP DATA与TYPES异同](#20.[SAP ABAP] DATA与TYPES异同)
-
- 一、核心本质的区别
-
- TYPES关键字:定义数据类型TYPE
- [DATA关键字:定义具体的数据对象(Data Object)](#DATA关键字:定义具体的数据对象(Data Object))
- 二、语法对比
在ABAP语言中,DATA和TYPES是两个关键字,用途完全不同的关键字,它们都用于声明,但作用对象和生命周期不同。以下列出它们的核心区别:
一、核心本质的区别
TYPES关键字:定义数据类型TYPE
本质: 创建一个自定义的数据类型模板,它只是一个规则/蓝图/模具,不占用内存空间,系统不会为它分配任何存储区域;
**作用: ** 定义是数据的格式,这个类型是字符型,还是数值型,具体长度是多少,几位小数位,是结构体还是内表,这里只做类型声明,没有具体的值。
DATA关键字:定义具体的数据对象(Data Object)
** 本质:** 创建一个具体的变量/常量,它是基于数据类型的实例化,会在内存中分配的存储空间,可以存储具体的数值/内容。
作用: 定义是可以赋值、可以运算、可以调用的具体变量,必须依赖数据类型(系统预定义类型/自定义类型)才能创建。
二、语法对比
使用TYPES定义类型
TYPES用来自定义类型,定义后该类型可以被反复复用。
语法格式:
-
定义基本自定定义类型
ABAPTYPES <自定义类型名> TYPE <参考类型> [DECIMAL <小数位>] [LENGTH <长度>]. -
定义结构体类型(最常用)
ABAPTYPES:BEGIN OF <自定义结构体类型名>, <字段1> TYPE <参考类型>, <字段2> TYPE <表类型>, END OF <自定义结构体类型名>. -
定义内表类型
ABAPTYPES <自定义内表类型名> TYPE TABLE OF <行类型> WITH KEY <主键> WITH HEADER LINE.
参考类型可以是:系统预定义类型(I整数、N数字、C字符、P打包数、D日期、T时间等),标准表类型(MAPA/VBAP等透明表)、其他自定义TYPES类型。
*
使用DATA声明变量
DATA用来定义具体变量,必须绑定数据类型。
语法格式:
-
直接基于系统预定义类型定义变量(最基础,无自定义类型时用)
ABAPDATA <变量名> TYPE <系统类型/标准表> [VALUE <初始值>]. -
基于TYPES自定义的类型定义变量(核心用法,复用性强)
ABAPDATA <变量名> TYPE <自定义类型名> [VALUE <初始值>] -
直接定义+赋值(简写)
ABAPDATA <变量名> VALUE '<具体值>'. "系统自动推导类型,比如 DATA lv_name VALUE 'GOYEER'
** 核心特点:** DATA定义变量可以直接赋值、取值、参与运算,因为它有内存空间。