写点什么

使用 Java+SAP 云平台 +SAP Cloud Connector 调用 ABAP On-Premise 系统里的函数

作者:Jerry Wang
  • 2021 年 11 月 10 日
  • 本文字数:1457 字

    阅读完需:约 5 分钟

使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数

最近 Jerry 接到一个原型开发的任务,需要在微信里调用 ABAP On Premise 系统(SAP CRM On-Premise)里的某些函数。具体场景和我之前的公众号文章 Cloud for Customer 和微信集成系列教程 描述的场景类似。


区别之处在于 Cloud for Customer(C4C)是一个云解决方案,其 OData Service/Web Service 能够直接被 Internet 网络上的其他应用消费。而我最近要做的原型开发,需要消费的函数位于部署在 Corporate Network 里的 ABAP On-Premise 系统里,无法直接被 Internet 应用消费。


为了确保 Internet 应用能够访问 Corporate Network 系统里的服务,我们需要用到 SAP Cloud Connector, 作为一个沟通桥梁。


这篇文章我假设的场景是:开发一个 Java Web 应用,部署在 SAP Cloud Platform(云平台)上。用户在手机微信里访问该应用,调用 ABAP On-Premise 系统里的函数。


这个场景的主要实现步骤:


  1. 下载安装并配置 Cloud Connector。Cloud Connector 需要和 ABAP On-Premise 系统同样位于 Corporate Network。

  2. 在 SAP 云平台上完成必要配置,同 Cloud Connector 建立连接。

  3. 开发 Java Web 应用,部署到 SAP 云平台。


架构图如下所示。



下面是详细步骤介绍。

1. Cloud Connector 的安装与配置

下载地址



安装完成后启动 Cloud Connector,确保在操作系统的服务列表里看到 Cloud Connector 对应的服务:



Cloud Connector 的登录界面:



新建一个 Connector 实例,我命名为 Jerry_SCC。Region 和 Subaccount 需要指定成需要连接的 SAP 云平台的对应字段,这样才能将该 Connector 实例同对应的 SAP 云平台建立关联关系。



Connector 实例创建并保存后,如下图所示。点击下图左边 Jerry_SCC 下面的菜单"Cloud To On-Premise":



在这个界面创建从虚拟系统(virtual system)到 ABAP On-Premise 系统的一个映射关系。我创建的虚拟系统名称为 my-backend-system, 映射到一个 SAP 内部 ABAP 系统 AG3。访问协议(Protocol)指定为 RFC。点击检查按钮,如果 ABAP 系统的信息维护无误,该 ABAP 系统的状态会被标记为 Reachable(可访问)。


Function Name 为 STFC,Naming Policy 为 Prefix,意为 AG3 系统里所有以 STFC 开头的函数均能通过该 Connector 实例被访问。



至此 Cloud Connector 配置完成。

2. SAP 云平台上的配置

前一步 Cloud Connector 配置完成后,在 SAP 云平台的 Cloud Connectors 标签页就能看到配置好的实例了。这一步需要在 SAP 云平台上创建一个 Destination 以便 Java 程序使用。这个 Destination 和 ABAP Netweaver 事务码 SM59 创建的 Destination 作用相似。



仿照下图的设置创建一个 Destination。我的 Destination 名称为 my-backend-system-destination, 这个 Destination 会在下一步被 Java 应用消费。注意 User 和 Password 需要维护成 ABAP On-Premise 系统对应的用户名和密码。



点击按钮 Check Connection,确保该 Destination 工作正常。


3. 开发 Java 应用,使用第 2 步创建的 Destination

该 Java 应用的全部源代码在我的github上:


这里只讲解核心代码:


(1) 第 28 行根据 Destination 名称拿到其实例,名称在第 2 步 SAP 云平台的配置里指定。(2) 第 31 行,拿到 ABAP 函数 STFC_CONNECTION 的句柄。(3) 第 35 行,拿到用户从浏览器 url 里传进来的输入值。(4) 第 38 行,将从第 35 行拿到的用户输入赋给 STFC_CONNECTION 的输入参数 REQUTEXT。(5) 第 42 行,执行 ABAP 函数。(6) 第 45, 46 行,得到 ABAP 函数执行结果。



将这个 Java 应用从 Eclipse 部署到 SAP 云平台。具体步骤参考我的知乎文章:


使用Eclipse开发Java应用并部署到SAP云平台


在微信里测试一下:



输出:



在 ABAP 系统的 STFC_CONNECTION 函数体内设置断点,在 ABAP 调试器里也能观察到从微信传进来的用户输入:



我在我的知乎专栏上写了很多关于 SAP 云平台的文章,欢迎关注。



发布于: 2021 年 11 月 10 日阅读数: 6
用户头像

Jerry Wang

关注

个人微信公众号:汪子熙 2017.12.03 加入

SAP成都研究院开发专家,SAP社区导师,SAP中国技术大使。

评论

发布
暂无评论
使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数