乐趣区

如何基于Restful-ABAP-Programming模型开发并部署一个支持增删改查的Fiori应用

Jerry 之前的文章 30 分钟用 Restful ABAP Programming 模型开发一个支持增删改查的 Fiori 应用 发布之后,有朋友问我,“没错, 我是在你的文章里看到了 Fiori 应用的界面,可是这个 Fiori 应用的源代码我在 SAP 云平台上什么地方能看到呢?这个 Fiori 应用部署之后的状态,我在哪里能够查看呢?”

这位朋友的发问非常有力,实际上,Jerry 前一篇文章,离 Fiori 应用的开发和部署这个目标还有一半的距离。我们回忆下当时是如何基于开发完成的 Restful ABAP Programming 模型弹出 Fiori 界面的:

从上图可以看出,我选中了一个 Service Binding 模型里的 TravelProcessor 这个节点,从右键菜单里选择 Open Fiori Elements App Preview 选项,这会自动打开一个在预览模式下工作的 Fiori Elements 应用 (以前的名称叫 Fiori Smart Template):

现在 Fiori UI 倒是打开了,但是大家仔细观察上图,应用的窗口标题为 ”Preview for Fiori Elements App”, 应用的 url 里包含 /sap/bc/adt/ 这种 ABAP Development Tool 相关的片段——这种工作在预览模式下的应用显然无法用于生产用途的。

因此本文继续完成剩下的一半开发工作——基于手头已有的 Restful ABAP Programming 模型,真正地创建一个 Fiori 应用并部署到 SAP Cloud Platform 上。幸运的是,这部分工作量也很小,没有编码工作,只需要完成一些配置步骤。

Jerry 之前的文章 30 分钟用 Restful ABAP Programming 模型开发一个支持增删改查的 Fiori 应用 已经把 SAP Cloud Platform ABAP 编程环境里的名为 I_Currency 的 CDS view 通过 Service Definition 的方式暴露出来了,然后由 Service binding 绑定到 OData 协议上,这样我们马上要创建的 Fiori 应用可以通过这个 Service binding,以 OData 的方式读取到 CDS view 里的数据。

假设我的 Restful ABAP Programming 模型和待开发的 Fiori 应用是在两个不同 Region 的 SAP Cloud Platform 上部署的,比如 RAP 模型放在 Europe(Frankfurt)Region 上 (这是 SAP 云平台 ABAP 环境目前唯一的选择):


而 Fiori 应用放在 Europe(Rot) 的 Neo 环境上 (支持 Neo 的 Region 选择就很多了):

那么这种跨 Region 间的服务调用,需要创建老三样,即 Communication Scenario,Communication System 和 Communication Arrangement.

SAP 官网上有详细教程:

https://developers.sap.com/gr…

这里 Jerry 只强调要点。

(1) 在 ABAP Development Tool 里右键菜单创建 Communication Scenario Z_JERRY_COMMU_SCE,然后把前一篇文章创建的 Service Binding 模型添加到这个 Scenario 的 inbound service 页面里:

(2) 在 ABAP Development Tool 右击 ABAP Cloud 项目,在属性页里找到这个 SAP 云平台 ABAP 环境的 Fiori 界面的 url:

Communication Systems,Users 和 Arrangements 都在此处创建。

Communication User 顾名思义,SAP 云平台 Neo 环境上的 Fiori 应用使用这个 user,调用 OData 服务消费 ABAP 环境里的 RAP 模型。ABAP 顾问可以把它类比成 SAP GUI 里的用户 WF-BATCH, 只不过前者允许应用开发人员自行创建并设置密码。

创建 Communication System,把 ABAP Development Tool 属性页里拿到的 url,去掉最前面的 https://,将剩下的值维护到 Host Name 里:

把之前创建的 Communication User 分配给这个 Communication System:

最后创建 Communication Arrangement:

选中第一步在 ABAP Development Tool 里创建的 Communication Scenario:

给这个 Arrangement 分配刚刚创建的 Communication System:

如果一切正常工作,创建好的 Communication Arrangement 如下图所示。将 Service Url 抄下来,因为下一步创建 Fiori 应用需要这个 url. 观察这个 url,其包含 SAP 云平台 ABAP 编程环境的 hostname 和 /sap/opu/odata/sap/ 开头的片段,后者就是 Service Definition 借助 Service Binding 通过 OData 协议暴露出来的 url.

(3) 回到 SAP 云平台 Neo 环境,创建一个指向 ABAP 环境的 Destination,我起了个名字 to_ABAPCloud, 将上一步 Communication Arrangement 里得到的 url 粘贴进来,User 选择前一步创建的 Communication User,同时给这个 Destination 添加两个额外的属性:

  • WebIDEEnabled:true
  • WebIDEUsage:odata_gen, odata_abap

只有这样,稍后打开的 webIDE 里才能识别到这个 Destination,否则的话,它只能在 Java 或者 nodejs 应用里使用。

剩下的就是在 WebIDE 里通过向导创建 Fiori 应用了。打开 WebIDE,选择 New->Project from Template:

此处需要选择一个模板来创建 Fiori 应用。我们选择 List Report Application,它会以只读的方式显示绑定的 Odata 服务对应的 CDS view 里的内容。


在 Data Connection 这一向导步骤,选择之前在 Neo 环境里创建的 Destination:

然后将之前 Communication Arrangement 创建后获得的 url 维护进 Service Url 里,点击 Test 按钮,解析出这个 url 对应的 OData 模型节点:Currency.


点击 Finish 完成 Fiori 应用的自动创建工作。现在我们在 WebIDE 里得到了一个真正的 Fiori 应用。通过右键菜单将其从 WebIDE 部署到 SAP Cloud Platform 上:


成功部署:

在 SAP 云平台的控制台里获得了这个 Fiori 应用的 url,我们将其和之前在预览模式下工作的 Fiori 应用 url 做对比,是不是有很大的不同?

点击 url 访问,现在这个 Fiori 页面的窗口标题再也没有了 Preview 的字样,可以直接用于生产用途了。

要获取更多 Jerry 的原创文章,请关注公众号 ” 汪子熙 ”:

退出移动版