在 ABAP On-Premises 环境下,应用 ABAP 编程生产第三方服务,置信很多 ABAP 参谋都曾经十分相熟了,无非就是应用 CL_HTTP_CLIENT 或者 CL_REST_HTTP_CLIENT 来发送和接管 HTTP 申请。
下图这短短的 38 行代码,展现了如何应用 ABAP 工具类 CL_HTTP_CLIENT 去拜访百度首页并拿到回复。
从百度返回的响应,通过办法 GET_CDATA 取得,存储于变量 rv_data 内:
当然如果咱们是做正式的产品开发的话,个别不会把第三方服务的 URL 硬编码在应用程序里,而是通过事务码 SM59 创立的 Destination 治理第三方服务的 endpoint,而后把 Destination 名称存储于配置表里,这样使得第三方服务的 URL 同利用代码解除耦合关系。
下图是一个例子,我在 SM59 事务码里保护了一个指向某 C4C 零碎的 Destination,取名为 C4C:
而后在 ABAP 代码里应用 cl_http_client=>create_by_destination 创立 HTTP 工具类的实例。后续操作同应用 cl_http_client=>create_by_url 结构实例的代码统一,这里不再反复。
如果咱们间接把 On-Premises 环境下的这些 ABAP 代码搬到 SAP Cloud Platform 的 ABAP 环境里,会遇到很多语法错误:
起因在于,云端的 ABAP 编程模型反对的只是 ABAP 编程语言的一个子集,咱们只能应用 SAP 凋谢的白名单里的资源,这个白名单即上图右边 Released Objects 外面蕴含的内容。
因为过来在 On-Premises 环境里应用过的 CL_HTTP_CLIENT, CL_REST_HTTP_CLIENT, IF_HTTP_CLIENT 等 ABAP 类和接口均不在白名单内,故无奈在 ABAP 云端环境应用。
既然在云端了,咱们就得应用云端的编程范式。
在 SAP Cloud Platform ABAP 编程环境拜访第三方服务的代码如下:
能够看到其思路就是通过 CL_HTTP_DESTINATION_PROVIDER 这个云端的 Destination 工厂类,拿到 Destination 实例,而后基于该实例创立云端上的 ABAP HTTP 客户端实例。工厂类生产 Destination 实例须要两个参数:
- i_name
- i_service_instance_name
依据这个办法的接口正文,这两个参数别离为 Destination 的名称和 Service instance 的名称。上面介绍如何取得这两个参数的值。
在 SAP Cloud Platform Service Marketplace 里创立一个新的 Destination 实例:
咱们把新建的实例取名为 DestService,而后再基于该实例创立一个 Destination 配置,这个配置就好比咱们在 ABAP On-Premises 的 SM59 事务码里创立的 Destination:
Destination 我取名为 ZJERRY_API, 这就是后面提到的工厂办法里第一个参数 i_name 值的由来。
点击 Check Connection,确保该 Destination 指向的 URL 能够拜访:
而后点击 Open Dashboard,关上这个 SAP Cloud Platform ABAP 实例的 Fiori 界面:
点击 Launchpad tile,创立一个新的 Communication Arrangements:
须要为新建的 Communication Arrangement 抉择一个 Communication Scenario,这里我抉择 SAP 规范公布的专门用于 CloudFoundry 环境同第三方服务进行集成的场景,ID 为 SAP_COM_0276:
创立 Communication Arrangement 时还要保护 Service Key 信息:
这个 Service Key 的信息能够从 Destination 实例列表的 Service Key 保护界面取得:
在创立好的 Communication Arrangement 里,保护 Service Instance Name 的值为 jerry-service-instance, 这也就是 ABAP 代码里传给工厂办法的第二个参数。
执行这个 ABAP 类:
取得冀望的输入:
介绍完这些生产步骤之后,大家也能够本人入手,申请 SAP 云平台上的 ABAP Trial 零碎并进行开发。
进入 SAP Cloud Platform CloudFoundry 的测试环境:
进入 Service MarketPlace:
找到 ABAP Trial 服务,这就是所谓 ABAP-as-a-Service 的概念:
如果 Service Marketplace 里看不到这个 ABAP Trial 服务也不要紧,点击 Entitlements 菜单的 Subaccount Assignments:
把这个服务调配给 Subaccounts 即可:
ABAP 环境测试版本采纳的 Plan 为 Shared,这意味着您将会和其余用户一样,共享一个物理的 ABAP 零碎:
新建一个 ABAP Trial 服务实例:
轻易取个名字,比方 jerry-abap:
实例生成后,点击名称进入明细页面:
此处须要创立一个 Service Key,有了这个 Service Key,咱们能力用它来在 ABAP Development Tool 里登录这个位于 SAP 云平台上的 ABAP 测试零碎:
给 Service Key 取个名字:
把生成的 Service Key 保留到某个中央,比方记事本里:
而后关上 ABAP Development Tool,抉择通过 Service Key 的形式登录:
把之前在 SAP 云平台操作台里创立的 Service Key 粘贴到此处:
点击 Finish, 实现登录配置。
所有就绪,当初能够开始撸代码了。
在 SAP 云平台控制台里,点击 ABAP Trial 零碎实例的 Open Dashboard 按钮,
就能关上这个云上的 ABAP 零碎的 Fiori 界面:
总结
本文首先介绍了如何在 SAP 云平台 ABAP 编程环境里生产第三方服务的具体步骤,这是一种 ABAP 技术栈同第三方系统集成的无力伎俩。接着介绍了 SAP 云平台 ABAP 编程环境账号的申请和环境的搭建,心愿开发参谋们本人入手,在实践中加深对云端开发理念的了解和把握。