关于sap:SAP-云平台上的-ABAP-编程环境里如何消费第三方服务

在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 编程环境账号的申请和环境的搭建,心愿开发参谋们本人入手,在实践中加深对云端开发理念的了解和把握。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理