反饋已提交
網絡繁忙
使用者SAP系統整合時,只能通過程式資料集或者是 ETL 工具進行取數,實現起來非常麻煩。
安裝該插件後,在FineReport8.0 及後續版本中,可在伺服器資料連線處新增資料連線型別 SAP 資料連線,在資料集中新增 SAP 資料集型別。
與 SAP 系統進行連線,需要匯入 SAP API包和本地庫,並確保執行的 JVM 能夠找到API包和本地庫。
插件安裝方式,可參考A11-18伺服器-插件管理。
如果資料連線失敗,可以嘗試將 sapjco3.dll 檔案放置在系統 jre 的 bin 目錄下,例如:%JAVA_HOME%\jre\bin。
Windows Server 2003 和 Windows XP 的系統在連線 SAP 時,需要下載安裝 Microsoft Visual C++ 2005 SP1。
32
JDK1.8 且小版本需在JDK 8u102 以上
sapjco3_windows_32bit.rar
sapjco3.jar 放在%TOMCAT_HOME%\lib路徑下
sapjco3.dll 放在C:\Windows\System32路徑下
64
sapjco3_windows_64bit.rar
將驅動檔案解壓後放置在…/FineReport/lib下。
開啟設計器 bin 目錄,右擊designer,選擇顯示包內容,開啟 vmoptions.txt 檔案,在檔案中寫入:-Djava.library.path=/Applications/FineReport10.0/lib(所放置的檔案路徑)。
libsapjco3.zip
32位
sapjco3_linux_32bit.rar
libsapjco3.so 放在%JAVA_HOME%\jre\bin路徑下
libsapjco3.so 放在usr\lib資料夾下,若 Linux 為 64 位,放到usr\lib64路徑下
64位
sapjco3_linux_64bit.rar
libsapjco3.so 放在usr\lib64路徑下
根據安裝的設計器位數,下載 Windows 系統下對應位數的 JDK1.6 版本的 SAP 檔案包。
sapjco3_windows_32bit (1).rar
sapjco3.jar 放在%FR_HOME%\lib路徑下
sapjco3.dll 放在%FR_HOME%\jre\bin路徑下
sapjco3_windows_64bit (1).rar
點選【伺服器】→【定義資料連結】→【+】,選擇【SAP】。
輸入資料庫連結資訊,點選【測試連結】,連結成功後點擊確定即可。
【主機名】區域網中已配置的 SAP 的主機名稱,也可以寫此機器的 IP 地址,不是資料庫伺服器的主機名。
【SAP系統名】SAP 系統中設定的屬性,用於互動的埠號,一般來說是 00。
【客戶端】SAP 系統管理的業務和資料的最大有效集合,也是 SAP 系統的一個屬性。
【使用者】連線 SAP 時使用的賬號的使用者名稱,不是資料庫使用者名稱。
【密碼】連線 SAP 時使用的賬號的密碼,不是資料庫密碼。
【連結池屬性】SAP 系統中的容量和最大連結數。
在範本資料集設定處,點選【+】按鈕,選擇【SAP資料集】,進入SAP資料集配置介面。
資料集名稱可自訂修改。
SAP取數有三種方式:自訂、簡單通用查詢和通用查詢。
【自訂】取數就是直接呼叫 ABAP Function 獲取資料。
【簡單通用查詢】取數是通過 open SQL 語句,從某張表中讀取出某些欄,並列出資料需要滿足的一些條件。
【通用查詢】取數較之簡單通用查詢,增加了表間關聯的能力,支援多表查詢。
點選【】按鈕,可預覽資料集。
【Function】下拉框選擇【自訂】,點選後面的【設定】按鈕,進入函式獲取介面。
輸入需要獲取的函式名稱的一部分,點選搜尋,進行模糊查詢。
選定函式後,點選【確定】按鈕。
輸入是指參數輸入,即所選函式的參數輸入列表。
【參數名稱】ABAP 函式中的參數名稱,不可更改,直接從ABAP函式中刷新出來的,可以刪除,選中某一個參數,點選刪除按鈕即可,如果想恢復該參數,點選重新整理按鈕。
【SAP 資料型別】ABAP 函式中參數的資料型別,不可更改,直接通過函式重新整理出來。
【傳回集】如果參數是一個結構體參數的一部分,傳回集顯示這個結構體的名稱。
【資料型別】指該參數在 FR 報表中對應的參數資料型別。
【對應參數】指該參數在 FR 報表中對應的參數名稱,可手動編輯。
【參數預設值】指該參數在 FR 報表中參數的預設值,可手動編輯。
輸出就是所選函式的輸出結果集。
【SAP 欄名】ABAP 函式輸出結果集中的資料欄名稱,不可編輯,直接從 ABAP 函式中結果集中讀取出來,可以刪除,選中某欄,點選刪除即可,如果想恢復該欄,點選重新整理按鈕。
【SAP 資料型別】ABAP 函式輸出結果及中資料欄對應的 SAP 資料型別,不可編輯,直接通過函式結果集重新整理出來。
【資料型別】FR 報表中資料欄對應的資料型別。
【Function】下拉框選擇【簡單通用查詢】,手動輸入表名稱。
點選【選擇欄】後的【設定】按鈕,彈出選擇欄介面,選擇需要輸出的欄。
點選【確定】,【選擇欄】後面的文字框中會列出所選擇的幾個欄。
【過濾條件】後的文字框中用 open SQL 語句編寫輸出資料需要滿足的條件。
點選後面的【格式說明】按鈕,可查看 open SQL 的基本格式。
如果條件的值是動態變化的,則可用參數來實現,參數以${para}的形式展現。
點選下方的【】按鈕,可將參數重新整理展示,給參數設定一個預設值。
將EXTRACT_TABLE_DATA函式新增到SAP系統中。
FUNCTION EXTRACT_TABLE_DATA. *"---------------------------------------------------------------------- *"*"Local Interface: *" TABLES *" FIELDS STRUCTURE ZSQL_CLAUSE_ELEMENTS *" FROMCLAUSE STRUCTURE ZSQL_CLAUSE_ELEMENTS *" WHERECLAUSE STRUCTURE ZSQL_CLAUSE_ELEMENTS *" DATA STRUCTURE ZTABLEROWS *"---------------------------------------------------------------------- *"---------------------------------------------------------------------- *" Copy selected fields from QUERY_TABLE to DATA_STRUCTURE *"---------------------------------------------------------------------- TYPE-POOLS: abap. DATA: columnName TYPE SO_TEXT, fieldDataDescrRef TYPE REF TO abap_componentdescr, numberFields TYPE i, fieldDescr TYPE abap_componentdescr, fieldname TYPE string, fieldDescrTab TYPE abap_component_tab, rowStructDescr TYPE REF TO cl_abap_structdescr, rowReference TYPE REF TO data, returnRowString TYPE string, dataFieldString TYPE string, dataline LIKE data, fromClauseRow TYPE ZALBUS_STRUCT_WHERECLAUSE, fromClauseString TYPE string, whereClauseRow TYPE ZALBUS_STRUCT_WHERECLAUSE, whereClauseString TYPE string, fieldsRow TYPE ZALBUS_STRUCT_WHERECLAUSE. FIELD-SYMBOLS: <datarow> TYPE ANY, <datafield> TYPE ANY. * CREATE DataStructure with field names * Datatypes are read from fieldnames of FIELDS input table DESCRIBE TABLE FIELDS LINES numberFields. LOOP AT FIELDS INTO fieldsRow. fieldname = SY-TABIX. * names need to be unique and must start with a char CONCATENATE 'string' fieldname INTO fieldname. CONDENSE fieldname. fieldDescr-name = fieldname. * for dictionary lookup we need to change columnnames from Open SQL * to dictionary notation columnName = fieldsRow-TEXT. REPLACE FIRST OCCURRENCE OF SUBSTRING '~' IN columnName WITH '-' RESPECTING CASE. fieldDescr-type ?= cl_abap_typedescr=>describe_by_name( columnName ). APPEND fieldDescr TO fieldDescrTab. ENDLOOP. rowStructDescr = cl_abap_structdescr=>create( fieldDescrTab ). * now we create the actual data structure in memory create data rowReference type HANDLE rowStructDescr. * finally we assign it to the Field-symbol used by the select statement ASSIGN rowReference->* TO <datarow>. * End Create DataStructure * to simplify calls we concatenate from and whereclause into strings * this way caller doesn't need to check word wrappings fromClauseString = ''. LOOP AT FROMCLAUSE INTO fromClauseRow. CONCATENATE fromClauseString fromClauseRow-TEXT INTO fromClauseString. ENDLOOP. whereClauseString = ''. LOOP AT WHERECLAUSE INTO whereClauseRow. CONCATENATE whereClauseString whereClauseRow-TEXT INTO whereClauseString. ENDLOOP. * Now start actual select operation SELECT (FIELDS) FROM (fromClauseString) INTO <datarow> WHERE (whereClauseString). * we read all fields of the current row, cast it to string and * concatenate it into a dataline with division chars. CLEAR: returnRowString. DO numberFields TIMES. ASSIGN component sy-index of structure <datarow> to <datafield>. dataFieldString = <datafield>. CONCATENATE returnRowString '^' datafieldstring INTO returnRowString. ENDDO. dataline = returnRowString. * finally dataline is added to the return table. INSERT dataline INTO TABLE data. ENDSELECT. ENDFUNCTION.
【Function】下拉框選擇【通用查詢】。
Select即選擇所需欄,使用open SQL ,格式為表~欄。
這邊設定為KNA1~NAME2,KNVV~KUNNR,KNA1~LAND1。
From即將兩張表關聯起來,open SQL 語句中關聯表,用 inner join on 格式。
這邊設定為KNA1 INNER JOIN KNVV ON KNA1~KUNNR = KNVV~KUNNR。
Where設定選擇條件,可使用參數。
這邊設定為KNA1~NAME2 <>'' AND KNA1~LAND1 = '${land}'。
文 檔回 饋
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉