日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

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

發布時間:2023/12/19 windows 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何在 SAP BTP ABAP 编程环境里直接调用 ABAP On-Premises 系统的 RFC 函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

首先登錄 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 函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。