SAP ABAP 数据类型和常量基础


文章封面

SAP ABAP 数据类型和常量基础

在 ABAP 开发中,数据类型决定变量可以保存什么样的数据,常量则用于保存程序运行期间不应再改变的固定值。掌握 DATATYPESCONSTANTS 的基本用法,是编写 ABAP 程序的第一步。

1. 变量定义:DATA

ABAP 中使用 DATA 定义变量。变量可以直接指定基础类型,也可以引用数据元素、表字段或自定义类型。

DATA lv_name   TYPE c LENGTH 20.              "定长字符
DATA lv_age    TYPE i.                        "整数
DATA lv_price  TYPE p LENGTH 8 DECIMALS 2.    "定点小数,常用于金额或数量
DATA lv_date   TYPE d.                        "日期,格式 YYYYMMDD
DATA lv_time   TYPE t.                        "时间,格式 HHMMSS
DATA lv_text   TYPE string.                   "动态字符串
DATA lv_flag   TYPE abap_bool.                "布尔值

变量名通常按用途加前缀,例如:

前缀常见含义
lv_local variable,局部变量
ls_local structure,结构变量
lt_local table,内表
gv_global variable,全局变量
gc_global constant,全局常量

2. ABAP 常用基础数据类型

类型含义常见写法说明
C定长字符TYPE c LENGTH 10适合固定长度文本
N数字字符TYPE n LENGTH 6内容看起来是数字,但本质仍是字符
I整数TYPE i用于计数、序号等整数值
P压缩数TYPE p LENGTH 8 DECIMALS 2常用于金额、数量、小数
F浮点数TYPE f用于浮点计算,但金额场景一般不用它
D日期TYPE d内部格式为 YYYYMMDD
T时间TYPE t内部格式为 HHMMSS
STRING动态字符串TYPE string长度可变的文本
X十六进制字节TYPE x LENGTH 4固定长度字节数据
XSTRING动态字节串TYPE xstring长度可变的字节数据

实际项目中,金额和数量字段常用 P 类型,并明确指定小数位;日期使用 D,时间使用 T,普通文本可根据是否定长选择 CSTRING

3. 自定义类型:TYPES

TYPES 用于定义可复用的数据类型。它本身不创建变量,只是创建一个类型模板,后续变量可以基于这个类型声明。

TYPES ty_name TYPE c LENGTH 30.

DATA lv_customer_name TYPE ty_name.

定义结构类型

结构类型可以把多个字段组合在一起,常用于保存一行业务数据。

TYPES: BEGIN OF ty_customer,
         id   TYPE kunnr,
         name TYPE name1,
         city TYPE ort01,
       END OF ty_customer.

DATA ls_customer TYPE ty_customer.

定义内表类型

内表用于保存多行数据。可以基于结构类型定义表类型。

TYPES tt_customer TYPE STANDARD TABLE OF ty_customer WITH EMPTY KEY.

DATA lt_customer TYPE tt_customer.

这里的 WITH EMPTY KEY 表示使用空表键。在较新的 ABAP 语法中,显式写出表键更清晰,也能避免默认键带来的误解。

4. 常量定义:CONSTANTS

常量用 CONSTANTS 定义,定义时必须指定初始值。程序运行期间,常量的值不能再被修改。

CONSTANTS gc_company_code TYPE bukrs VALUE '1000'.
CONSTANTS gc_max_count    TYPE i     VALUE 100.
CONSTANTS gc_currency     TYPE waers VALUE 'CNY'.

常量适合保存固定配置、状态值、业务代码、默认币种、最大次数等内容。命名上通常使用 gc_ 作为全局常量前缀,让读代码的人一眼知道它不是普通变量。

5. 布尔值常量

ABAP 没有传统意义上的独立布尔基础类型,项目中常用 abap_bool,并配合系统常量 abap_trueabap_false

DATA lv_active TYPE abap_bool.

lv_active = abap_true.
lv_active = abap_false.

判断时可以这样写:

IF lv_active = abap_true.
  WRITE: / 'Active'.
ENDIF.

6. TYPE 和 LIKE 的区别

TYPE 用于指定一个明确的数据类型;LIKE 用于参考已有变量或表字段的类型。

DATA lv_matnr  TYPE matnr.       "使用数据元素类型
DATA lv_matnr2 LIKE mara-matnr.  "参考数据库表字段类型

一般建议优先使用 TYPE。当变量确实需要跟随某个已有字段的类型变化时,再使用 LIKE

常见选择原则:

写法适合场景
TYPE matnr使用明确的数据元素或类型定义
TYPE ty_customer使用自定义类型
LIKE mara-matnr变量要严格参考某个已有字段
LIKE lv_value变量要参考另一个变量的类型

7. 完整示例:计算税额

下面的例子演示了常量、金额变量和计算逻辑的基本组合。

REPORT zdemo_type_const.

CONSTANTS gc_tax_rate TYPE p LENGTH 5 DECIMALS 2 VALUE '0.13'.

DATA lv_amount TYPE p LENGTH 10 DECIMALS 2 VALUE '100.00'.
DATA lv_tax    TYPE p LENGTH 10 DECIMALS 2.

lv_tax = lv_amount * gc_tax_rate.

WRITE: / '金额:', lv_amount,
       / '税额:', lv_tax.

这个例子中:

对象说明
gc_tax_rate税率常量,运行期间不应被修改
lv_amount金额变量,使用 P 类型并保留两位小数
lv_tax税额变量,由金额乘税率计算得到

8. 小结

ABAP 中可以简单记住三句话:

  • DATA 用来定义变量。
  • TYPES 用来定义可复用的数据类型。
  • CONSTANTS 用来定义常量。

初学时重点掌握 CIPDTSTRING 这些常用类型。金额和数量优先考虑 P 类型,日期使用 D,时间使用 T,长文本使用 STRING。在实际业务开发中,尽量使用 SAP 数据元素或自定义类型来声明变量,这样代码更贴近业务含义,也更容易维护。

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
MCP自动发表文章
上一篇:没有了
评论列表

发表评论

评论内容
昵称:
验证码:
验证码
关联文章

SAP ABAP 数据类型常量基础
ABAP基础语法:变量、系统变量、数据类型与结构体变量详解
ABAP 基础语法教程:运算、字符串、判断与循环
SQL Server 数据库类型.NET数据类型映射关系
ABAP 数据字典 DDIC 详解:从 Domain 到透明表、搜索帮助与锁对象
C#数据类型常见数据库(SQLServer,MySQL,Oracle,SQLite)的数据类型对应关系
SAP S/4HANA MM模块培训 03 - 采购组织、采购组与物料主数据基础配置
SAP S/4HANA MM模块培训 04 - 物料主数据、物料类型与MM01创建
66. SAP S/4HANA EWM 入门:仓库结构、基础流程与企业组织定义
SAP S/4HANA FICO 入门 58:印度 GST 基础配置与 Business Place
SAP S/4HANA MM模块培训 09 - 字段状态验证与 CO 基础配置
SAP S/4HANA MM模块培训 01 - 从ERP基础到工厂与产品组配置
SAP S/4HANA 实操 02:MM 复制标准类型创建 Garson 自定义物料类型
ABP VNext框架基础知识介绍(1)--框架基础类继承关系
SAP S/4HANA MM模块培训 37 - 移动类型:控制功能、分类、冲销与定制
.NET C#教程初级篇 1-1 基本数据类型及其存储方式
SAP S/4HANA MM模块培训 33 - 物料类型定制:控制属性、物料状态与维护视图
SAP S/4HANA MM模块培训 47 - 分割评估:评估类别、类型与部分库存计价
基础字典管理功能开发-表结构设计,模型更新数据库迁移脚本生成
使用Hot Chocolate.NET 6构建GraphQL应用(3) —— 实现Query基础功能