首先登录 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 DEFINITIONPUBLICFINALCREATE 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 myobjEXPORTINGdestination = dest.catch CX_RFC_DEST_PROVIDER_ERROR." handle CX_RFC_DEST_PROVIDER_ERRORENDTRY.TRY.myobj->RFC_SYSTEM_INFO(IMPORTINGCURRENT_RESOURCES = CURRENT_RESOURCESFAST_SER_VERS = FAST_SER_VERSMAXIMAL_RESOURCES = MAXIMAL_RESOURCESRECOMMENDED_DELAY = RECOMMENDED_DELAYRFCSI_EXPORT = RFCSI_EXPORTS4_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)协议进行实际数据连接。

更多Jerry的原创文章,尽在:“汪子熙”:

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

  1. 如何在 SAP BTP 平台 ABAP 编程环境里消费基于 SOAP 的 Web Service

    这是 Jerry 2021 年的第 47 篇文章,也是汪子熙公众号总共第 324 篇原创文章. Jerry 2014 年时,曾经在 SAP 社区上写过一篇英文博客,介绍了如何在 ABAP On-Pre ...

  2. SAP云平台上的ABAP编程环境里如何消费第三方服务

    在ABAP On-Premises环境下,使用ABAP编程消费第三方服务,相信很多ABAP顾问都已经非常熟悉了,无非就是使用CL_HTTP_CLIENT或者CL_REST_HTTP_CLIENT来发送 ...

  3. 如何在SAP云平台ABAP编程环境里把CDS view暴露成OData服务

    Jerry 2016年在学习SAP CDS view时,曾经写过一个CDS view的自学系列,其中有一篇提到了一个很方便的注解: @OData.publish: true 加上这个注解的CDS vi ...

  4. 如何在SAP云平台ABAP编程环境里创建自己的Z表

    选中ABAP包,右键创建一个新的Database Table: 维护表名为ZBOOKING: 表实现的源代码: @EndUserText.label : 'Jerry''s booking' @Aba ...

  5. 在SAP云平台ABAP编程环境里使用CAP模型创建Fiori应用

    创建必须的CDS view,激活,然后基于CDS view创建behavior definition: @Semantics.user.createdBy: true key holiday_id, ...

  6. 在SAP Cloud Platform ABAP编程环境里打印系统变量

    代码: class ZCL_HELLOWORLD definitionpublicfinalcreate public .public section. interfaces if_http_serv ...

  7. 在 SAP BTP 平台 Neo 环境里使用 SAP Cloud SDK 创建应用

    Create a Sample Application on SCP Neo Using SAP Cloud SDK 本文目录 How to generate a project stub using ...

  8. 如何在SAP云平台Neo环境里进行workflow(工作流)的开发

  9. 学而不思则罔 - SAP云平台ABAP编程环境的由来和适用场景

    最近Jerry写了一系列关于SAP云平台ABAP编程环境的技术文章,这些文章都是围绕着在云上的ABAP编程环境的具体知识点来分享,比如要完成一个具体的开发需求,所需要的编程步骤.这些文章陆续收到一些读 ...

最新文章

  1. mysql 运行sql 编码_关于解决运行 sql 文件时, 找不到 MySQL 默认编码 utf8mb4 的问题...
  2. 图像识别中的深度学习【香港中文大学王晓刚】
  3. android jni调用so库
  4. request获得请求头
  5. MySQL checkpoint机制详解
  6. 代码jquery分享一款jquery加载csv文件的代码
  7. mybatis-generator扩展教程系列 -- 自定义配置参数修改DAO,Mapper文件后缀
  8. multisim模拟电路加法器_利用multisim仿真设计反相加法电路
  9. 公转对讲融合项目如何实现对接?
  10. 解决wampserver server offline
  11. 只查看ett.txt文件(100行内,20-30行内容)
  12. 聊聊Uber公司迁移数据库这件事
  13. 信创引领丨呼叫中心加速适配国产化
  14. uniapp 视频图片切换,视频高度宽度自适应
  15. 前端工作怎么包装简历,需要掌握哪些知识项目
  16. vue2、vue3中自定义v-model的使用和区别
  17. references column 'xxx' which is not in SELECT list
  18. 嵌入式系统设计电子书
  19. hiho 大礼堂地毯(strstr 查找函数)
  20. 2009世界500强:《财富》全球五百家公司排名

热门文章

  1. Kubernetes应用部署模型解析(原理篇)
  2. java自动猜测文件编码
  3. 无线路由器参数设置精通技巧
  4. 使用smokeping监测网络
  5. 消除电脑的四大噪音源
  6. [蛋蛋の插画日记]囧...居然漏了一期《可爱100》!
  7. Ubuntu下载gitea
  8. Java实现遍历N级树形目录结构
  9. html显示高亮c++
  10. 2017.6.26小学期1