探索 HANA 上的 ABAP [1]:CDS View简介

2021-11-07 21:27发布


          点击此处--->   EasySAP.com 群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)

这是探索 HANA 上的 ABAP 系列的第一篇文章,它将涵盖 HANA 对象(如 CDS、AMD、ALV IDA 等)上的 ABAP。

在这篇文章中你将学到

  • 什么是 CDS 视图?

  • 如何在 Eclipse 中创建 CDS 视图?

什么是 CDS 视图?

CDS 或核心数据服务是 SAP 代码下推方法的一部分,您尝试在数据库层而不是应用程序层做尽可能多的事情。代码下推的一个示例可以是使用 SQL 中的聚合函数在数据库层计算聚合,而不是将所有数据放入应用程序层并计算聚合。

CDS 提供诸如关联等关系定义、货币转换等内置功能、扩展、注释等语义功能以及所有 SQL 增强功能等功能。

CDS 是在 ABAP 7.40 SP05 中引入的,随后在 SP08、SP10、ABAP 7.50 SP00 等中添加了附加功能。

一个示例和一个简单的 CDS 视图如下所示。

@AbapCatalog.sqlViewName: 'DEMO_CDS_PRJCTN'
@AccessControl.authorizationCheck: #NOT_REQUIRED
define view demo_cds_spfli
  as select from
    spfli
    {
      key spfli.carrid,
      key spfli.connid,
          spfli.cityfrom,
          spfli.cityto
    }

我们从中得到的信息是

  1. 视图的名称是demo_cds_spfli

  2. 在顶部,我们有一个注释,告诉我们相关 SQLView 的名称 - DEMO_CDS_PRJCTN

  3. 另一个注释说不需要授权检查

  4. 它从表spfli 中选择数据

  5. 选择的字段是carrid、connid、cityfromcityto,前 2 个是关键字段

阅读和理解很简单,对吧?在这个例子中,我们可以将 CDS 视图想象成一个写在某种可重用容器中的查询,该容器可以被执行以获取数据。

如何创建 CDS 视图?

CDS 视图只能从 Eclipse 中的 ABAP 开发工具 (ADT) 创建。您不能从 SAPGUI 创建 CDS 视图。

1. 右键单击您的包,新建 > 其他 ABAP 存储库对象

2. 搜索“Data Definition”,选择节点Data Definition,点击Next

3. 输入名称和描述,然后单击下一步

4. 选择/创建传输请求,单击下一步。

5.选择模板Define View并点击Finish

6. CDS 视图将被创建并显示如下。

7. 输入 sqlViewName,编辑 data_source_name 并添加字段。用逗号分隔 { ... } 中的元素。


要使用输入字段名称的帮助,请使用Ctrl + Space


8. 完成 CDS 视图,如下所示。

@AbapCatalog.sqlViewName: 'ZJP_SQL_SMPL'@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Simple CDS View'
define view ZJP_SIMPLE_CDS as select from spfli {    key carrid as Carrid,    key connid as Connid,    countryfr as Countryfr,    cityfrom as Cityfrom,
    airpfrom as Airpfrom,
    countryto as Countryto,
    cityto as Cityto,
    airpto as Airpto}

9. Activate

10. 要测试 CDS 视图,请右键单击您的 CDS 视图/数据定义并选择选项

打开方式 > 数据预览。

11. 或者,您可以简单地使用应用程序工具栏按钮 Run As.. 执行 CDS 视图,然后选择 ABAP 应用程序。

12. 得到如下输出。

在 ABAP 代码中,CDS 视图的使用类似于数据库视图或表。

SELECT * FROM zjp_simple_cds
    INTO TABLE @DATA(cds_data_tab).
IF sy-subrc EQ 0.
  cl_demo_output=>display( cds_data_tab ).
ENDIF.

下一篇文章将介绍 CDS 视图中的连接。


赞赏支持