本DEMO使用ADT,以EPM场景中的现有数据定义,从创建一个简单数据模型(创建一个DDL Source)开始,然后执行“自动发布”流程将ABAP CDS View作为OData服务公开给SAP Gateway以发布到前端,前端注册后在消费层再使用SAP Fiori Smart Template快速创建列表查询功能的应用消费服务,整个过程不需要写一句代码,通过DEMO可以了解一些基本的CDS View Annotation,并且理解CDS View转OData服务并使用服务的完整过程。
参考
一、创建并发布OData服务
1.1 基于 ABAP CDS View创建一个Data Model
使用ADT的向导3步创建一个基于DDL源作为相关的ABAP存储库对象。
- 为CDS View创建一个DDL Source文件
DDL Source表示用于定义ABAP CDS Entity的ABAP开发对象(如一个CDS View),有了DDL源,就有了CDS View的适当开发对象,可以使用它来直接访问标准ABAP工作台功能,例如语法检查、激活或连接到传输管理器。
操作:ADT使用Resource操作界面,在Project里new一个
- Implement the CDS View为一个Data Model
下图几点说明如何Implement一个简单的CDS View为Data Model。激活保存后,会生成两个ABAP对象:
a. 实际CDS View entity ‘ZDEMO_DDL_SALES_ORDER_ITEM’
b. 一个SQL View ‘ZDEMO_SOI’
- 预览数据验证结果
打开对象预览数据
此时也可以使用SE11查看View对象‘ZDEMO_SOI’
其实取这个SEPM_I_SalesOrderItem_E也并不是一个物理表,也是一个CDS View,可以通过Ctrl+双击来一层层查看最终对象。
1.2 将CDS View对外暴露成一个OData服务
这是一种新的简单的创建OData服务的方法,通过在增加关键字‘@OData.publish:true’来暴露服务,创建基于SADL(Service Adaption Description Language服务适应描述语言)提供OData模型定义和OData服务Runtime对象。下图帮助我们理解这其中过程,ADT编辑并激活ABAP CDS View,同步到后端DDL Source文件,在后端生成Service Artifacts和CDS Odata Runtime。后端通过TCODE:/IWFND/MAINT_SERVICE 将服务注册到前端服务器并激活服务。
也分解为3步:
-
从CDS View生成服务构件
有几个前提,首先DDL Source要能正常同步,数据列表字段中至少有1个字段声明为主键字段,还有CDS View名的长度不超过26位字符串。
ABAP开发工具ADT将激活请求委托给SADL(服务适应描述语言)框架。反过来,SADL生成几个网关构件Service Artifacts,这些构件作为ABAP对象存储在应用服务器的后端,- 实际Service Artifacts技术名称是 <CDS_VIEW>_CDS (object type: R3TR IWSV)
- 一个Gateway Model, <CDS_VIEW>_CDS (object type: R3TR IWMO)
- 用于向SAP Gateway 服务提供模型元数据的ABAP类CL_<CDS_VIEW>
这些Service Artifacts对象会被自动打到和CDS View同一个package里以后续传输,稍后在SAP Gateway hub中激活OData服务时需要。
操作:
ADT: 增加annotation ‘@OData.publish:true’ 并激活对象 -
SAP GATEWAY激活服务。
必须在SAP Gateway中激活该OData服务,这一步实际是在Gateway建立了技术OData服务名称与相应后端服务之间的映射。在这个激活过程中,会创建更多的新对象:- SAP Gateway Service Group Metadata Object 服务组元数据对象(对象类型:R3TR IWSG),名称为Z<CDS_VIEW>CDS,该对象类型是IWSG,包含网关的服务组元数据,就是实际的OData服务。
- 一个SAP Gateway Model Metadata object 模型元数据对象(对象类型:R3TR IWOM),名称为Z<CDS_VIEW>CDS_BE,表示实际的OData服务的结构。
另外服务会被增加到的 TCODE /IWFND/MAINT_SERVICE的Service Catalog 中
操作:
后端服务器 GUI TCODE: /IWFND/MAINT_SERVICE 注册服务
-
注册后测试服务,有多种方法可以测试
- ADT中直接测试已注册的服务
操作:
鼠标放到前面的小灰点,点击OData-Service,弹出浏览器窗口显示服务详细信息(和打开浏览器自己输入相应服务地址效果一样)
点击其中的Collection,返回Entityset数据 - 可使用SAP Gateway Client进行测试
此时实际可以看到该CDS View暴露的OData服务已经可以正常访问并且自动创建了entityset ‘ZDEMO_DDL_SALES_ORDER_ITEM’,通过调用该entityset的服务可以看到所有的数据(1298条)都被成功select。
- ADT中直接测试已注册的服务
-
如果没是保存在本地package的服务还可以在SICF服务节点中点击测试服务
二、消费使用服务
本例使用SAP Fiori Smart Templates来消费上面创建的OData服务创建一个List-Reporting 应用。
2.1 WEB IDE创建Fiori App
使用Cloud WebIDE或是个人版IDE
Cloud地址:https://cockpit.hanatrial.ondemand.com/cockpit/#/home/trial
(自行网络搜索如何注册试用版 Cloud WebIDE)
这里以本地个人版WEB IDE进行开发演示,下载地址:
启动WEB IDE 服务
启动WEB IDE
http://localhost:8080/webide/index.html
选择使用模版创建项目
这就完了,完成后会在IDE workspace中自动生成project所需文件。
2.2 Fiori Launchpad执行App
(准确说这并不是真正的Launchpad,只是本地的Sandbox,但可以看到发布到Launchpad后的效果)
右键run,在IDE中有多种运行方式,以Launchpad 为例
调整过滤器,选择要作为过滤条件(选择条件,可以保存变式)的字段:
配置要显示的数据字段,类似ALV的布局(也可以保存布局):
设置后的字段:
点击输入帮助按钮,弹出窗口的GUI中的select-option基本一致
至此,一个简单由创建CDS开始,然后前端后端不需要写一行代码就可以生成一个有基本功能的报表,CDS Annotation和Fiori Template大大提高的开发效率。点赞