文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-06-04 06:53

关注

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

我们把新建的实例取名为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编程环境里怎么消费第三方服务”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯