当前位置:网站首页>如何在 SAP BTP ABAP 编程环境里直接调用 ABAP On-Premises 系统的 RFC 函数
如何在 SAP BTP ABAP 编程环境里直接调用 ABAP On-Premises 系统的 RFC 函数
2022-06-29 20:33:00 【华为云】
首先登录 ABAP On-Premises 系统,运行事物码:aco_proxy,为 RFC 函数 RFC_SYSTEM_INFO 和 RFC_READ_TABLE, 生成代理类元数据,格式为 xml. 将 xml 文件另存到本地。

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

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

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

新建一个 ABAP 类,将上图代理类里的代码拷贝到这个 ABAP 类的 Main 方法里:

完整代码如下:
CLASS zcl_consume_rfc DEFINITION PUBLIC FINAL CREATE PUBLIC .PUBLIC SECTION. INTERFACES if_oo_adt_classrun .PROTECTED SECTION.PRIVATE SECTION.ENDCLASS.CLASS zcl_consume_rfc IMPLEMENTATION. METHOD if_oo_adt_classrun~main. DATA dest TYPE REF TO IF_RFC_DEST. DATA myobj TYPE REF TO ZCL_JERRY_RFC_PROXY. DATA CURRENT_RESOURCES TYPE ZCL_JERRY_RFC_PROXY=>SYST_INDEX. DATA FAST_SER_VERS TYPE INT4. DATA MAXIMAL_RESOURCES TYPE ZCL_JERRY_RFC_PROXY=>SYST_INDEX. DATA RECOMMENDED_DELAY TYPE ZCL_JERRY_RFC_PROXY=>SYST_INDEX. DATA RFCSI_EXPORT TYPE ZCL_JERRY_RFC_PROXY=>RFCSI. DATA S4_HANA TYPE ZCL_JERRY_RFC_PROXY=>CHAR1. TRY. dest = CL_RFC_DESTINATION_PROVIDER=>create_by_cloud_destination( 'AG3' ). CREATE OBJECT myobj EXPORTING destination = dest. catch CX_RFC_DEST_PROVIDER_ERROR. " handle CX_RFC_DEST_PROVIDER_ERROR ENDTRY. TRY. myobj->RFC_SYSTEM_INFO( IMPORTING CURRENT_RESOURCES = CURRENT_RESOURCES FAST_SER_VERS = FAST_SER_VERS MAXIMAL_RESOURCES = MAXIMAL_RESOURCES RECOMMENDED_DELAY = RECOMMENDED_DELAY RFCSI_EXPORT = RFCSI_EXPORT S4_HANA = S4_HANA ). CATCH CX_ACO_COMMUNICATION_FAILURE INTO DATA(lcx_comm). " handle CX_ACO_COMMUNICATION_FAILURE (sy-msg* in lcx_comm->IF_T100_MESSAGE~T100KEY) CATCH CX_ACO_SYSTEM_FAILURE INTO DATA(lcx_sys). " handle CX_ACO_SYSTEM_FAILURE (sy-msg* in lcx_sys->IF_T100_MESSAGE~T100KEY) CATCH CX_ACO_APPLICATION_EXCEPTION INTO DATA(lcx_appl). " handle APPLICATION_EXCEPTIONS (sy-msg* in lcx_appl->IF_T100_MESSAGE~T100KEY) ENDTRY. ENDMETHOD.ENDCLASS.注意,需要按照这篇文章提到的步骤,借助 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)协议进行实际数据连接。

边栏推荐
- Software engineering - principles, methods and Applications
- Cmake development - Multi Directory Project
- Bigder:自动化测试工程师
- Deploy web using gunicorn Py application
- 【Try to Hack】vulnhub narak
- Win7 easy connect 提示:选路连接失败,可能当前连接网络异常,请稍后重试
- 「运维有小邓」AD域委派
- annotation
- Dynamics crm: among locally deployed servers, sandbox, unzip, VSS, asynchronous and monitor services
- 2021 CCPC 哈尔滨 E. Power and Modulo (思维题)
猜你喜欢

Hangfire details
![[notes] take notes again -- learn by doing Verilog HDL – 008](/img/7f/0ca73446247455ac4d8f9667083a87.png)
[notes] take notes again -- learn by doing Verilog HDL – 008

如何审核 Active Directory 用户账户更改?

Flume configuration 2 - ganglia for monitoring

Tag based augmented reality using OpenCV

Logical structure and physical structure

"Xiaodeng" ad domain delegation for operation and maintenance

如何评价科大讯飞AI翻译笔P20系列,值得买吗?

「运维有小邓」Active Directory批量用户创建

"Xiaodeng" in operation and maintenance monitors user login operations in real time
随机推荐
Jupyter服务安装及启动
时钟树综合(CTS)
2021 CCPC Harbin E. power and modulo (thinking questions)
.NetCore统一认证授权学习——Run(1)
What are the mainstream brands of smart door locks? What characteristics should we pay attention to when purchasing door locks?
【Try to Hack】vulnhub narak
Cantata version 9.5 has officially passed the sgs-t Ü V certification and conforms to all major software safety standards
PHP implementation extracts non repeated integers (programming topics can be the fastest familiar functions)
Ovirt database modify delete node
How to use the configuration in thinkphp5
Software engineering - principles, methods and Applications
Golang basic learning
【编译原理】语义分析
0/1分数规划专题
XSS vulnerability
Win7 Easy Connect prompt: route selection connection failed. The current connection network may be abnormal. Please try again later
[notes] take notes again -- learn by doing Verilog HDL – 014
跳转打开新窗口
Bigder: Automation Test Engineer
智能门锁主流品牌有哪些?选购门锁时要注重产品的哪些特性?