前言部分
大家可以关注我的公众号,公众号里的排版更好,阅读更舒适。
正文部分
使用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的文章
有兴趣可以关注一下