ABAP 视图

ABAP 视图

📊 视图的基本概念

定义

视图的行为就像数据库表,但不会占用存储空间。视图类似于虚拟表 - 一个没有任何物理存在的表。

视图的创建方式

通过组合包含关于应用对象的信息的一个或多个表的数据来创建视图。使用视图,可以:

  1. 表示表中数据的子集
  2. 将多个表连接到单个虚拟表中

数据分布

应用程序对象相关的数据通过使用数据库视图分布在多个表中。它们使用内部连接条件来连接不同表的数据。

🔍 视图的类型

1. 维护视图

  • 用途:用于显示和修改存储在应用程序对象中的数据
  • 特点:每个维护视图都具有与其关联的维护状态
  • 应用:业务数据的维护操作

2. 投影视图



graph TB
    A[投影视图] --> B[筛选字段]
    A --> C[隐藏不需要的字段]
    A --> D[显示相关字段]
    
    B --> B1[选择需要的列]
    C --> C1[屏蔽敏感字段]
    D --> D1[简化数据展示]

投影视图的特点

  • 表限制:必须在单个透明表上定义
  • 内容:只包含一个表
  • 选择条件:不能为投影视图定义选择条件

🛠️ 创建视图

步骤1:启动事务

在ABAP字典的初始屏幕上选择”查看”单选按钮,输入要创建的视图名称(如ZVIEW_TEST),然后单击创建按钮。

步骤2:选择视图类型

选择”投影视图”单选按钮,同时选择视图类型,点击复制按钮。进入”Dictionary: Change View”屏幕。

步骤3:输入基本信息

基本属性设置

属性 描述 示例
视图名称 视图的唯一标识 ZVIEW_TEST
短文本 视图的描述 “测试投影视图”
基准表 视图基于的表 ZCUSTOMERS1

步骤4:选择表字段

点击”表格字段”按钮,在投影视图中包含CUSTOMERS表格的字段。

字段选择

  • 显示表ZCUSTOMERS1屏幕中的字段
  • 选择要包含在投影视图中的字段
  • 如:客户、客户编号、姓名等

步骤5:确认字段选择

点击复制按钮后,投影视图的所有选定字段将显示在”Dictionary: Change View”屏幕上。

步骤6:定义访问方法

选择维护状态选项卡以定义访问方法:

访问选项 说明 用途
只读 只允许查看数据 数据展示
显示/维护允许的限制 有限制的维护 特定操作

从”数据浏览器/表视图维护”的下拉菜单中选择适当的选项。

步骤7:保存和激活

  1. 保存视图定义
  2. 激活视图

步骤8:测试视图

  1. 在”字典:更改视图”屏幕中,选择实用程序(M) > 显示ZVIEW_TEST选择屏幕的内容
  2. 点击执行图标
  3. 查看投影视图的输出

💡 视图的示例输出

输出示例

表CUSTOMERS 1由5个字段组成,投影视图中显示3个字段(客户、客户编号和名称),有4个条目:

客户编号 客户 名称
100001 C001 张三
100002 C002 李四
100003 C003 王五
100004 C004 赵六

🔧 视图的使用场景

1. 数据查询

1
2
* 使用视图查询数据
SELECT * FROM zview_test INTO TABLE lt_data.

2. 数据展示

1
2
3
4
* 在报表中使用视图
SELECT * FROM zview_test
WHERE customer = 'C001'
INTO CORRESPONDING FIELDS OF TABLE lt_result.

3. 报表开发

1
2
3
4
5
6
7
* 视图作为报表数据源
REPORT z_view_report.
TABLES: zview_test.

DATA: lt_data TYPE TABLE OF zview_test.

SELECT * FROM zview_test INTO TABLE lt_data.

📝 视图的优点

1. 数据安全性

  • 屏蔽敏感字段
  • 只显示必要的数据
  • 控制访问权限

2. 简化开发

  • 简化复杂的表连接
  • 预定义查询逻辑
  • 减少重复代码

3. 性能优化

  • 减少数据传输量
  • 只获取需要的字段
  • 优化查询性能

⚠️ 注意事项

1. 视图限制

  • 投影视图只能基于一个表
  • 不能在视图中定义选择条件
  • 视图不占用物理存储空间

2. 维护状态

  • 正确设置维护状态
  • 考虑数据安全性需求
  • 定义适当的访问权限

3. 性能考虑

  • 避免过度复杂的视图
  • 注意视图的查询性能
  • 合理使用索引