一
前言
CPI是SAP公司提供的雲服務,功能類似於PI/PO,用於整合多個系統之間的呼叫
本文主要介紹一個通用介面設計 該介面用於實現ECC/S4把資料發到指定FTP伺服器的目錄中,檔案格式csv.
二
FTP伺服器連線配置
cloud connect 中配置連線內網的FTP伺服器。如果FTP伺服器有公網地址, 則無需該配置。
CLOUD CONNECT 是SAP的反向代理服務,用於CPI訪問內網伺服器。
需要配置連線FTP的賬號(安全材料),如果是FTPS 或SFTP,還需要匯入證書(金鑰庫)
三
IFlow 配置
這個IFlow配置是一個通用配置, 配置一次後, 所有此類的介面都可以呼叫這個IFlow,傳遞json檔案到IFlow, IFlow負責把JSON最終轉換成CSV 檔案, 寫入目標FTP伺服器
概覽
HTTPS SEND
JSON到XML的轉換器
XML到CSV的轉換器
其中/data節點需要留意, 該節點的定義需要和ABAP中資料結構的定義一致。
透過指令碼修改檔名,新增時間戳字尾, 該節點不是必須的 可以在ABAP傳遞的http 抬頭引數(Filename)中整合相關資訊。
序列執行的兩個步驟
步驟一,用於把csv檔案寫入ftp伺服器,
步驟二,用於返回一個成功訊息
步驟一, 寫入ftp檔案
步驟二。返回一個成功訊息
異常處理, 返回一個失敗訊息
四
配置ECC/S4連線CPI
ECC/S4主要透過類 cl_http_client 呼叫外部系統(包括CPI系統)的rest服務。 需要先定義和CPI伺服器的連線資訊
獲取CPI REST 服務的呼叫地址
在瀏覽器中獲取CPI的證書
證書匯入ECC/S4系統(TCODE STRUST)。
進入修改模式
匯入之前下載的證書檔案
Add to certificate list(新增到證書列表)
儲存
確保再次進入後能看到證書資訊
配置SM59和CPI 的連線
建立一個G(HTTP connect to extenal server )型別的連線
輸入連線的關鍵資訊
主機域名
埠
服務地址
代理伺服器地址(因為ECC/S4在內網系統, 無法直接訪問外網的CPI伺服器, 需要透過代理伺服器方式)
登入資訊
指定https連線(如果不指定, 系統會使用http連線,不符合CPI釋出的服務要求)。
五
ABAP呼叫
ABAP 呼叫CPI的服務可以封裝成一個函式, 多個介面呼叫這個函式,透過引數指定目錄/檔名,傳入不同的資料或JSON串,實現把特定的資料寫入FTP檔案。
建立函式Z_IF_CALL_CPI_FTP。
函式允許傳入JSON串或者資料物件。 如果是資料物件, 使用通用類轉換成JSON串
基於RFC目標定義http client 物件
設定密碼不彈框及其它抬頭引數
傳送報文,並獲取返回的報文
獲取並解析返回的報文,
函式測試驗證透過
檢視FTP伺服器檔案
資料定義
該資料定義與IFlow中XML->CSV的節點定義相關
關於傳遞的JSON資料格式如下
{“data”: [{“f1”: “M001”, “f2”: “W001”, “f3”: “10”}, {“f1”: “M002”, “f2”: “W002”, “f3”: “20”}]}
六
總結
ABAP資料透過CPI寫入外部FTP伺服器的指定目錄,該介面場景比較簡單。尤其應用了CPI中的XML->CSV通用轉換後, 所有這一類的介面可以共用這個CPI的配置。 只需要把每個介面特性部分的內容設計成http 抬頭引數傳遞到CPI即可。 比如檔案目錄,檔名等資訊。
基於這類介面的共性, 可以考慮整合到資料同步平臺中,作為一種特殊的目標系統(在資料平臺原有邏輯寫入目標資料庫的部分替換成呼叫一個指定的函式,函式中完成對HTTP服務的呼叫即可。