一、视图类型概述
1. 数据库视图(Database View)
- 技术类型:D
- 描述:在数据库层创建的视图,基于透明表
- 特点 :
- 直接映射到数据库
- 支持多表连接(最多5个表)
- 支持读写操作(有限制)
创建方法:
abap
SE11 → 选择 "视图" → 输入视图名 → 选择 "数据库视图"
1. 输入基表
2. 定义表间连接关系
3. 选择输出字段
4. 设置选择条件(可选)
5. 激活视图
2. 投影视图(Projection View)
- 技术类型:P
- 描述:单个表的字段子集
- 特点 :
- 只能基于单个表
- 主要用于屏蔽不需要的字段
创建方法:
abap
SE11 → 选择 "视图" → 输入视图名 → 选择 "投影视图"
1. 输入基表
2. 选择需要投影的字段
3. 维护表字段的技术属性
3. 维护视图(Maintenance View)
- 技术类型:C
- 描述:用于SM30维护的视图
- 特点 :
- 支持多表连接
- 自动生成维护对话框
- 需要表有外键关系
创建方法:
abap
SE11 → 选择 "视图" → 输入视图名 → 选择 "维护视图"
1. 定义表和连接关系
2. 设置外键连接
3. 创建维护对话框(SE54)
4. 帮助视图(Help View)
- 技术类型:H
- 描述:用于F4帮助的搜索帮助
- 特点 :
- 已基本被搜索帮助(Search Help)取代
- 需要表有外键关系
二、特殊视图类型
5. CDS视图(Core Data Services)
- 新一代数据建模技术
- 类型 :
- CDS DDIC视图:ABAP CDS
- CDS实体视图:HANA CDS
创建方法:
abap
// ABAP CDS视图示例
@AbapCatalog.sqlViewName: 'ZCDS_VIEW'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'CDS View Example'
define view Z_CDS_View as select from sflight {
key carrid,
key connid,
seatsmax,
seatsocc,
@Default: 0
seatsmax - seatsocc as seatsfree
}
创建步骤:
- ABAP CDS:ADT(Eclipse)中创建
- HANA CDS:HANA Studio中创建
6. 视图簇(View Cluster)
- 技术类型:V
- 描述:多个视图的逻辑组合
- 特点:用于复杂的数据结构
三、创建方法对比
| 视图类型 | 事务码 | 基于表数 | 主要用途 | 更新能力 |
|---|---|---|---|---|
| 数据库视图 | SE11 | 1-5个 | 报表、查询 | 有限更新 |
| 投影视图 | SE11 | 1个 | 字段筛选 | 可更新 |
| 维护视图 | SE11 | 多个 | SM30维护 | 完全可维护 |
| 帮助视图 | SE11 | 多个 | F4帮助 | 只读 |
| CDS视图 | ADT/Eclipse | 多个 | 高性能查询 | 只读 |
四、代码示例
1. 数据库视图示例
abap
* 在SE11中创建数据库视图 ZDB_VIEW
* 表连接: MARA + MAKT
* 字段: MATNR, ERSDA, ERNAM, MAKTX
* 条件: SPRAS = SY-LANGU
2. 维护视图示例
abap
* 创建维护视图 ZMAINT_VIEW
* 表: ZCUSTOMER, ZORDER
* 通过外键连接
* 生成维护对话框后可在SM30维护
3. CDS视图编程示例
abap
@AbapCatalog.sqlViewName: 'ZCDS_SFLIGHT'
define view ZCDS_FlightInfo as select from sflight
inner join scarr on sflight.carrid = scarr.carrid
{
key sflight.carrid,
key sflight.connid,
sflight.fldate,
sflight.price,
scarr.carrname,
sflight.currency as curr
}
where sflight.planetype = '747';
五、创建决策指南
如何选择视图类型?
- 简单字段筛选 → 投影视图
- 多表查询 → 数据库视图
- 数据维护界面 → 维护视图
- 高性能分析 → CDS视图
- F4帮助 → 搜索帮助(代替帮助视图)
注意事项:
- 性能:数据库视图在数据库层执行,CDS视图有优化
- 维护:维护视图自动生成维护程序
- 兼容性:CDS需要SAP NetWeaver 7.4+
- 连接限制:数据库视图最多5个表
六、最佳实践
-
命名规范:
- 视图:Z/Y 开头
- CDS视图:Z_ 前缀
- 维护视图:ZMAINT_ 前缀
-
性能优化:
abap* 使用SELECT语句验证视图性能 SELECT * FROM zdb_view INTO TABLE @itab WHERE matnr IN @s_matnr. -
权限控制:
- 数据库视图:通过基表权限控制
- CDS视图:使用DCL(Data Control Language)
-
测试建议:
- 验证视图选择性能
- 测试更新操作(如适用)
- 检查锁机制(维护视图)