SAP CDS View 开发「实例」

本文介绍了CDS基础概念及其在开发环境ADT中的使用,通过实例展示了如何创建CDS数据定义,并提供了CDS语法示例。同时,对比了CDS视图查询与ABAP视图查询的差异,帮助读者理解这两种查询方式在实际操作中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

  • CDS 基础概念
  • CDS 意义 & 使用场景
  • 开发环境 ADT 部署
  • CDS 实例 & 语法
  • ABAP 视图查询

CDS 概念

参见文章:CDS View-Part 1 & Part 2 介绍


开发环境

To install the front-end component of ADT, proceed as follows: 「消息源

  1. Get an installation of Eclipse 2022-09 (x86_64) (e.g. Eclipse IDE for Java Developers)

  2. Get the right version for your own Eclipse.

  3. In Eclipse, choose in the menu bar Help > Install New Software…在这里插入图片描述

  4. Enter the URL https://tools.hana.ondemand.com/latest

  5. Press Enter to display the available features.

  6. Select ABAP Development Tools and choose Next.

  7. On the next wizard page, you get an overview of the features to be installed. Choose Next.

  8. Confirm the license agreements and choose Finish to start the installation.

  9. Toggle the Panel View.[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-93ObCGuw-1669792079296)(./assets/SAP-CDS-View-02.png)]


CDS 实例

创建 ABAP Project,配置 Router 账户等相关信息 连接 服务器,按照提示一步步来即可

在这里插入图片描述

创建实例 Data Definition

在这里插入图片描述

Package 按需填写,我在这里不传输,$TMP 本地对象即可,填写 Name and Description

在这里插入图片描述

选择模板,Finish 即可

在这里插入图片描述

以模板为基底,写一个简单的 DEMO

在这里插入图片描述

实例具体代码如下:

/*指定了数据库 SQL View 的名字,在 CDS View 激活时,会在数据库层生成对应的 SQL View*/
@AbapCatalog.sqlViewName: 'ZV_DEMO01' /*(SE11 可查看,最长 16 位字符)*/
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true /*值为 TRUE 时,SQL view 中的 key 字段使用 CDS 中定义的 key; 值为 FALSE 时,使用 DB table 中 table 的 key field.*/
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'CDS_BASIC_DEMO'
// First DEMO
define view ZCDS_DEMO01 /* CDS 视图(最长 30 个字符,与 SQL view 两者在开发应用基本相同,命名不可重名*/
  as select from sbook
{
  carrid,
  connid
}

Ctrl + F3 激活后 F8 执行(快捷键与 GUI 端大体一致)

在这里插入图片描述


CDS 语法

参见文章:SAP CDS View 基础语法


ABAP 视图查询

注意与 SELECT 底表时查询条件的 差异

在这里插入图片描述

CDS 代码如下:

@AbapCatalog.sqlViewName: 'ZVDEMO03'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'between and'
define view ZCDS_DEMO03
  with parameters
    p_distance_l : s_distance,
    p_distance_h : s_distance,
    p_unit       : s_distid,
    p_mandt      : mandt
  as select from spfli
{
  key mandt,
  key carrid,
  key connid,
      cityfrom,
      cityto,
      distance,
      distid
}
where distid = :p_unit
  and distance between :p_distance_l and :p_distance_h
  and mandt = :p_mandt

ABAP 代码如下:

*&--- 选择屏幕
SELECTION-SCREEN BEGIN OF BLOCK bk1 WITH FRAME TITLE TEXT-101.
PARAMETERS: p_unit  LIKE spfli-distid,
            p_mandt LIKE spfli-mandt,
            p_dis_l LIKE spfli-distance,
            p_dis_h LIKE spfli-distance.
SELECTION-SCREEN END OF BLOCK bk1.

START-OF-SELECTION.
  PERFORM frm_get_data. " 获取航班数据

*&--- 获取航班数据
FORM frm_get_data.

  SELECT *
    INTO TABLE @DATA(lt_data)
    FROM zvdemo03_yakub( p_unit = @p_unit, p_distance_l = @p_dis_l, p_distance_h = @p_dis_h, p_mandt = @p_mandt ).

  cl_demo_output=>display( lt_data ).

ENDFORM.

查询结果:

在这里插入图片描述

### 关于 SAP CDS 视图映射到旧表 在 SAP 中,CDS(Core Data Services)视图是一种用于定义数据模型的强大工具。它允许开发者通过 ABAP 数据字典中的现有结构来创建新的逻辑视图。当需要将 CDS 视图映射到现有的传统数据库表时,可以通过特定的方式实现这一目标[^1]。 #### 映射方法概述 为了使 CDS 视图能够访问传统的 SAP 表格,可以利用 `@AbapCatalog.sqlViewName` 注解指定 SQL 视图名称,并确保该视图基于所需的旧表格构建。此过程通常涉及以下几个方面: - **注解配置**:使用 `@AbapCatalog.sqlViewName` 和其他相关注解来声明如何处理底层的数据源。 示例代码如下所示: ```abap @AbapCatalog.sqlViewName: 'ZMY_CDS_VIEW' define view Z_MY_CDS_VIEW as select from MARA { MATNR, MTART, MEINS } where MTART = 'FERT'. ``` - **字段匹配**:如果新定义的 CDS 字段名与原有表不一致,则需手动调整字段命名或者应用别名机制以保持一致性[^2]。 - **性能优化考量**:由于涉及到跨层查询操作,在设计阶段就需要充分考虑可能带来的性能影响并采取适当措施加以缓解[^3]。 #### 实现细节说明 对于更复杂的场景比如关联多个老版本表的情况,也可以借助 JOIN 子句完成多表联接功能;同时还可以引入计算列等功能扩展基础数据集的内容范围。下面是一个简单的例子展示如何连接两张不同的历史表形成一个新的虚拟实体表示形式: ```abap @AbapCatalog.sqlViewName: 'ZJOINED_TABLES' define view Z_JOINED_TABLES as select from mara as a inner join marc as b on a.matnr = b.matnr { a~matnr, a~mtart, b~werks } ; ``` 上述示例展示了如何把物料主记录 (`MARA`) 同工厂级别存储信息(`MARC`)结合起来生成一个综合性的视图表象[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wriprin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值