在 ADT 里创建普通 CDS view entity 时,我们已经形成了一套非常稳定的思维习惯。定义数据源,写select from,声明字段、association 和 annotation,激活 CDS,底层 SQL 交给 SAP HANA 执行。到了CDS custom entity,这套思维突然不完全成立了。代码里仍然能够看到熟悉的 CDS element、数据类型、association 和 annotation,却找不到select from。继续往下追,会发现真正负责读取数据的代码跑到了一个 ABAP class 里。再往 RAP runtime 追踪,请求最终进入IF_RAP_QUERY_PROVIDER~SELECT。数据甚至可以完全不来自 SAP HANA,而是来自远程 OData service、RFC、BAPI、LiveCache,或者某个只能通过 ABAP API 访问的数据源。这正是Custom Entity最有价值的地方。它仍然属于 CDS data model,但不再要求数据一定能够通过 SQL 描述。SAP 官方把 CDS custom entity 定义为一种 non-SQL CDS entity,它本身不包含针对底层数据源的SELECT,实际 query 由 ABAP class 实现。官方同时将 custom entity 归类为 transient entity。Transient entity 不会在 SAP HANA 上生成对应的数据库 artifact,也不能作为
阅读完成 · 觉得有帮助?