ABAP编程环境里怎么消费第三方服务

65次阅读
没有评论

共计 2276 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章主要介绍“ABAP 编程环境里怎么消费第三方服务”,在日常操作中,相信很多人在 ABAP 编程环境里怎么消费第三方服务问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”ABAP 编程环境里怎么消费第三方服务”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!

在 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 环境里,会遇到很多语法错误:

原因在 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 编程环境访问第三方服务的代码如下:

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

i_name

i_service_instance_name

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

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

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

ABAP 编程环境里怎么消费第三方服务

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

ABAP 编程环境里怎么消费第三方服务

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

ABAP 编程环境里怎么消费第三方服务

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

ABAP 编程环境里怎么消费第三方服务

点击 Launchpad tile,创建一个新的 Communication Arrangements:

ABAP 编程环境里怎么消费第三方服务

ABAP 编程环境里怎么消费第三方服务

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

ABAP 编程环境里怎么消费第三方服务

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

ABAP 编程环境里怎么消费第三方服务

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

ABAP 编程环境里怎么消费第三方服务

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

ABAP 编程环境里怎么消费第三方服务

执行这个 ABAP 类:

ABAP 编程环境里怎么消费第三方服务

获得期望的输出:

ABAP 编程环境里怎么消费第三方服务

到此,关于“ABAP 编程环境里怎么消费第三方服务”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计2276字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)