Append 结构与表增强 (★★★★)
Append 结构与表增强 (★★★★)
#abap #abap-dictionary #abap-tables
概览表
| Enhancement Type (增强类型) | Description (描述) | Need Reservation (需预留) |
|---|---|---|
| Customizing Include | SAP 预留的增强位置 | 是 |
| Append Structure | 追加到表末尾 | 否 |
Append 结构
Append 结构允许在不修改 SAP 标准表的情况下追加字段。
1 | SAP Standard Table: ZEMPLOY## |
Append 结构特性
| Property (特性) | Detail (详情) |
|---|---|
| 一对一关系 | 一个 Append 结构只能分配给一个表 |
| 多个 Append | 一个表可以有多个 Append 结构 |
| 自动激活 | Append 结构创建/修改时,父表自动激活 |
| 类型可用 | Append 结构本身也是一个可用的类型 |
| 升级安全 | 客户命名空间,升级时不会被覆盖 |
字段命名规则
1 | 客户开发: 字段名以 YY 或 ZZ 开头 |
⚠️命名冲突
不遵循命名规范的字段可能在 SAP 升级时与新字段冲突。
Append 结构的限制
| Restriction (限制) | Detail (详情) |
|---|---|
| 池表/簇表 | 不能使用 Append 结构 |
| LCHR/LRAW 字段 | 含长字段的表不能使用(长字段必须在最后) |
| 转换需求 | 不需要(ALTER TABLE 添加字段) |
附加功能 (4.6C 起)
- 可为表中已有字段定义外键
- 可为已有字段附加搜索帮助
Customizing Include
SAP 在标准表/结构中预留位置供客户增强:
1 | SAP Standard Structure: |
- 使用
Extras → Enhancement Category管理 - 客户需要创建 Include 结构来填充这些位置
增强类别 (Enhancement Category)
为了控制结构增强对程序的影响,设置了增强类别:
| Level | Category (类别) | Meaning (含义) |
|---|---|---|
| 1 | Not classified | 无类别 |
| 2 | Not enhanceable | 不可增强 |
| 3 | Enhanceable and character-like | 所有组件必须为字符型 |
| 4 | Enhanceable and character-like or numerical | 不能含深层类型 |
| 5 | Freely enhanceable | 任意类型 |
📌Unicode 环境影响
结构增强在 Unicode 环境下更严格:
- 改变碎片视图 (Fragment View)
- 影响赋值检查和比较
- 数值型/深层组件插入纯字符结构会改变其特性
类别继承规则
- Include/子结构的增强类别不能大于父结构
- 例如:父结构含 Level 4 的 Include → 父结构不能是 Level 2 或 3
复制表的注意事项
💡复制时 Append 字段
如果复制一个有 Append 结构的透明表,Append 字段会变成普通字段。
创建步骤
1 | 1. SE11 → 显示目标表 |
考试/测试模式
| Scenario/Keyword (场景/关键词) | Answer (答案) |
|---|---|
| “Append 字段命名规范?” | YY 或 ZZ 开头 |
| “Append 需要表转换吗?” | 不需要(ALTER TABLE) |
| “哪些表不能用 Append?” | 池表、簇表、含 LCHR/LRAW 的表 |
| “Append 结构能用于多个表吗?” | 不能,一对一关系 |
| “复制有 Append 的表会怎样?” | Append 字段变为普通字段 |