本地开发完成的 Fiori Elements 应用,部署到远端 ABAP 服务器上的详细步骤

之前笔者的两篇文章,分别介绍了如何在本地使用 Visual Studio Code 创建一个 SAP Fiori Elements 应用,以及使用 Fiori Elements Controller Extension 理念,对该 Fiori Elements 应用进行二次开发的具体步骤。
本地开发完成之后,新的问题顺理成章就来了:如何将该本地应用,部署到远程的 ABAP 服务器上?

如果是在以前的 SAP Cloud Platform (现在改名叫 SAP Business Technology Platform) Neo 环境提供的 Full Stack WebIDE 里开发 SAP Fiori Elements 应用,那么直接使用 SAP WebIDE 里的右键菜单,选择 "Deploy to SAPUI5 ABAP Repository" 即可完成部署。

而通过 Visual Studio Code 进行 SAP Fiori Elements 应用的本地开发,右键菜单里并没有部署相关的选项:

不过,我们仔细观察项目工程文件夹里的 package.json,还是发现了一些关于部署的线索。在该文件的 scripts 标签里,包含 deploy 和 deploy-config 两个指令。

先执行 npm run deploy 命令,这条命令的内容是 fiori verify,即进行部署前的校验工作。校验的结果,在本地检测不到部署配置信息,这样 Visual Studio Code 里安装的 SAP Fiori tools, 根本不知道开发人员期望将该应用,部署到哪个 ABAP 服务器上。

因此按照上图橙色的提示信息,运行下列命令行,生成部署配置信息。
npm run deploy-config
如果遇到下列错误消息:
Yeoman is not installed or available in your executable path. Please check your configuration or use npm/yarn to install it globally.
说明 Yeoman 没有安装,使用 npm install --global yo 进行安装即可。

之后重新运行命令行:
npm run deploy-config
首先选择部署目标类型为 ABAP 服务器。

接下来,需要指定待部署到的 ABAP 服务器的 url,client ID,部署到服务器上生成的 BSP 应用名称,存放该应用的 ABAP 开发包名称等信息。

我们在这个命令行向导里输入的内容,会维护到一个名为 ui5-deploy.yaml 的配置文件里。因此,此处我们可以一路回车,待结束向导后,在 Visual Studio Code 里继续编辑 ui5-deploy.yaml 即可。
npm run deploy-config 命令执行完毕后,生成了对应包含部署明细信息的 ui5-deploy.yaml 文件,同时 package.json 文件里,deploy 命令的内容,也从之前的 fiori verify,自动替换成了如下内容:

下图是我修改过的 ui5-deploy.yaml 文件。整个文件由 SAP Fiori tools 自动生成,我们只需要修改图中 1~3 区域的内容。

部署 ABAP 服务器的主机名和端口号,以及 client ID. 我部署的 ABAP 服务器为 ER9/001,采用 basic Authentication 方式认证。
credentials 区域,维护我登录 ER9/001 的用户名和密码。因为该 yaml 文件需要上传到 Github 上进行版本管理,故不应直接维护用户名和密码等敏感信息,而是将这些信息维护到一个叫做 .env 的文件里,然后在 ui5-deploy.yaml 里引用该 .env 文件。

部署到 ABAP 服务器上生成 BSP 应用的名称,以及用来存储该 BSP 应用的 ABAP 开发包名称。
一切就绪之后,执行命令行:
npm run deploy
我第一次试图部署时,遇到了下图的错误消息:
Invalid URL: /sap/opu/odata/UI5/ABAP_REPOSITORY_SRV

把该错误消息粘贴到 Google 里,很快找到了错误原因。
SAP 开发了一个标准的 OData 服务 /UI5/ABAP_REPOSITORY_SRV, 能够将本地 SAP UI5 应用打成的 zip 压缩包上传到 ABAP 服务器,并生成对应的 BSP 应用。

关于该 OData 服务的更多说明,请参阅 SAP 帮助文档:
https://sapui5.hana.ondemand.com/#/topic/a883327a82ef4cc792f3c1e7b7a48de8.html
SAP note 2999557 提供了激活该 OData 服务的步骤:

执行事务码 /IWFND/MAINT_SERVICE, 将 /UI5/ABAP_REPOSITORY_SRV 添加到服务列表中。

注意,该 OData 服务仅在 SAP_UI 753 及其以上的版本才可用。
对于 SAP_UI 753 以下的版本,可以尝试使用报表 /UI5/UI5_REPOSITORY_LOAD 手动上传。

npm run deploy 命令执行成功后,命令行会打印出部署到 ABAP 服务器上的 SAP Fiori Elements 应用可供访问的 url:

粘贴到浏览器后即可访问这个运行在 ABAP 服务器上的 SAP Fiori Elements 应用了:

在 ABAP 服务器 ER9/001 上生成的 BSP 应用如下图所示:

至于如何将该 Fiori Elements 应用配置成 ABAP 服务器上 Fiori Launchpad 的一个 tile,这是另外一个话题了。我们后续继续分享。
感谢阅读。
版权声明: 本文为 InfoQ 作者【Jerry Wang】的原创文章。
原文链接:【http://xie.infoq.cn/article/b884db55ae9079b212907806a】。文章转载请联系作者。
评论