首先登录 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)协定进行理论数据连贯。

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