单元 7:视图与维护视图练习(8 道题)

单元 7:视图与维护视图练习(8 道题)

#practice #abap #abap-dictionary #abap-views

相关概念

📌关键模式(点击展开)
Keyword (关键词) Answer (答案)
数据库视图 Join Inner Join(内连接)
维护视图 Join Outer Join(外连接)
多表视图可写? 不能,只能读
维护视图连接条件 从外键自动派生
单表维护事务 SM30
视图集群维护事务 SM34
维护界面生成 SE54
动态包含 *(包含全部),-(排除)

问题 1 - 视图构建三步骤 [recall]

数据库视图的构建由哪三步操作构成?

📌显示答案
  1. JOIN(连接/叉积):表之间的笛卡尔积,产生所有组合
  2. JOIN Condition(连接条件):如 SCARR-CARRID = SFLIGHT-CARRID,仅保留匹配记录
  3. 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 TypeOne-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 个