反饋已提交
網絡繁忙
SAP 作为独立的系统,与其它系统进行交互的时候,主要是两种方式:
底层数据库直接交互
通过 SAP 专门的 RFC 接口进行数据调用
所以 FineReport 设计报表时要使用 SAP 系统的数据,也就对应两种实现方式,直连数据库或使用 RFC 接口。
SAP 现在主要的数据库有 Oracle 和 DB2 两种关系型数据库,FineReport 可以通过 JDBC 的方式直连 SAP 数据库实现取数,但此取数方式需要报表开发人员充分了解 SAP 数据库,并且 SAP 数据库要允许其他系统访问,现推荐使用 SAP 插件 通过 SAP 用户账号连接 SAP 系统后取数。
注:推荐使用 SAP 插件,只有在插件取数出现问题,可使用本文的方法来还原问题。
用户也可以通过编写 Java 文件通过 SAP 专门的 RFC 接口进行数据调用,本文以示例的方式介绍这种方法。
首先通过 Java 类文件建立和 SAP 的连接,然后通过程序数据集接口,将 RFC 调出来的数据进行虚拟二维表封装,调用虚拟二维表,进行报表的制作。
报表工程部署在 Windows 系统的服务器下,以 Tomcat 为例。
注:下文中使用到的 SAP 的 JAR 包文件请到 SAP 官网 下载。
librfc32.dll 放在C:\Windows\System32路径下
sapjcorfc.dll 放在C:\Windows\System32路径下
通过 ConnectSAPServer 类实现与 SAP 的连接,类文件的代码如下:
https://code.fanruan.com/demo/example/src/release/10.0/src/main/java/com/fr/function/ConnectSAPServer.java
注:连接步骤请参考:编译Java程序
数据库连接上之后,定义程序数据集,通过我们的程序数据源接口将数据转换成虚拟表,ParamSAPDataTest 类文件具体代码如下:
https://code.fanruan.com/demo/example/src/release/10.0/src/main/java/com/fr/data/ParamSAPDataTest.java
详细配置步骤请参见:简单程序数据集 3.3 节
配置完成后可在设计器成功新建程序数据集,如下图所示:
RFC 接口这种方式避免了直连数据库的问题,同时 RFC 参数和调用表结构的方式网上有很多参考或者 SAP 供应商都会提供,但需要写类文件来获取数据,报表多的时候会比较麻烦,如果要达到一些图表联动等效果,需要在类里面写参数,修改不方便,适合具有 java 开发经验的技术人员使用。
文 檔回 饋
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉