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

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

使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数的更多相关文章

  1. 如何在SAP云平台的Cloud Foundry环境下添加新的Service(服务)

    我想在SAP云平台的Cloud Foundry环境下使用MongoDB的服务,但是我在Service Marketplace上找不到这个服务. cf marketplace返回的结果也没有. 解决方案 ...

  2. 如何上传HTML5应用到SAP云平台的Cloud Foundry环境下

    先使用WebIDE创建一个HTML5应用.New->Project from Template: 从可选模板里选择SAPUI5 Application: 创建一个HTML5 Module,取名为 ...

  3. 如何将SAP Multi Target应用部署到SAP云平台的Cloud Foundry环境去

    SHINA是SAP HANA Interactive Education的缩写,是一个demo应用,用于演示如何开发SAP HANA原生应用. 这个应用包含了sample数据以及HANA数据库表,vi ...

  4. 用JavaScript访问SAP云平台上的服务遇到跨域问题该怎么办

    关于JavaScript的跨域问题(Cross Domain)的讨论, 网上有太多的资源了.国内的程序猿写了非常多的优秀文章,Jerry这里就不再重复了. 直入主题,最近我正在做一个原型开发:通过SA ...

  5. 在SAP云平台的CloudFoundry环境下消费ABAP On-Premise OData服务

    我的前一篇文章 使用Java+SAP云平台+SAP Cloud Connector调用ABAP On-Premise系统里的函数介绍了在SAP云平台的Neo环境下如何通过SAP Cloud Conne ...

  6. 企业数字化转型与SAP云平台

    我们生活在一个数字化时代.信息领域里发展迅猛的数字技术和成本不断降低的硬件设备,正以前所未有的方式改变着我们工作和生活的方式. Digital Mesh 美国一家著名的从事信息技术研究和提供咨询服务的 ...

  7. 使用abapGit在ABAP On-Premises系统和SAP云平台ABAP环境之间进行代码传输

    SAP ABAP顾问朋友们,应该都使用过SAPLink这个工具.如果两个ABAP Netweaver系统没有建立起传输路径时,我们无法使用标准的SE10事务码创建传输请求的方式进行这两个系统间的代码传 ...

  8. 如何在SAP云平台上使用MongoDB服务

    首先按照我这篇文章在SAP云平台上给您的账号分配MongboDB服务:如何在SAP云平台的Cloud Foundry环境下添加新的Service 然后从这个链接下载SAP提供的例子程序. 1. 使用命 ...

  9. 如何在Java代码中使用SAP云平台CloudFoundry环境的环境变量

    本文使用的例子源代码在我的github上. 在我的公众号文章在SAP云平台的CloudFoundry环境下消费ABAP On-Premise OData服务介绍了如何通过Cloud Connector ...

随机推荐

  1. [WPF自定义控件]从ContentControl开始入门自定义控件

    1. 前言 我去年写过一个在UWP自定义控件的系列博客,大部分的经验都可以用在WPF中(只有一点小区别).这篇文章的目的是快速入门自定义控件的开发,所以尽量精简了篇幅,更深入的概念在以后介绍各控件的文 ...

  2. 2017-10-26 NOIP模拟赛2

    财富 (treasure) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有n个小伙伴.每个小伙伴有一个身高hi. 这个游戏是这样的,LYK生活的环境是 ...

  3. 洛谷P3649 [APIO2014]回文串(回文自动机)

    传送门 话说回文自动机我自己都还没搞懂呢…… 等到时候会了再来填坑 //minamoto #include<cstdio> #include<cstring> #define ...

  4. 小程序启用slot -- 传入 wxml标签

    options:{ multipleSlots:true } 直接看:https://www.jianshu.com/p/b22c9e075931

  5. abp架构中加载公共css样式表和公共js的文件目录位置

    src\shared\helpers\LocalizedResourcesHelper.ts

  6. Python+Selenium----使用HTMLTestRunner.py生成自动化测试报告1(使用IDLE)

    1.说明 自动化测试报告是一个很重要的测试数据,网上看了一下,使用HTMLTestRunner.py生成自动化测试报告使用的比较多,但是呢,小白刚刚入手,不太懂,看了很多博客,终于生成了一个测试报告, ...

  7. python入门之time模块和datetime模块

    time模块 时间三种表示:时间戳(秒单位),struct_time(元组,可以分开调用),指定格式(格式化) time.sleep() 等待5秒钟 time.time() 返回时间戳 time.ct ...

  8. Hyperspace Travel

    https://www.hackerrank.com/contests/infinitum16-firsttimer/challenges/hyperspace-travel 给出n个点,是一个m维坐 ...

  9. jquery字符串数组转json字符串 C#json字符串转字符串list

    一.jquery字符串数组转json字符串 var str=['1','2','3']; var jsonText= JSON.stringify(str);//把一个对象转换成json字符串 str ...

  10. Mybatis-Plus使用全解

    前言 之前写了<SpringBoot | 第九章:Mybatis-plus的集成和使用>一文,只是简单的使用条件构造器列举了一些通用的CURD操作.本人也想写一篇通用的关于mybatis- ...