ABAP 常量和文本值
ABAP 常量和文本值
ℹ️概述
文字是您在程序的源代码中创建的未命名数据对象,他们完全由他们的价值定义,您不能更改文字的值。常量是通过使用声明性语句静态创建的命名数据对象,分配给常数的值在程序执行期间不能更改。
📝 文字类型
文字有两种基本类型:
🔢 数字字面量
数字文字是可以有前缀符号的数字序列。在数字文字中,没有十进制分隔符,也没有带尾数和指数的符号。
1 | 183. -97. +326. |
🔤 字符文字
字符文字是用单引号括起来的ABAP程序的源代码中的字母数字字符序列。
1. 文本字段文字 (类型C)
用单引号括起的字符文字具有预定义的ABAP类型C。
1 | REPORT YR_SEP_12. |
2. 字符串文字 (类型STRING)
包含在后引号中的文字具有ABAP类型STRING。
1 | REPORT YR_SEP_12. |
⚠️ 重要区别
| 特性 | 文本字段文字 | 字符串文字 |
|---|---|---|
| 引号类型 | 单引号 ' |
后引号 ` |
| 数据类型 | C | STRING |
| 尾随空白 | 被忽略 | 被保留 |
| 输出示例 | Tutorials Point |
Tutorials Point |
📌输出结果
上述两种情况的输出相同:
1 | Tutorials Point |
🎯 CONSTANTS声明
语法格式
1 | CONSTANTS <f> TYPE <type> VALUE <val>. |
参数说明
<f>- 指定常量的名称<type>- 表示常量的类型,继承与现有数据类型相同的技术属性<val>- 为声明的常量名<f>赋值一个初始值
⚠️必须使用VALUE子句
我们应该使用CONSTANTS语句中的VALUE子句。子句”VALUE”用于在声明期间为常量赋予初始值。
CONSTANTS与DATA的区别
| 特性 | DATA | CONSTANTS |
|---|---|---|
| 值可变性 | 可更改 | 不可更改 |
| 声明方式 | DATA |
CONSTANTS |
| 初始化 | 可选 | 必须指定 |
| 用途 | 存储变量数据 | 存储固定值 |
📊 常量类型
1. 基本常量
涉及基本数据类型的常量。
1 | REPORT YR_SEP_12. |
输出:
1 | The value of PQR is: 1.2356 |
2. 复杂常量
由多个字段组成的结构化常量。
1 | BEGIN OF EMPLOYEE, |
💡代码解析
EMPLOYEE是一个由Name、Organization和Place字段组成的复杂常量。
3. 参考常量
引用其他对象或数据的常量。
1 | CONSTANTS null_pointer TYPE REF TO object VALUE IS INITIAL. |
📌参考常量用途
我们可以在比较中使用常量引用,或者我们可以将其传递给过程。
🔧 常量使用示例
实际应用场景
1. 配置常量
1 | " 应用程序配置常量 |
2. 业务规则常量
1 | " 业务规则 |
3. 系统常量
1 | " 系统参数 |
🎨 常量命名规范
推荐的命名模式
1 | ✅ 使用大写字母和下划线: |
常量的作用域
| 作用域 | 声明位置 | 特点 |
|---|---|---|
| 全局常量 | 在全局声明部分 | 整个程序可见 |
| 局部常量 | 在子程序/方法中 | 仅在声明范围内可见 |
| 类常量 | 在类定义中 | 类的静态属性 |
🔄 常量与变量的对比
graph TD
A[数据对象] --> B[变量]
A --> C[常量]
B --> B1[可修改]
B --> B2[使用DATA声明]
B --> B3[无初始值]
C --> C1[不可修改]
C --> C2[使用CONSTANTS声明]
C --> C3[必须有初始值]
最佳实践
何时使用常量:
- 固定值配置
- 业务规则
- 系统参数
- 常用字符串
避免使用常量的情况:
- 需要频繁变化的值
- 用户输入的数据
- 运行时计算的结果
💡 最佳实践
1. 常量声明原则
- 常量名称要有意义,使用大写字母
- 始终指定数据类型
- 为常量提供有初始值
- 遵循命名规范
2. 使用场景选择
- 使用常量而不是硬编码值
- 将常量集中管理
- 常量值变更时只需修改一处
- 使用常量提高代码可读性
3. 性能考虑
- 常量在编译时就确定值
- 运行时访问常量比变量更快
- 常量不占用运行时内存