域与数据元素 (★★★★)
域与数据元素 (★★★★)
#abap #abap-dictionary #abap-data-types
概览表
| Object (对象) | Role (角色) | Contains (包含) |
|---|---|---|
| Domain (域) | 技术属性 | 数据类型、长度、小数位、值域、转换例程 |
| Data Element (数据元素) | 语义属性 | 字段标签、F1 文档、搜索帮助、SET/GET 参数 |
Domain(域)
域用于集中管理数据对象的技术属性。域不能在程序/表中直接使用,必须通过数据元素。
技术属性
| Attribute (属性) | Description (描述) |
|---|---|
| Format | 数据类型 + 字符数 + 小数位 |
| Output Properties | 输出长度、+/- 符号、小写允许 |
| Value Range | 固定值或区间(用于输入检查) |
| Conversion Routine | 显示格式 ↔ SAP 内部格式转换 |
常用内置数据类型
| Type | Description | 限制 |
|---|---|---|
| CHAR | 字符串 | 表中 ≤255,结构中无限制 |
| DATS | 日期 | 固定 8 字符 |
| DEC | 金额/计算字段 | ≤31 字符 |
| NUMC | 数字字符串 | ≤255 字符 |
| CURR | 货币 | 需引用表中的 CUKY 字段 |
| QUAN | 数量 | 需引用表中的 UNIT 字段 |
| LCHR | 长字符串 | 必须是表的最后一个字段 |
⚠️LCHR 限制
含 LCHR/LRAW 字段的表不能使用 Append 结构,因为长字段必须在字段列表的最后位置。
转换例程 (Conversion Routine)
1 | 显示格式 ──CONVERSION_EXIT_XXXXX_OUTPUT──→ SAP 内部格式 |
- 例:前导零补齐(
123→0000000123) - 也影响
WRITE语句的输出
Data Element(数据元素)
数据元素是域与数据对象之间的桥梁,包含语义信息。
字段标签 (Field Labels)
| Label Type (标签类型) | Length (长度) | Usage (用途) |
|---|---|---|
| Short | 最短 | 紧凑布局 |
| Medium | 中等 | 一般使用 |
| Long | 最长 | PARAMETERS 的选择屏幕 |
| Heading | 列标题 | ALV 列标题 |
💡多语言
字段标签可通过
Goto → Translation 或事务 SE63 翻译。其他语言可能需要更多字符。数据元素的附加属性
| Property (属性) | Description (描述) |
|---|---|
| Search Help | 可附加 F4 搜索帮助 |
| SET/GET Parameter | 跨屏幕自动传递值(按会话保持,注销后清除) |
| Default Component Name | BAPI 结构中使用(英文统一命名) |
| Reference Type | 可定义为引用类型(REF TO data / ANY / OBJECT) |
技术类型来源
数据元素的技术属性有两种来源:
- 引用域(推荐)— 使用预定义的域
- 内置类型 — 直接指定数据类型和长度(不经过域)
1 | 推荐: Domain → Data Element → 使用 |
Type Group(类型组)
- 旧技术(Release 4.5a 之前),用于定义全局常量
- 名称最多 5 个字符
- 所有名称必须以
typegroup_为前缀 - 使用:
TYPE-POOLS zmytp.
📌现代替代
新开发应使用 Dictionary 结构代替类型组。全局常量可用类的常量属性。
考试/测试模式
| Scenario/Keyword (场景/关键词) | Answer (答案) |
|---|---|
| “程序能直接引用域吗?” | 不能,必须通过数据元素 |
| “CHAR 在表中的最大长度?” | 255(超过用 LCHR) |
| “SET/GET 参数何时失效?” | 用户注销后(仅按会话保持) |
| “类型组名称长度限制?” | 最多 5 字符 |