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

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

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

为了确保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云平台。测试

架构图以下所示。url

下面是详细步骤介绍。操作系统

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云平台的文章,欢迎关注。

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:

相关文章
相关标签/搜索