维护视图与视图集群 (★★★★)
#abap #abap-dictionary #abap-views
概览表
| Type (类型) |
Key Point (要点) |
| Maintenance View |
Outer Join + 可读写 |
| View Cluster |
多个维护视图的组合维护界面 |
维护视图 (Maintenance View)
与数据库视图对比
| Feature |
Database View |
Maintenance View |
| Join 类型 |
Inner Join |
Outer Join |
| 可写 |
仅单表 |
可读写(多表) |
| 外键要求 |
无 |
必须有 |
| 连接条件 |
手动/自动 |
从外键自动派生 |
| 缓冲 |
支持 |
不支持 |
维护视图返回包括无匹配的记录,适合维护场景(主记录可能无明细记录)。
创建规则
- 所有表必须通过外键连接
- 主表的所有键字段必须包含在视图中
- 客户端字段必须包含(但不显示在维护界面)
- 键字段必须在功能字段之前
- 次表的额外键字段也必须包含
维护状态
| Status (状态) |
Description (描述) |
| Read only |
仅读取 |
| Read, change, delete, insert |
默认,完整 CRUD |
| Read and change |
读取+修改 |
维护界面生成
使用事务 SE54 或从 SE11 菜单 Utilities → Table maintenance generator:
| Parameter (参数) |
Description (描述) |
| Function Group |
生成代码所在的函数组 |
| Authorization Group |
访问权限控制(如 &NC无限制) |
| Maintenance Type |
One-step(单步/表格)或 Two-step(双步/概览+明细) |
| Maintenance Screens |
屏幕编号 |
| Recording Routine |
是否记录到传输 |
1
| 生成后 → SM30 输入表/视图名 → Maintain 按钮维护数据
|
维护视图不适合生产环境的标准操作,有数据不一致风险。
主要用于客户表/Customizing 表的数据录入。
维护视图的表关系要求
1 2 3 4
| Primary Table → Secondary Table 1 → Secondary Table 2 N:1 N:1
次表必须与主表(或之前的次表)保持 N:1 关系
|
视图集群 (View Cluster)
将多个维护视图组合成一个维护界面。
1 2 3 4 5
| View Cluster ├── Root View 1 (ZCARR##) │ ├── Child View 1 (ZPFLI##) │ └── Child View 2 (...) └── Root View 2 (...)
|
视图集群特性
| Feature |
Detail |
| 关系类型 |
支持 N:M 和键增强 |
| 最大视图数 |
1-2 个根视图 + 最多 14 个依赖视图 |
| 维护方式 |
层级导航(Master → Detail) |
| 事务码 |
SM34 |
创建步骤
1 2 3 4 5 6
| 1. 为每个表/视图创建单独的维护视图 → SE54 生成维护界面 2. SE54 → View Cluster → 创建 3. 定义对象结构(Header + Detail) 4. 生成字段依赖 5. 激活 6. SM34 → 输入集群名 → 维护
|
视图集群 vs 维护视图
| Feature |
Maintenance View |
View Cluster |
| 关系类型 |
仅 1:1 |
N:M、键增强 |
| 包含视图数 |
单个视图 |
多个视图 |
| 导航方式 |
平面 |
层级树 |
| 无键依赖 |
不支持 |
支持 |
考试/测试模式
| Scenario/Keyword (场景/关键词) |
Answer (答案) |
| “维护视图的 Join 类型?” |
Outer Join(外连接) |
| “维护视图的连接条件来源?” |
从外键自动派生 |
| “用什么事务维护?” |
SM30(单视图),SM34(集群) |
| “维护视图适用场景?” |
客户表/Customizing 表的数据录入 |
| “视图集群最大视图数?” |
最多 14 个依赖视图 |