C# NET6 call SAP API 紀錄 - 使用 SapNwRfc

為工作紀錄。於 .NET6 環境使用 C# 呼叫 SAP API 應用紀錄。on 2022-10-12。

關鍵知識/注意事項

SAP APISAParrow-up-right 獨立的規格用於通訊,功能效果類似 Web API,當然規格完全不相容。不相容的好處當然就是"安全"囉。官方與 C# 通訊的模組,SAP Connector for Microsoft .NET 3.0arrow-up-right,仍活在 .NET Framework 3.0 很無言啊,現在都是 .NET6 的時代了。

還好很幸運有先行者解決了與 .NET Core 通訊的問題,SapNwRfcarrow-up-right,在使用時期雖是為 .NET5 設計的然在 .NET6 仍然有效。

SapNwRfc 的實作其實是把 SAP 原生的 native DLL 包裏起來,外殼是 .NET Core 內層是 native DLL 函式庫,依不同平台各自下載。我們使用的版本是 the SAP NetWeaver RFC SDK Version 7.50 Librariesarrow-up-right,下載此資源需有 SAP 帳戶才行。它提供有 AIX 64-bit、Linux.64、Windows EM64T、Windows 32-bit (client only) 四個版本。我們用的是 Windows EM64T 版本。

Operating System

Unicode SAP NetWeaver RFC SDK libraries

Windows EM64T

  • libsapucum.dll

  • libicudecnumber.dll

  • sapnwrfc.dll

  • icuin50.dll

  • icuuc50.dll

  • icudt50.dll

參考文件

環境變數 (Environment Variable)

開發環境

IDE: Visual Studio 2022 執行平台: .NET6 系統骨架:Blazor Server App 開發OS: Win 11 部署目的地OS: Windows Server 2019

一、安裝/下載相關模組

  1. 自 NuGet 安裝 SapNwRfc 套件:

  2. 下載 the SAP NetWeaver RFC SDK Version 7.50 Librariesarrow-up-right。 注意,下載此資源需透過有授權的 SAP 帳戶。

  3. 安裝適用於 Visual Studio 2013 的 Visual C++ 可轉散發套件arrow-up-right。 太概 SapNwRfc SDK Libraries 是用 VS2013 開發的 navitve DLL 故需有此模組才能運轉吧。

二、設定環境參數

引用 SapNwRfc 原生函式庫有兩用方法,新的方法是透過 NativeLibrary.SetDllImportResolverarrow-up-right ,但這招不好用且失敗了。反而舊的方法,用 PATH 環境參數找 SapNwRfc 原生函式庫四個檔案:sapnwrfc.dllicudt50.dllicuin50.dllicuuc50.dll,簡單且成功了。

紀錄

1)把拿到的 SapNwRfc 原生函式庫全部存入 C:\MyLib\nwrfcsdk

2)設定 PATH

開啟【檢視進階系統設定】工具程式,選取[系統內容\環境變數\系統變數\PATH]編輯環境變數,把上面放原生函式庫的路徑加入。

三、開始寫程式

在 appsettings.json 設定 SAP API 連線字串

在 Program.cs 註冊注入服務

定義通訊 Model

終於可以應用了 - 呼叫 SAP API

其他:測試 SAP API 通訊

EOF

Last updated