以下为正文

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

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

可以关注我的公众号。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

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