单元 7:视图与维护视图练习(8 道题)
单元 7:视图与维护视图练习(8 道题)
#practice #abap #abap-dictionary #abap-views
相关概念
📌关键模式(点击展开)
| Keyword (关键词) | Answer (答案) |
|---|---|
| 数据库视图 Join | Inner Join(内连接) |
| 维护视图 Join | Outer Join(外连接) |
| 多表视图可写? | 不能,只能读 |
| 维护视图连接条件 | 从外键自动派生 |
| 单表维护事务 | SM30 |
| 视图集群维护事务 | SM34 |
| 维护界面生成 | SE54 |
| 动态包含 | *(包含全部),-(排除) |
问题 1 - 视图构建三步骤 [recall]
数据库视图的构建由哪三步操作构成?
📌显示答案
- JOIN(连接/叉积):表之间的笛卡尔积,产生所有组合
- JOIN Condition(连接条件):如 SCARR-CARRID = SFLIGHT-CARRID,仅保留匹配记录
- Projection(投影)+ Selection(选择):选择需要的字段 + 限制条件(如 WHERE CARRID = ‘DL’)
问题 2 - 数据库视图特性 [recall]
数据库视图有哪些关键特性?
📌显示答案
| 特性 | 详情 |
|---|---|
| Join 类型 | Inner Join(内连接) — 只返回所有表中都有匹配的记录 |
| 数据库创建 | 激活时自动在数据库中创建 |
| 修改处理 | 删除旧视图 + 重新创建 |
| 可读性 | 总是可读 |
| 可写性 | 仅单表视图可写 |
| 缓冲 | 支持(同表缓冲设置) |
| SQL 使用 | SELECT ... FROM view_name |
问题 3 - 维护视图与数据库视图对比 [recall]
维护视图与数据库视图在 Join 类型和可写性上有什么关键区别?
📌显示答案
| 特性 | 数据库视图 | 维护视图 |
|---|---|---|
| Join 类型 | Inner Join | Outer Join |
| 可写 | 仅单表 | 可读写(多表) |
| 外键要求 | 无 | 必须有 |
| 连接条件来源 | 手动/自动 | 从外键自动派生 |
| 缓冲 | 支持 | 不支持 |
Outer Join 意味着维护视图返回包括无匹配的记录,适合维护场景。
问题 4 - 维护界面生成 [recall]
使用哪个事务生成维护界面?需要指定哪些关键参数?
📌显示答案
使用事务 SE54(或从 SE11 菜单
关键参数:
Utilities → Table maintenance generator)。关键参数:
- Function Group:生成代码所在的函数组
- Authorization Group:访问权限控制
- Maintenance Type:One-step(单步/表格)或 Two-step(双步/概览+明细)
- Maintenance Screens:屏幕编号
- Recording Routine:是否记录到传输
问题 5 - 视图集群 [recall]
什么是视图集群 (View Cluster)?它解决了什么问题?
📌显示答案
视图集群将多个维护视图组合成一个维护界面,通过层级导航(Master → Detail)维护相关数据。
- 支持 N:M 关系和键增强
- 最大 14 个依赖视图
- 维护事务:SM34
- 创建步骤:先为每个表创建单独的维护视图 + SE54 生成维护界面,再在 SE54 中创建 View Cluster
问题 6 - 动态字段包含 [application]
你创建了一个包含 SPFLI 表所有字段的数据库视图。后来 SPFLI 表通过 Append 结构新增了一个字段 ZZBONUS。视图需要手动添加这个新字段吗?
📌显示答案
不需要手动添加。如果在视图定义中使用了动态包含符号
*(View Field = *, Table = SPFLI, Field Name = *),表新增字段时会自动包含在视图中。Append 结构添加的字段也会自动包含。如果需要排除某些字段,使用 - 符号(如 View Field = -, Field Name = PLANETYPE)。
问题 7 - 连接条件获取 [application]
你需要创建一个连接 SCARR 和 SFLIGHT 的数据库视图。获取连接条件的最快方法是什么?
📌显示答案
在视图创建界面使用 Relationships 按钮,系统会自动从外键复制连接条件(如 SCARR-CARRID = SFLIGHT-CARRID)。这比手动输入更快且减少错误。
也可以手动输入连接条件,但推荐使用 Relationships 按钮。
问题 8 - 视图选择分析 [analysis]
你需要为 HR 部门提供一个维护界面,同时编辑员工基本信息(主表)和员工联系方式(子表,与主表 1:N 关系)。应该使用数据库视图、维护视图还是视图集群?说明理由。
📌显示答案
应该使用视图集群 (View Cluster):
- 数据库视图不适合:仅 Inner Join,且多表视图只读
- 维护视图不适合:虽然支持多表读写,但仅支持 1:1 关系
- 视图集群最合适:
- 支持 N:M 和键增强关系
- 提供层级导航(员工概览 → 联系方式明细)
- 通过 SM34 维护
- 创建步骤:分别为两个表创建维护视图 → SE54 生成维护界面 → 在 SE54 中组合为 View Cluster
📌模式总结(点击展开)
| Keyword (关键词) | Answer (答案) |
|---|---|
| 数据库视图 Join | Inner Join |
| 维护视图 Join | Outer Join |
| 多表数据库视图 | 只读 |
| 维护视图连接条件 | 从外键自动派生 |
| 动态包含 | *(包含),-(排除) |
| 维护界面生成 | SE54 |
| 单视图维护 | SM30 |
| 视图集群维护 | SM34 |
| 视图集群最大依赖视图 | 14 个 |