公众号:
SAP Technical
本文作者:
matinal
前言部分
大家可以关注我的公众号,公众号里的排版更好,阅读更舒适。
正文部分
使用SAP HANA XS数据服务(XSDS)库来查询CDS实体,类似于JavaScript对象一样。
CDS是什么,请参考另一篇文章,链接如下,或者直接去SAP官网看介绍
由于时间关系,不过多介绍概念内容,直接说过程
导入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
今天先写到这,后续内容下一篇更新。
可以关注我的公众号。