SAP雲平臺上兩個ABAP系統例項之間的互連

i042416發表於2020-03-29

場景:SAP雲平臺上的兩個ABAP系統例項,一個作為資料的提供者-provision system;另一個作為資料的消費者 - client system,後者從前者讀取資料,並顯示

實現步驟概述:

(1) client System建立outbound communication. (2) 在provision系統建立inbound communication. (3) Create a Service Consumption Model, and save this locally as a $metadata XML file; From this you will create proxy artefacts in the client system, representing the remote service, and use this model to generate an abstract entity. (4) 建立一個remote client proxy (5) 在client System建立一個OData服務,使用Fiori Elements消費並展示從provision系統取回的資料


SAP雲平臺上兩個ABAP系統例項之間的互連


SAP標準釋出的Communication Scenario SAP_COM_0276,提供了SAP Cloud Platform ABAP例項同遠端的ABAP On-Premises系統或者第三方系統整合的可能性。

A communication arrangement specifies the metadata for a specific communication scenario, such as your host system and the authentication method. This metadata is contained in a service key. You can then define one or more specific destinations for this arrangement.

Communication Arrangement為Communication Scenario指定了必須的後設資料,包括通訊系統和訊息認證方式等資訊,這些後設資料以Service key的形式儲存。可以基於Communication Arrangement建立Destination.

在SAP雲平臺CloudFoundry環境裡建立一個Destination服務例項:


SAP雲平臺上兩個ABAP系統例項之間的互連 SAP雲平臺上兩個ABAP系統例項之間的互連 SAP雲平臺上兩個ABAP系統例項之間的互連


基於這個Destination服務建立一個新的Destination例項:


SAP雲平臺上兩個ABAP系統例項之間的互連 SAP雲平臺上兩個ABAP系統例項之間的互連


url欄位維護成provision System的url,確保連線能夠成功建立。


SAP雲平臺上兩個ABAP系統例項之間的互連


給Destination service建立一個新的service key,將其內容儲存在本地:


SAP雲平臺上兩個ABAP系統例項之間的互連


在client System上開啟ABAP service instance的dashboard:


SAP雲平臺上兩個ABAP系統例項之間的互連 SAP雲平臺上兩個ABAP系統例項之間的互連 SAP雲平臺上兩個ABAP系統例項之間的互連


在Communication Arrangement tile裡,建立一個新的例項:


SAP雲平臺上兩個ABAP系統例項之間的互連


從Communication Scenario下拉選單裡,選擇之前介紹的SAP_COM_0276: SAP CP CF Destination Service integration:


SAP雲平臺上兩個ABAP系統例項之間的互連 SAP雲平臺上兩個ABAP系統例項之間的互連


選擇好Communication Scenario後,維護Communication Arrangement的名稱,比如OUTBOUND_XXX.

在Communication Arrangement的additional properties裡,將service instance name的值從預設值OUTBOUND_XXX改成更便於記憶的值,比如Outbound-For-Tutorials_XXX.

最後一步,在ABAP client System上建立ABAP 實現類:

CLASS ZCL_OUTPUT_HTTP_XXX DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC .
  PUBLIC SECTION.
    INTERFACES if_oo_adt_classrun.
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.
CLASS ZCL_OUTPUT_HTTP_XXX IMPLEMENTATION.
  METHOD if_oo_adt_classrun~main.
     TRY.
        DATA(lo_destination) = cl_http_destination_provider=>create_by_cloud_destination(
          i_name                  = 'A4C_ACCESS_XXX_HTTP'
          i_service_instance_name = 'Outbound-For-Tutorial-XXX'
          i_authn_mode = if_a4c_cp_service=>service_specific ).
        DATA(lo_http_client) = cl_web_http_client_manager=>create_by_http_destination( i_destination = lo_destination ).
        DATA(lo_request) = lo_http_client->get_http_request( ).
        DATA(lo_response) = lo_http_client->execute( i_method = if_web_http_client=>get ).
          out->write( lo_response->get_text( ) ).
      CATCH cx_root INTO DATA(lx_exception).
        out->write( lx_exception->get_text( ) ).
      ENDTRY.
  ENDMETHOD.
ENDCLASS.

第18行的引數i_name的值,就是之前在SAP Cloud Platform裡建立的Destination名稱。


SAP雲平臺上兩個ABAP系統例項之間的互連


i_service_instance_name, 就是建立的Communication Arrangement additional properties裡建立的Service instance name的值。


SAP雲平臺上兩個ABAP系統例項之間的互連


執行ABAP類,測試結果如下:


SAP雲平臺上兩個ABAP系統例項之間的互連


要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":

SAP雲平臺上兩個ABAP系統例項之間的互連


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2683181/,如需轉載,請註明出處,否則將追究法律責任。

相關文章