我的第一個SAP PROXY ABAP Program(SAP PO 開發五)

SAP PO 開發系列接近尾聲,當然最後還需要一個壓軸大戲DEMO006:PROXY2SOAP。

這次我們要使用久違的PROXY,通過使用PROXY我們才知道SAP 接口開發中RFC和PROXY的本質區別,

而網上那篇SAP IDOC、RFC、PROXY協議比較的表格終歸講得太淺。

 

一、DEMO006的場景:

SAP HCM系統中通過PROXY方式傳出一個數據給PO,PO把這個數據傳給一個WebService。

WebService收到數據後,把數據放到一段文本中返回PO,PO再返回到SAP HCM系統中。

二、DEMO006在PO上SLD的配置內容:

三、打開PO的Enterprise Services Builder配置:

1、同SAP HCM相關的接口內容DT、MT、SI:

發出變量定義int

收到返回的字符串

向上封裝成MT

帶出SI

2、同WebSerivce相關的接口內容DT、MT、SI:

因爲WS是有接口描述文件xsdl的,我們就偷懶不用創建DT、MT了。

直接用xsdl創建ED,ED再創建SI就好。

創建MM的請求和返回

 

創建OM

四、打開PO的Integration Builder配置:

建一個demo006集成環境,空的就行。

建一個CC通道,注意看協議是基於HTTP的XI3.0,

說明SAP ABAP端是把數據封裝到基於HTTP的XI協議發給PO的:

建一個CC通道,在WebService這邊,注意看協議是標準的WS的SOAP協議:

最後建IC的1~4頁籤:

PO端配置完成。

 

 

五、在SAP服務器的ABAP環境中作一個proxy程序

SPROXY事務代碼中,可以看到已經有了DEMO006

在Service_Consumers中,點SI_demo006_sender,創建一個proxy:

這個proxy的參數,我們看到有MT:

點一個MT進去,裏面還有一個DT類型,這些都是SAP根據PO創建的數據結構自己創建的

DT裏面有我們的一個變量:

 

寫一個ABAP程序,調用這個proxy接口:

DATA  LO_PROXY TYPE REF TO ZPOCO_SI_DEMO006_SENDER.
DATA  Z1 TYPE ZPOMT_DEMO006_RESPONE.
DATA  Z2 TYPE ZPOMT_DEMO006_REQUEST.

Z2-MT_DEMO006_REQUEST-ZVALUE  = 3.

CREATE OBJECT LO_PROXY.

  TRY.
    CATCH CX_AI_SYSTEM_FAULT.
  ENDTRY.


  TRY.
      LO_PROXY->SI_DEMO006_SENDER(
        EXPORTING
        OUTPUT = Z2
        IMPORTING
        INPUT  = Z1
        ).
    CATCH CX_ROOT INTO DATA(LCX_ERROR).
      DATA(ERR_TEXT) = LCX_ERROR->GET_TEXT( ). "得到錯誤信息
  ENDTRY.


WRITE:/ ERR_TEXT.
WRITE:/ Z1-MT_DEMO006_RESPONE-ZRETURN.

運行程序,得到WS的返回文本:

 

SAP RFC協議工作在SOCKET底層,它的使用環境是ABAP,C#的NCO、JAVA的JCO類庫。

SAP PROXY的XI協議,工作在上面的HTTP層,它的環境是藉助PI、PO系統提供上層的基於SOAP的服務。

我想這是RFC和PROXY的本質區別。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章