- SAP ABAP 教程
- SAP ABAP - 首页
- SAP ABAP - 概述
- SAP ABAP - 环境
- SAP ABAP - 屏幕导航
- SAP ABAP - 基本语法
- SAP ABAP - 数据类型
- SAP ABAP - 变量
- SAP ABAP - 常量和字面量
- SAP ABAP - 运算符
- SAP ABAP - 循环控制
- SAP ABAP - 决策
- SAP ABAP - 字符串
- SAP ABAP - 日期和时间
- SAP ABAP - 数据格式化
- SAP ABAP - 异常处理
- SAP ABAP - 字典
- SAP ABAP - 域
- SAP ABAP - 数据元素
- SAP ABAP - 表格
- SAP ABAP - 结构
- SAP ABAP - 视图
- SAP ABAP - 搜索帮助
- SAP ABAP - 锁定对象
- SAP ABAP - 模块化
- SAP ABAP - 子程序
- SAP ABAP - 宏
- SAP ABAP - 函数模块
- SAP ABAP - 包含程序
- SAP ABAP - Open SQL 概述
- SAP ABAP - Native SQL 概述
- SAP ABAP - 内部表
- SAP ABAP - 创建内部表
- ABAP - 填充内部表
- SAP ABAP - 复制内部表
- SAP ABAP - 读取内部表
- SAP ABAP - 删除内部表
- SAP ABAP - 面向对象
- SAP ABAP - 对象
- SAP ABAP - 类
- SAP ABAP - 继承
- SAP ABAP - 多态
- SAP ABAP - 封装
- SAP ABAP - 接口
- SAP ABAP - 对象事件
- SAP ABAP - 报表编程
- SAP ABAP - 对话编程
- SAP ABAP - 智能表单
- SAP ABAP - SAPscript
- SAP ABAP - 客户出口
- SAP ABAP - 用户出口
- SAP ABAP - 业务附加功能
- SAP ABAP - Web Dynpro
- SAP ABAP 有用资源
- SAP ABAP - 问题解答
- SAP ABAP - 快速指南
- SAP ABAP - 有用资源
- SAP ABAP - 讨论
SAP ABAP - 变量
变量是命名的数据对象,用于在程序分配的内存区域中存储值。顾名思义,用户可以通过 ABAP 语句更改变量的内容。每个 ABAP 变量都具有特定的类型,该类型确定变量内存的大小和布局;可以存储在该内存中的值的范围;以及可以应用于变量的操作集。
在使用变量之前,必须先声明它们。变量声明的基本形式如下:
DATA <f> TYPE <type> VALUE <val>.
这里 <f> 指定变量的名称。变量的名称最多可以包含 30 个字符。<type> 指定变量的类型。任何具有完全指定的技术属性的数据类型都称为 <type>。<val> 指定 <f> 变量的初始值。如果您定义了一个基本固定长度变量,则 DATA 语句会自动使用类型特定的初始值填充变量的值。<val> 的其他可能值为字面量、常量或显式子句,例如 Is INITIAL。
以下是变量声明的有效示例。
DATA d1(2) TYPE C. DATA d2 LIKE d1. DATA minimum_value TYPE I VALUE 10.
在上面的代码片段中,d1 是 C 类型的变量,d2 是 d1 类型的变量,minimum_value 是 ABAP 整数类型 I 的变量。
本章将解释 ABAP 中可用的各种变量类型。ABAP 中有三种变量:
- 静态变量
- 引用变量
- 系统变量
静态变量
静态变量在子程序、函数模块和静态方法中声明。
生命周期与声明的上下文相关联。
使用“CLASS-DATA”语句,您可以在类中声明变量。
“PARAMETERS”语句可用于声明与选择屏幕上的输入字段关联的基本数据对象。
您还可以使用“SELECT-OPTIONS”语句声明与选择屏幕上的输入字段关联的内部表。
以下是命名变量时使用的约定:
您不能使用诸如“t”和“,”之类的特殊字符来命名变量。
预定义数据对象的名称不能更改。
变量的名称不能与任何 ABAP 关键字或子句相同。
变量的名称必须传达变量的含义,无需进一步注释。
连字符保留用于表示结构的组件。因此,您应该避免在变量名称中使用连字符。
下划线字符可用于分隔复合词。
此程序演示了如何使用 PARAMETERS 语句声明变量:
REPORT ZTest123_01. PARAMETERS: NAME(10) TYPE C, CLASS TYPE I, SCORE TYPE P DECIMALS 2, CONNECT TYPE MARA-MATNR.
这里,NAME 表示 10 个字符的参数,CLASS 指定整数类型参数,其默认大小以字节为单位,SCORE 表示打包类型参数,其值最多包含两位小数,CONNECT 指的是 ABAP 字典的 MARA-MATNF 类型。
以上代码产生以下输出:
引用变量
声明引用变量的语法如下:
DATA <ref> TYPE REF TO <type> VALUE IS INITIAL.
REF TO 附加声明一个引用变量 ref。
REF TO 之后的规范指定引用变量的静态类型。
静态类型限制了 <ref> 可以引用的对象集。
引用变量的动态类型是它当前引用的数据类型或类。
静态类型始终比动态类型更通用或相同。
TYPE 附加用于创建绑定引用类型并作为起始值,并且仅可以在 VALUE 附加之后指定 IS INITIAL。
示例
CLASS C1 DEFINITION. PUBLIC SECTION. DATA Bl TYPE I VALUE 1. ENDCLASS. DATA: Oref TYPE REF TO C1 , Dref1 LIKE REF TO Oref, Dref2 TYPE REF TO I . CREATE OBJECT Oref. GET REFERENCE OF Oref INTO Dref1. CREATE DATA Dref2. Dref2→* = Dref1→*→Bl.
在上面的代码片段中,声明了一个对象引用 Oref 和两个数据引用变量 Dref1 和 Dref2。
两个数据引用变量都完全类型化,并且可以使用解引用运算符 →* 在操作数位置进行解引用。
系统变量
ABAP 系统变量可从所有 ABAP 程序访问。
这些字段实际上是由运行时环境填充的。
这些字段中的值指示系统在任何给定时间点的状态。
您可以在 SAP 中的 SYST 表中找到系统变量的完整列表。
SYST 结构的各个字段可以通过使用“SYST-”或“SY-”来访问。
示例
REPORT Z_Test123_01. WRITE:/'SY-ABCDE', SY-ABCDE, /'SY-DATUM', SY-DATUM, /'SY-DBSYS', SY-DBSYS, /'SY-HOST ', SY-HOST, /'SY-LANGU', SY-LANGU, /'SY-MANDT', SY-MANDT, /'SY-OPSYS', SY-OPSYS, /'SY-SAPRL', SY-SAPRL, /'SY-SYSID', SY-SYSID, /'SY-TCODE', SY-TCODE, /'SY-UNAME', SY-UNAME, /'SY-UZEIT', SY-UZEIT.
以上代码产生以下输出:
SY-ABCDE ABCDEFGHIJKLMNOPQRSTUVWXYZ SY-DATUM 12.09.2015 SY-DBSYS ORACLE SY-HOST sapserver SY-LANGU EN SY-MANDT 800 SY-OPSYS Windows NT SY-SAPRL 700 SY-SYSID DMO SY-TCODE SE38 SY-UNAME SAPUSER SY-UZEIT 14:25:48