20.[SAP ABAP] DATA与TYPES异同

20.SAP ABAP DATA与TYPES异同

文章目录

在ABAP语言中,DATA和TYPES是两个关键字,用途完全不同的关键字,它们都用于声明,但作用对象和生命周期不同。以下列出它们的核心区别:

一、核心本质的区别

TYPES关键字:定义数据类型TYPE

本质: 创建一个自定义的数据类型模板,它只是一个规则/蓝图/模具,不占用内存空间,系统不会为它分配任何存储区域;

**作用: ** 定义是数据的格式,这个类型是字符型,还是数值型,具体长度是多少,几位小数位,是结构体还是内表,这里只做类型声明,没有具体的值。

DATA关键字:定义具体的数据对象(Data Object)

** 本质:** 创建一个具体的变量/常量,它是基于数据类型的实例化,会在内存中分配的存储空间,可以存储具体的数值/内容。

作用: 定义是可以赋值、可以运算、可以调用的具体变量,必须依赖数据类型(系统预定义类型/自定义类型)才能创建。

二、语法对比

使用TYPES定义类型

TYPES用来自定义类型,定义后该类型可以被反复复用。

语法格式:

  1. 定义基本自定定义类型

    ABAP 复制代码
    TYPES <自定义类型名> TYPE <参考类型> [DECIMAL <小数位>] [LENGTH <长度>].
  2. 定义结构体类型(最常用)

    ABAP 复制代码
    TYPES:BEGIN OF <自定义结构体类型名>,
            <字段1> TYPE <参考类型>,
            <字段2> TYPE <表类型>,
    END OF <自定义结构体类型名>.
  3. 定义内表类型

    ABAP 复制代码
    TYPES <自定义内表类型名> TYPE TABLE OF <行类型> WITH KEY <主键> WITH HEADER LINE.

参考类型可以是:系统预定义类型(I整数、N数字、C字符、P打包数、D日期、T时间等),标准表类型(MAPA/VBAP等透明表)、其他自定义TYPES类型。
*

使用DATA声明变量

DATA用来定义具体变量,必须绑定数据类型

语法格式:

  1. 直接基于系统预定义类型定义变量(最基础,无自定义类型时用)

    ABAP 复制代码
    DATA <变量名> TYPE <系统类型/标准表> [VALUE <初始值>].
  2. 基于TYPES自定义的类型定义变量(核心用法,复用性强)

    ABAP 复制代码
    DATA <变量名> TYPE <自定义类型名> [VALUE <初始值>]
  3. 直接定义+赋值(简写)

    ABAP 复制代码
    DATA <变量名> VALUE '<具体值>'. "系统自动推导类型,比如 DATA lv_name VALUE 'GOYEER'

​ ** 核心特点:** DATA定义变量可以直接赋值、取值、参与运算,因为它有内存空间。

相关推荐
爱喝水的鱼丶3 小时前
SAP-ABAP:SAP MM 模块物料主数据批量导入与增强开发:字段扩展、校验逻辑与批量导入工具开发
开发语言·性能优化·sap·abap·增强·经验交流·mm
goyeer7 小时前
21.[SAP ABAP] DATA关键字详解
sap·abap·fi·mm·opensql
修电脑的猫20 小时前
在中国使用 Claude Code 解决 403 错误(VS CODE)
ai·sap
Henry-SAP1 天前
SAP PP模块核心机制解析
人工智能·云原生·sap·erp
ChampaignWolf4 天前
在 SAP S/4HANA 内部基于 ICF Handler 从零实现 ABAP MCP Server:架构、代码与踩坑实录
c++·架构·sap·abap·mcp
slacker-kian4 天前
[实践]-本地大模型 + MCP + Agent 对接 SAP OData API 实现Web Chart APP
ai·llm·sap·agent·mcp·odata·chart bot
ChampaignWolf4 天前
YAAI 生态一周年:把 ABAP 变成 Agent 工具栈的开源组合拳
开源·abap·mcp·开源ai·yaai
爱喝水的鱼丶4 天前
SAP-ABAP:隐式/显式增强开发规范与避坑指南:10 类典型错误与运维方案
运维·性能优化·sap·abap·增强·经验交流
ChampaignWolf4 天前
abapgit-agent:用 Git 当中介,让 Claude Code 自己完成 ABAP 闭环开发
git·ai·abap·claude·abapgit·mcp