當前為10.0版本文檔,更多實例內容將在最新幫助文檔中展現,點選跳轉至 最新版幫助文檔

SAP的RFC接口調用例子

1. 概述

SAP 作爲獨立的系統,與其它系統進行交互的時候,主要是兩種方式:

  • 底層數據庫直接交互

  • 通過 SAP 專門的 RFC 接口進行數據調用

所以 FineReport 設計報表時要使用 SAP 系統的數據,也就對應兩種實現方式,直連數據庫或使用 RFC 接口。

SAP 現在主要的數據庫有 Oracle 和 DB2 兩種關系型數據庫,FineReport 可以通過 JDBC 的方式直連 SAP 數據庫實現取數,但此取數方式需要報表開發人員充分了解 SAP 數據庫,并且 SAP 數據庫要允許其他系統訪問,現推薦使用 SAP 插件 通過 SAP 用戶賬号連接 SAP 系統後取數。

注:推薦使用  SAP 插件只有在插件取數出現問題,可使用本文的方法來還原問題。

用戶也可以通過編寫 Java 文件通過 SAP 專門的 RFC 接口進行數據調用,本文以示例的方式介紹這種方法。

2. 實現思路

首先通過 Java 類文件建立和 SAP 的連接,然後通過程序數據集接口,将 RFC 調出來的數據進行虛拟二維表封裝,調用虛拟二維表,進行報表的制作。

3. 實現步驟

3.1 增加 SAP JAR 包

報表工程部署在 Windows 系統的服務器下,以 Tomcat 爲例。

注:下文中使用到的 SAP 的 JAR 包文件請到  SAP 官網 下載。 

JDK 位數JDK 版本文件包SAP 文件導入位置
32位JDK1.4sapjco2_window_32bitsapjco.jar 放在%TOMCAT_HOME%\lib路徑下

librfc32.dll 放在C:\Windows\System32路徑下

sapjcorfc.dll 放在C:\Windows\System32路徑下

JAK1.5以上sapjco3_windows_32bitsapjco3.jar 放在%TOMCAT_HOME%\lib路徑下
sapjco3.dll 放在C:\Windows\System32路徑下
64位JDK1.4sapjco2_window_32bitsapjco.jar 放在%TOMCAT_HOME%\lib路徑下

librfc32.dll 放在C:\Windows\System32路徑下

sapjcorfc.dll 放在C:\Windows\System32路徑下

JAK1.5以上sapjco3_windows_32bitsapjco3.jar 放在%TOMCAT_HOME%\lib路徑下
sapjco3.dll 放在C:\Windows\System32文件夾下

3.2 建立 SAP 連接

通過 ConnectSAPServer 類實現與 SAP 的連接,類文件的代碼如下:

https://code.fanruan.com/demo/example/src/release/10.0/src/main/java/com/fr/function/ConnectSAPServer.java

注:連接步驟請參考:編譯Java程序

234.png

3.3 定義程序數據集

數據庫連接上之後,定義程序數據集,通過我們的程序數據源接口将數據轉換成虛拟表,ParamSAPDataTest 類文件具體代碼如下:

https://code.fanruan.com/demo/example/src/release/10.0/src/main/java/com/fr/data/ParamSAPDataTest.java

1563527421459301.png

3.4 配置程序數據集

詳細配置步驟請參見:簡單程序數據集 3.3 節

配置完成後可在設計器成功新建程序數據集,如下圖所示:

1563527562456019.png

4. 總結

RFC 接口這種方式避免了直連數據庫的問題,同時 RFC 參數和調用表結構的方式網上有很多參考或者 SAP 供應商都會提供,但需要寫類文件來獲取數據,報表多的時候會比較麻煩,如果要達到一些圖表聯動等效果,需要在類裏面寫參數,修改不方便,适合具有 java 開發經驗的技術人員使用。

附件列表


主題: 原簡體文檔
  • 有幫助
  • 沒幫助
  • 只是瀏覽

文 檔回 饋

滑鼠選中內容,快速回饋問題

滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。

不再提示

9s后關閉

反饋已提交

網絡繁忙