透明表与 Include 结构 (★★★★)
透明表与 Include 结构 (★★★★)
#abap #abap-dictionary #abap-tables
概览表
| Concept (概念) | Key Point (要点) |
|---|---|
| Transparent Table (透明表) | Dictionary 定义 = 数据库结构,同名同字段 |
| Two-Level Domain Concept | 域(技术) → 数据元素(语义) → 字段 |
| Include Structure | 避免冗余,可传递外键定义 |
| Currency/Quantity Fields | 必须指定引用表和引用字段 |
透明表 (Transparent Table)
透明表在激活时自动在数据库中创建,Dictionary 与数据库的对应关系:
| Dictionary | Database |
|---|---|
| 同名 | 同名 |
| 同字段名 | 同字段名 |
| Dictionary 数据类型 | 转换为对应 DB 数据类型 |
💡字段顺序
Dictionary 中的字段顺序可以与数据库中的不同。这允许插入新字段而不转换表(ALTER TABLE 添加新列)。
两级域概念 (Two-Level Domain Concept)
1 | ┌─────────┐ |
- 同一个域(S_AIRPID)可被不同数据元素复用
- 不同数据元素赋予不同的语义含义(出发 vs 到达)
表字段定义
| Component (要素) | Description (描述) |
|---|---|
| Key Fields (键字段) | 主键,唯一标识每条记录 |
| Data Elements (数据元素) | 定义字段的语义和技术属性 |
| Built-in Type | 可直接指定类型(不经过域/数据元素) |
| Currency/Quantity | CURR/QUAN 类型必须指定引用表和引用字段 |
⚠️货币/数量字段引用
CURR 字段 → 引用表中的 CUKY 字段
QUAN 字段 → 引用表中的 UNIT 字段
引用字段在运行时才关联,不是定义时。
QUAN 字段 → 引用表中的 UNIT 字段
引用字段在运行时才关联,不是定义时。
Include 结构
规则
| Rule (规则) | Detail (详情) |
|---|---|
| 用途 | 避免冗余结构定义 |
| 链中数据库表 | 只能有一个(表本身) |
| 嵌套 Include | Include 中可以包含 Include |
| 外键传递 | Include 中的外键定义会传递到父表 |
| 整表 Include | 必须包含整个表 |
操作方式
- 菜单方式:
Edit → Include → Insert - 手动方式: 在 Component 列输入
.INCLUDE(注意前面的点),然后指定结构名
1 | ZEMPLOY## 表 |
表的透明表 vs 结构
| Feature | Transparent Table | Structure |
|---|---|---|
| 数据库对象 | 有(自动创建) | 无 |
| 可存数据 | 是 | 否(仅类型定义) |
| 用途 | 数据存储 + 类型定义 | 仅定义类型 |