ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-06-06 14:01:02  阅读:130  来源: 互联网

标签:编程 HTTP Service Destination ABAP 实例 SAP


在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 编程环境账号的申请和环境的搭建,希望开发顾问们自己动手,在实践中加深对云端开发理念的理解和掌握。

标签:编程,HTTP,Service,Destination,ABAP,实例,SAP
来源: https://www.cnblogs.com/sap-jerry/p/16347986.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有