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

公众号:matinal
本文作者:matinal
 

 

前言部分

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

正文部分

使用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

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

可以关注我的公众号。

posted @ 2019-07-14 15:27  SAPmatinal  阅读(691)  评论(0编辑  收藏  举报