CDS视图作为表的替换对象

1.表替换对象的基本原理

  • HNAN 可使用此表替代功能(Table Replacement Objects).
  • 可以将CDS视图定义为ABAP词典中数据库表或经典数据库视图的替换对象。
  • 如果已分配了替换对象,则通过Open SQL语句SELECT进行的任何读取访问都将重定向到替换对象。
  • 标准替换对像可查看表:MCHB,使用了替换对像NSDM_E_MCHB
  • 当使用有替换对像的(比如MCHB)的SELECT,时其中调用的是替换对像的内容(比如调用的结果其中是 NSDM_E_MCHB),所以在使用此表做新的CDS时,注意结果差异。

2.替换对象的先决条件

匹配结构类型

  • 相同数量的组件
  • 相同的组件名称(例外:客户字段)
  • 相同的技术类型,包括长度和小数

注意:组件的顺序可以不同

CDS视图的限制

没有输入参数

客户系统的限制

  • 仅用于(自己的)词典视图的替换对象
  • 没有表的替换对象
CDS视图作为表的替换对象 - 第1张  | 优通SAP
替换对象的基本原理
CDS视图作为表的替换对象 - 第2张  | 优通SAP

3.分配替换对象

为了使CDS视图成为表或经典Dictionary视图的替换对象,请按照下列步骤操作:

  1. 打开表定义或“词典”视图(事务SE11,SE80)。
  2. 从菜单中,选择附加–>代理对象。
  3. 在对话框上,输入CDS视图的名称。
  4. 选择应用。

如果是第一次定义替换对象,系统将检查指定的CDS视图是否满足前提条件。如果稍后更改用作替换对象的CDS视图并且不再满足先决条件,则在数据库表或数据库视图上执行Open SQL读取时,将发生运行时错误DBSQL_REDIRECT_INCONSISTENCY。

CDS视图作为表的替换对象 - 第3张  | 优通SAP

4.替换对象的应用方案

消除汇总表

  • 替换汇总表(填写后台作业)
  • 替换的CDS视图实时聚合数据。

效益

轻松集中地重定向所有读取访问。

支持重新设计数据模型

新数据模型替代旧数据模型

替换旧数据库表

替换的CDS视图将访问新表并重建旧表的内容。

效益:

轻松集中地重定向所有读取访问

注意:必须手动调整所有写访问权限!

5.问题

一开始,我在SAP GUI中SE11,创建表(ZTUSER),并在HANA STUDIO中创建了对应的CDS,然后我在SE11中,想把表的替换对像修改为自己的CDS,但发现替换对像位置是灰色的,不能修改,找个很多方法在SAP GUI中也修改不了。

最后发现,只能在HANA Studio中打开表定义,并在其中加入“@AbapCatalog.replacementObject : ‘你需要替换的CDS名’”,激活后,SE11打开,就会发现替换对像已修改为了,自己指定的了。

比如以下是我的表ZTUSER,使用替换对像zuser_i_proxy。