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

简介: SAP云平台上的ABAP编程环境里如何消费第三方服务

在ABAP On-Premises环境下,使用ABAP编程消费第三方服务,相信很多ABAP顾问都已经非常熟悉了,无非就是使用CL_HTTP_CLIENT或者CL_REST_HTTP_CLIENT来发送和接收HTTP请求。


下图这短短的38行代码,展示了如何使用ABAP工具类CL_HTTP_CLIENT去访问百度首页并拿到回复。

image.png

从百度返回的响应,通过方法GET_CDATA获得,存储于变量rv_data内:image.png

当然如果我们是做正式的产品开发的话,一般不会把第三方服务的URL硬编码在应用程序里,而是通过事务码SM59创建的Destination管理第三方服务的endpoint,然后把Destination名称存储于配置表里,这样使得第三方服务的URL同应用代码解除耦合关系。


下图是一个例子,我在SM59事务码里维护了一个指向某C4C系统的Destination,取名为C4C:


image.png

image.png

然后在ABAP代码里使用cl_http_client=>create_by_destination创建HTTP工具类的实例。后续操作同使用cl_http_client=>create_by_url构造实例的代码一致,这里不再重复。image.png

如果我们直接把On-Premises环境下的这些ABAP代码搬到SAP Cloud Platform的ABAP环境里,会遇到很多语法错误:image.png

原因在Jerry的第一篇介绍SAP云平台ABAP编程环境的文章 在SAP云平台ABAP编程环境上编写第一段ABAP程序 里就已经提到,云端的ABAP编程模型支持的只是ABAP编程语言的一个子集,我们只能使用SAP开放的白名单里的资源,这个白名单即上图左边Released Objects里面包含的内容。


因为Jerry在On-Premises环境里使用过的CL_HTTP_CLIENT, CL_REST_HTTP_CLIENT, IF_HTTP_CLIENT等ABAP类和接口均不在白名单内,故无法在ABAP云端环境使用。


既然在云端了,我们就得使用云端的编程范式。


Jerry去年的文章使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数 里曾经介绍过运行在云端的Java应用如何通过SAP云平台上创建的Destination来调用ABAP On-Premises系统里的RFC函数。如今我们在云上运行的应用的编程语言从Java换成了ABAP,然而借助Destination进行第三方服务调用的思路仍然不变。


Jerry先把正确答案公布出来,在SAP Cloud Platform ABAP编程环境访问第三方服务的代码如下:



image.png

image.png

可以看到其思路就是通过CL_HTTP_DESTINATION_PROVIDER这个云端的Destination工厂类,拿到Destination实例,然后基于该实例创建云端上的ABAP HTTP客户端实例。工厂类生产Destination实例需要两个参数:


i_name

i_service_instance_name

根据这个方法的接口注释,这两个参数分别为Destination的名称和Service instance的名称。下面Jerry介绍如何获得这两个参数的值。


image.png

image.png

在SAP Cloud Platform Service Marketplace里创建一个新的Destination实例:image.pngimage.pngimage.png

我们把新建的实例取名为DestService,然后再基于该实例创建一个Destination配置,这个配置就好比我们在ABAP On-Premises的SM59事务码里创建的Destination:

image.png

Destination我取名为ZJERRY_API, 这就是前面提到的工厂方法里第一个参数i_name值的由来。image.png

点击Check Connection,确保该Destination指向的URL可以访问image.png

然后点击Open Dashboard,打开这个SAP Cloud Platform ABAP实例的Fiori界面:

image.png

点击Launchpad tile,创建一个新的Communication Arrangements:image.pngimage.png

需要为新建的Communication Arrangement选择一个Communication Scenario,这里我选择SAP标准发布的专门用于CloudFoundry环境同第三方服务进行集成的场景,ID为SAP_COM_0276:image.png

创建Communication Arrangement时还要维护Service Key信息:image.png

这个Service Key的信息可以从Destination实例列表的Service Key维护界面获

得:

image.png

在创建好的Communication Arrangement里,维护Service Instance Name的值为jerry-service-instance, 这也就是ABAP代码里传给工厂方法的第二个参数。image.png

执行这个ABAP类:image.png

获得期望的输出image.png

感谢阅读。

相关文章
|
2月前
|
Linux C++ Windows
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
【Azure 应用服务】Azure App Service(Windows)环境中如何让.NET应用调用SAP NetWeaver RFC函数
|
5月前
|
弹性计算 人工智能 安全
蚂蚁数科MAPPIC密态计算云平台入驻阿里云计算巢,打造云上密态计算服务
阿里云计算巢新添成员——蚂蚁数科的MAPPIC密态计算云平台,旨在为企业提供安全的大数据和模型密态计算服务,促进数据资产和模型资产的挖掘。MAPPIC是融合AI和BI的隐私保护平台,支持N+接入方式和弹性计算。通过阿里云计算巢,企业能快速创建密态计算集群,降低使用门槛,同时提升业务可靠性和审计追溯能力。双方合作将加速密态计算在云上的应用,应对数据隐私和安全挑战。
蚂蚁数科MAPPIC密态计算云平台入驻阿里云计算巢,打造云上密态计算服务
|
5月前
|
存储 安全 大数据
蚂蚁数科MAPPIC密态计算云平台入驻阿里云计算巢,打造云上密态计算服务
蚂蚁数科MAPPIC密态计算云平台入驻阿里云计算巢,打造云上密态计算服务
|
5月前
|
前端开发 数据库 开发者
如何在 SEGW 事务码里为 SAP ABAP OData 服务实现 Function Import 试读版
如何在 SEGW 事务码里为 SAP ABAP OData 服务实现 Function Import 试读版
SAP ABAP OData 服务里需要指定 guid 类型的请求参数时,正确语法是什么?
SAP ABAP OData 服务里需要指定 guid 类型的请求参数时,正确语法是什么?
|
5月前
|
JSON 应用服务中间件 API
使用 ABAP 代码消费 SAP 系统的 OData 服务
使用 ABAP 代码消费 SAP 系统的 OData 服务
|
5月前
|
机器学习/深度学习 人工智能 搜索推荐
SAP Commerce Cloud 智能销售服务 (Intelligent Selling Services)概述
SAP Commerce Cloud 智能销售服务 (Intelligent Selling Services)概述
关于 SAP ABAP OData 服务如何实现 Deep Insert 场景 - SAP 应用的标准行为试读版
关于 SAP ABAP OData 服务如何实现 Deep Insert 场景 - SAP 应用的标准行为试读版
|
5月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
|
5月前
|
JavaScript 前端开发 开发者
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍

热门文章

最新文章

下一篇
无影云桌面