且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在 SAP BTP ABAP 编程环境里直接调用 ABAP On-Premises 系统的 RFC 函数

更新时间:2022-09-08 16:11:20

首先登录 ABAP On-Premises 系统,运行事物码:aco_proxy,为 RFC 函数 RFC_SYSTEM_INFO 和 RFC_READ_TABLE, 生成代理类元数据,格式为 xml. 将 xml 文件另存到本地。

如何在 SAP BTP ABAP 编程环境里直接调用 ABAP On-Premises 系统的 RFC 函数

使用 ABAP Development Tool 登录 SAP BTP ABAP 运行环境,新建一个 Service Consumption Model,类型选择 RFC:

如何在 SAP BTP ABAP 编程环境里直接调用 ABAP On-Premises 系统的 RFC 函数

生成一个 Proxy Class,我们稍后会在 ABAP 代码里,通过这个 Proxy Class 来调用 On-Premises 系统上的 RFC 函数。将前一步骤在 On-Premises 系统里生成的 metadata.xml, 导入到 Proxy 类生成向导里。

如何在 SAP BTP ABAP 编程环境里直接调用 ABAP On-Premises 系统的 RFC 函数

激活这个 Service Consumption Model,在自动生成的代理类里,我们能找到 ABAP 代码模板,这个代码模板,可以直接拷贝到我们的 ABAP 代码里,稍作修改,就能调用 ABAP On-Premises 系统的 RFC 函数了。

如何在 SAP BTP ABAP 编程环境里直接调用 ABAP On-Premises 系统的 RFC 函数

如何在 SAP BTP ABAP 编程环境里直接调用 ABAP On-Premises 系统的 RFC 函数

如何在 SAP BTP ABAP 编程环境里直接调用 ABAP On-Premises 系统的 RFC 函数

注意,需要按照这篇文章提到的步骤,借助 SAP Cloud Connector ,在 SAP BTP Cockpit 上,完成指向 ABAP On-Premises 系统 AG3 的 Destination 配置。


原因是,在 SAP BTP、ABAP 环境和内部部署之间设置连接时存在两个问题:


ABAP 环境“存在”于 Internet 中,但客户内部部署系统位于防火墙之后

RFC 不支持 Internet

因此,需要建立从内部部署系统到 SAP BTP、ABAP 环境的安全隧道连接。


ABAP 环境租户从 Destination 服务实例中获取目的地。

ABAP 环境租户通过 Connectivity 服务请求打开隧道连接。

连接服务告诉云连接器使用管理连接打开与此特定 ABAP 环境租户的连接。

云连接器使用其公共租户 URL 打开到 ABAP 环境租户的隧道连接。

隧道建立后,可用于使用 RFC 或 HTTP(S)协议进行实际数据连接。

如何在 SAP BTP ABAP 编程环境里直接调用 ABAP On-Premises 系统的 RFC 函数