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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > windows >内容正文

windows

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

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

首先登錄 ABAP On-Premises 系統(tǒng),運(yùn)行事物碼:aco_proxy,為 RFC 函數(shù) RFC_SYSTEM_INFO 和 RFC_READ_TABLE, 生成代理類元數(shù)據(jù),格式為 xml. 將 xml 文件另存到本地。

使用 ABAP Development Tool 登錄 SAP BTP ABAP 運(yùn)行環(huán)境,新建一個(gè) Service Consumption Model,類型選擇 RFC:

生成一個(gè) Proxy Class,我們稍后會(huì)在 ABAP 代碼里,通過(guò)這個(gè) Proxy Class 來(lái)調(diào)用 On-Premises 系統(tǒng)上的 RFC 函數(shù)。將前一步驟在 On-Premises 系統(tǒng)里生成的 metadata.xml, 導(dǎo)入到 Proxy 類生成向?qū)Ю铩?/p>

激活這個(gè) Service Consumption Model,在自動(dòng)生成的代理類里,我們能找到 ABAP 代碼模板,這個(gè)代碼模板,可以直接拷貝到我們的 ABAP 代碼里,稍作修改,就能調(diào)用 ABAP On-Premises 系統(tǒng)的 RFC 函數(shù)了。

新建一個(gè) ABAP 類,將上圖代理類里的代碼拷貝到這個(gè) 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 系統(tǒng) AG3 的 Destination 配置。

原因是,在 SAP BTP、ABAP 環(huán)境和內(nèi)部部署之間設(shè)置連接時(shí)存在兩個(gè)問(wèn)題:

  • ABAP 環(huán)境“存在”于 Internet 中,但客戶內(nèi)部部署系統(tǒng)位于防火墻之后
  • RFC 不支持 Internet

因此,需要建立從內(nèi)部部署系統(tǒng)到 SAP BTP、ABAP 環(huán)境的安全隧道連接。

  • ABAP 環(huán)境租戶從 Destination 服務(wù)實(shí)例中獲取目的地。
  • ABAP 環(huán)境租戶通過(guò) Connectivity 服務(wù)請(qǐng)求打開(kāi)隧道連接。
  • 連接服務(wù)告訴云連接器使用管理連接打開(kāi)與此特定 ABAP 環(huán)境租戶的連接。
  • 云連接器使用其公共租戶 URL 打開(kāi)到 ABAP 環(huán)境租戶的隧道連接。
  • 隧道建立后,可用于使用 RFC 或 HTTP(S)協(xié)議進(jìn)行實(shí)際數(shù)據(jù)連接。

更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:

總結(jié)

以上是生活随笔為你收集整理的如何在 SAP BTP ABAP 编程环境里直接调用 ABAP On-Premises 系统的 RFC 函数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。