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

一、视图类型概述

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. 测试建议

    • 验证视图选择性能
    • 测试更新操作(如适用)
    • 检查锁机制(维护视图)
相关推荐
-孤存-22 分钟前
MyBatis数据库配置与SQL操作全解析
数据库·mybatis
2301_822366351 小时前
使用Scikit-learn构建你的第一个机器学习模型
jvm·数据库·python
万邦科技Lafite3 小时前
一键获取京东商品评论信息,item_reviewAPI接口指南
java·服务器·数据库·开放api·淘宝开放平台·京东开放平台
自可乐3 小时前
Milvus向量数据库/RAG基础设施学习教程
数据库·人工智能·python·milvus
weixin_307779133 小时前
C#实现两个DocumentDB实例之间同步数据
开发语言·数据库·c#·云计算
盒马coding3 小时前
深度解密MySQL2PG工具MySQL至PostgreSQL语法全景拆解过程
数据库·mysql·postgresql
tb_first3 小时前
万字超详细苍穹外卖学习笔记2
java·jvm·数据库·spring·tomcat·maven
Nandeska3 小时前
13、MySQL半同步复制示例
数据库·mysql
液态不合群3 小时前
【面试题】MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?
android·数据库·mysql
ytgytg283 小时前
HC小区管理系统安装,提示redis连接错误
数据库·redis·缓存