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

一、视图类型概述

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

    • 验证视图选择性能
    • 测试更新操作(如适用)
    • 检查锁机制(维护视图)
相关推荐
小白勇闯网安圈9 小时前
Django 响应对象、文件上传与类视图
数据库·django·sqlite
努力的小雨10 小时前
同一份 SQL 跑多套环境:Ksql 变量怎么用才安全
数据库
科技绘图10 小时前
快鲸GEO vs 传统AI搜索优化:全链路自动化与高效内容生产在转化闭环上的对比
数据库·人工智能·自动化
ltl11 小时前
数据库作为 LLM 记忆体:语义缓存、RAG 与一致性
数据库
ltl11 小时前
WAL 与崩溃恢复:ARIES 协议怎么跑通
数据库
ltl11 小时前
TEE 数据库:EnclaveDB、Oblivious 原语与机密 SQL
数据库
麻瓜code12 小时前
【Mysql】重新学一遍 SQL 执行顺序
数据库·sql
这个DBA有点耶13 小时前
数据库一体机架构演进:从硬件堆叠到软硬深度耦合
服务器·网络·数据库·硬件架构·运维开发·database·数据库架构
一只fish13 小时前
优化器架构对比:Oracle vs PostgreSQL vs MySQL
mysql·postgresql·oracle
安_14 小时前
RAG的向量数据库:为LLM提供语义搜索能力
数据库