反馈已提交

网络繁忙

当前为10.0版本文档,只有最新版本的文档支持在线编辑修改,如果想创建/编辑文档,请移步至 最新版帮助文档

SAP的RFC接口调用

  • 文档创建者:文档助手1
  • 历史版本:24
  • 最近更新:Carly 于 2023-08-09
  • 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 包

    Linux服务器:

    SAP 的 JAR 包文件请到  SAP 官网 下载

    JDK 位数将SAP 文件包中的文件导入对应路径
    32位

    sapjco3.jar 放在%TOMCAT_HOME%\lib路径下

    libsapjco3.so 放在%JAVA_HOME%\jre\bin路径下

    libsapjco3.so 放在usr\lib文件夹下,若 Linux 为 64 位,放到usr\lib64路径下

    64位

    sapjco3.jar 放在%TOMCAT_HOME%\lib路径下

    libsapjco3.so 放在%JAVA_HOME%\jre\bin路径下

    libsapjco3.so 放在usr\lib64路径下

    注:如果仍连接不了,看报错信息,例如验证 SAPJCO 失败,缺少依赖包 libstdc++.so「SAPJCO2 才需要,而 SAPJCO3 不需」,则需要安装共享库。

    Windows服务器:

    SAP 的 JAR 包文件请到  SAP 官网 下载

    JDK 位数JDK 版本文件包SAP 文件导入位置
    32位JDK 1.8 且小版本需在 JDK8u102 以上sapjco2_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位JDK 1.8 且小版本需在 JDK8u102 以上sapjco2_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 配置程序数据集

    1)将编译后生成的 ParamSAPDataTest.class 类文件文件复制到 %FR_HOME%webapps/ webroot/WEB-INF/classes/com/fr/data 工程目录下。

    注:远程设计时,本地设计器和远程服务器的工程下都需要放置程序数据集对应的 class 文件。

    2)新建模板,点击模板数据集下面的加号,选择「程序」数据集,在弹出的程序数据集对话框中,选择对应的 class 文件,完成数据集配置。

    3)配置完成后可在设计器成功新建程序数据集,如下图所示:

    注:程序数据集第一次执行时会在 FineReport 设计器启动程序所在的目录(一般为 %FR_HOME%\bin)下生成 ABAP_AS_WITH_POOL.jcoDestination 配置文件,如果需要替换 calss 文件,注意要同时删除生成的此文件。

    1563527562456019.png

    4. 总结

    RFC 接口这种方式避免了直连数据库的问题,同时 RFC 参数和调用表结构的方式网上有很多参考或者 SAP 供应商都会提供,但需要写类文件来获取数据,报表多的时候会比较麻烦,如果要达到一些图表联动等效果,需要在类里面写参数,修改不方便,适合具有 java 开发经验的技术人员使用。

    附件列表


    主题: 二次开发
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览

    售前咨询电话

    400-811-8890转1

    在线技术支持

    请前往「服务平台」,选择「在线支持」

    热线电话:400-811-8890转2

    总裁办24H投诉

    热线电话:173-1278-1526