點擊藍字?關注我們
一
前言
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服務的調用即可.
本文使用 文章同步助手 同步