各种视图类型的创建方法和区别

一、视图类型概述

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
}

创建步骤

  1. ABAP CDS:ADT(Eclipse)中创建
  2. 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';

五、创建决策指南

如何选择视图类型?

  1. 简单字段筛选 → 投影视图
  2. 多表查询 → 数据库视图
  3. 数据维护界面 → 维护视图
  4. 高性能分析 → CDS视图
  5. F4帮助 → 搜索帮助(代替帮助视图)

注意事项:

  1. 性能:数据库视图在数据库层执行,CDS视图有优化
  2. 维护:维护视图自动生成维护程序
  3. 兼容性:CDS需要SAP NetWeaver 7.4+
  4. 连接限制:数据库视图最多5个表

六、最佳实践

  1. 命名规范

    • 视图:Z/Y 开头
    • CDS视图:Z_ 前缀
    • 维护视图:ZMAINT_ 前缀
  2. 性能优化

    abap 复制代码
    * 使用SELECT语句验证视图性能
    SELECT * FROM zdb_view INTO TABLE @itab
      WHERE matnr IN @s_matnr.
  3. 权限控制

    • 数据库视图:通过基表权限控制
    • CDS视图:使用DCL(Data Control Language)
  4. 测试建议

    • 验证视图选择性能
    • 测试更新操作(如适用)
    • 检查锁机制(维护视图)
相关推荐
zhoupenghui1682 小时前
项目访问接口时报“MISCONF Redis is configured to save RDB snapshots, ...“错误的解决方案
数据库·redis·mybatis
byzh_rc2 小时前
[模式识别-从入门到入土] 支持向量积SVM
数据库·人工智能·算法
程序员水自流2 小时前
MySQL常用SQL语法及参数详细介绍(新手经验书)
java·数据库·sql·mysql·oracle
Rhys..2 小时前
js-三元运算符
前端·javascript·数据库
倔强的石头1062 小时前
金仓数据库 MongoDB 兼容:多模融合下的架构之道与实战体验
数据库·mongodb·架构·kingbase
coder_xiaoyou2 小时前
MYSQL ReadView
数据库
川石课堂软件测试2 小时前
软件测试的白盒测试(二)之单元测试环境
开发语言·数据库·redis·功能测试·缓存·单元测试·log4j
micro_cloud_fly2 小时前
如何使用 IDEA自带的数据库工具导出 pgsql 的DDL
数据库
nvd112 小时前
在 Cloud SQL for PostgreSQL 上启用 pgvector
数据库·postgresql