当前位置:网站首页>如何在 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)协议进行实际数据连接。
边栏推荐
- Talk about the delta configuration of Eureka
- 2021 CCPC 哈尔滨 E. Power and Modulo (思维题)
- annotation
- Mapbox GL development tutorial (12): loading surface layer data
- 智能门锁主流品牌有哪些?选购门锁时要注重产品的哪些特性?
- 60 days of remote office experience sharing | community essay solicitation
- Chapter II (physical layer)
- Three.js开发:粗线的画法
- Chainsafe cross chain bridge deployment tutorial
- 如何审核 Active Directory 用户账户更改?
猜你喜欢
Withdrawal of user curve in qualified currency means loss
fastadmin后台设置单选按钮
Flume configuration 1 - basic case
.NetCore统一认证授权学习——第一次授权(2)
MySQL JSON data types & functions
C#_ Convert camera images to bitmap format and draw Crosshairs
0/1分数规划专题
How do I audit Active Directory User account changes?
Cmake开发-多目录工程
Chainsafe cross chain bridge deployment tutorial
随机推荐
Fastadmin background setting radio button
. NETCORE unified authentication authorization learning - first authorization (2)
[compilation principle] semantic analysis
Initialization of global and static variables
跳转打开新窗口
MySQL JSON data types & functions
Golang basic learning
Spark存储体系底层架构剖析-Spark商业环境实战
Oracle11.2.0.4-rac cluster hang analysis record
【编译原理】语义分析
Lexin interview process
Following the crowd hurts you
Hangfire详解
Comparable比较器写法&ClassCastExcption类转换异常
一个超赞的开源的图片去水印解决方案
Special training of C language array
「运维有小邓」Active Directory 密码过期通知功能
Uncover the secret! Pay attention to those machines under the membership system!
Ovirt database modify delete node
Application of twelve factors (4)