当前位置: 代码迷 >> 综合 >> 【第七篇】SAP HANA XS使用Data Services查询CDS实体【一】
  详细解决方案

【第七篇】SAP HANA XS使用Data Services查询CDS实体【一】

热度:98   发布时间:2023-12-21 22:30:31.0

前言部分

大家可以关注我的公众号,公众号里的排版更好,阅读更舒适。

正文部分

使用SAP HANA XS数据服务(XSDS)库来查询CDS实体,类似于JavaScript对象一样。

CDS是什么,请参考另一篇文章,链接如下,或者直接去SAP官网看介绍

点击进入:SAP HANA XS CDS简介

由于时间关系,不过多介绍概念内容,直接说过程

导入XS DS库并通过变量引用它。

1、导入XS DS库并通过变量引用它。

?
var XSDS = $.import("sap.hana.xs.libs.dbutils", "xsds");?

2、导入要查询的CDS实体。

?
var soItem = XSDS.$importEntity("sap.hana.democontent.epm.data",
"EPM.SO.Item");
var soHeader = XSDS.$importEntity("sap.hana.democontent.epm.data",
"EPM.SO.Header", {items: {$association: {$entity: soItem,$viaBacklink: "SALESORDERID"}}
});?

3、添加查询。与实体相关的一般查询是通过调用实体构造函数的$ query()方法构建的。

?
var qOrders = soHeader.$query();?

4、优化查询。

?
qOrders = qOrders.$limit(3);?

5、执行查询。使用$ execute方法运行查询

?
var result = qOrders.$execute();?

6、指定查询应返回的字段。

 

使用$ project()方法创建一个查询,该查询指定查询应返回的字段。

?
var qOrderAndItemTitles = qOrders.$project({SALESORDERID: true,NETAMOUNT: "TotalNet",items: {NETAMOUNT: true}
});?

投影字段的列表是一个JavaScript对象,其中所需字段由true或String文字标记

?
[{"SALESORDERID": "0500000236","TotalNet": 273.9,"items": {"NETAMOUNT": 29.9}
}, {"SALESORDERID": "0500000236","TotalNet": 273.9,"items": {"NETAMOUNT": 102}
}, {"SALESORDERID": "0500000236","TotalNet": 273.9,"items": {"NETAMOUNT": 55}
}]?

实际的数据库查询根据所涉及的关联自动加入所有需要的表。 在上面的示例中,生成的SQL如下所示:

?
SELECT "t0"."SALESORDERID" AS"t0.SALESORDERID","t0"."NETAMOUNT" AS "t0.NETAMOUNT","t0.items"."NETAMOUNT" AS "t0.items.NETAMOUNT"
FROM "Header" "t0"
LEFT OUTER JOIN "Item" "t0.items"ON "t0"."SALESORDERID"="t0.items"."SALESORDERID"
LIMIT 10?

今天先写到这,后续内容下一篇更新。

可以关注我的公众号。

博客转移,点击进入:【第七篇】SAP HANA XS使用Data Services查询CDS实体【一】

我在公众号里写了很多SAP的文章

有兴趣可以关注一下

 

 

 

 

  相关解决方案