JAVA 与 SAPRFC 接口简介

作者:郑德鼎 约 6 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发
JAVA 与 SAPRFC 接口简介 - 封面图
JAVA 与 SAPRFC 接口简介 - 封面图

迈克尔.梅

JAVA 与 SAPRFC 接口简介 - 封面图
JAVA 与 SAPRFC 接口简介 - 封面图

JAVA 简介

JAVA是当前最流行的编程语言,面向对象,简单易学,用途广泛。目前JAVA应用包括以下两种

1、J2EE WEB 应用主要用于建设各种网站,目前京东,淘宝等网站都是用J2EE创

建,J2EE技术特点是,系统稳定性、兼容性和可扩展性强,访问速度快,资源丰富。

2、移动设备应用主要用在Android平台上,目前各种手机和PAD上面基于Android系统的各种App,都是由JAVA开发的,将来也会有其他平台加入JAVA阵营中。

JCO简介

JCO全称为JAVA

Connector,是SAP提供的一套基于RFC的,在ABAP和JAVA两种语言之间通讯的组件。JCO可以在ABAP和JAVA两种语言之间,直接进行数据转换,无需通过中间组件,转换效率高。这种转换过程是轻量级的,不需要消耗太多系统资源。

JAVA 与 SAPRFC 接口简介 - 封面图
JAVA 与 SAPRFC 接口简介 - 封面图

各种接口对比

以下是Web Service, PO和JCO接口技术特点对比,通过对比可以发现JCO的优势和弊端

技术名称 | 容易开发 | 支持多平台 | 数据保密 | 双向通讯

---|---|---|---|---

Web Service | 否 | 是 | 是 | 是

PO | 是 | 是 | 否 | 是

JCO | 是 | 否 | 是 | 否

JCO的优势

1、简单易用,对于ABAP开发,只需提供RFC函数即可,无需额外开发。对于JAVA开发,只需把JCO的JAR包,引入到开发组件中。无需转换任何XML格式数据。接口如果经常变动,例如频繁新增字段,此方法优势明显。

2、保密性强,直接在ABAP和JAVA之间进行数据交换,不会产生任何日志文件。适用于有保密要求的接口,例如工资接口等。

JCO的弊端

1、不支持多平台,只能在ABAP和JAVA之间进行数据转换。如果客户使用的是微软的C#语言,有类似的技术支持。目前不支持JAVA和C#以外的平台。

2、不能双向通讯,目前只能让外围系统主动发起,并调RFC函数。ABAP目前没法主动调用外围系统方法。

JAVA 与 SAPRFC 接口简介 - 封面图
JAVA 与 SAPRFC 接口简介 - 封面图

大家可以通过以下链接,在官网下载最新版Eclipse安装包

https://www.eclipse.org/downloads/

sapjco3.dll和sapjco3.jar文件可以找我要

安装好Eclipse之后,新建项目,并把sapjco3.jar引入项目中

JAVA 与 SAPRFC 接口简介 - 封面图
JAVA 与 SAPRFC 接口简介 - 封面图

图中红框1为新建的项目,红框2为自定义的文件夹,红框3为引入的JCO的JAR包

引入JCO的JAR包方法

JAVA 与 SAPRFC 接口简介 - 封面图
JAVA 与 SAPRFC 接口简介 - 封面图
JAVA 与 SAPRFC 接口简介 - 封面图
JAVA 与 SAPRFC 接口简介 - 封面图

按照上面步骤就可以把JCO的JAR包引入项目中

JAVA 与 SAPRFC 接口简介 - 封面图
JAVA 与 SAPRFC 接口简介 - 封面图

Windows下还需要将sapjco3.dll文件放到system32的目录下

JAVA 与 SAPRFC 接口简介 - 封面图
JAVA 与 SAPRFC 接口简介 - 封面图

新建2个JAVA类,用于注册跟SAP的接口,注册内容包括系统IP地址,客户端,账号和密码等信息。这两个类都可以连接SAP,只是一个带连接池,一个不带

JAVA 与 SAPRFC 接口简介 - 封面图
JAVA 与 SAPRFC 接口简介 - 封面图

上图红框部分是SAP的IP地址,客户端,密码和账号等信息

创建好注册类之后执行这2个类。执行后,会在指定目录下生成2个文件

JAVA 与 SAPRFC 接口简介 - 封面图
JAVA 与 SAPRFC 接口简介 - 封面图

上图左边红框生成了2个文件,我们打开的是不带连接池连接方式生成的文件。

ABAP_AS_WITHOUT_POOL.jcoDestination中包含SAP的IP地址,密码账号等信息,用于连接SAP调用RFC函数。

JAVA 与 SAPRFC 接口简介 - 封面图
JAVA 与 SAPRFC 接口简介 - 封面图

创建ABAP RFC函数,用于JAVA远程调用

JAVA 与 SAPRFC 接口简介 - 封面图
JAVA 与 SAPRFC 接口简介 - 封面图
JAVA 与 SAPRFC 接口简介 - 封面图
JAVA 与 SAPRFC 接口简介 - 封面图

上图:创建函数Z_JAVA_JCO,函数处理类型必须选择”远程启用的模块“,才能被远程调用

下图:此函数通过表IN_BUKRS输入需要查询的公司代码,函数被调用之后,查询结果返回在表OUT_T00中,返回公司代码和公司名称2个字段。

创建CallRFCFunction类用于调用Z_JAVA_JCO函数,并显示结果

JAVA 与 SAPRFC 接口简介 - 封面图
JAVA 与 SAPRFC 接口简介 - 封面图

红框1: 表示通过不带连接池方式连接

红框2: 调用函数Z_JAVA_JCO

红框3: 调用输入参数IN_BUKRS

红框4: 给输入参数赋值,查询范围为 0001到9999

红框5: 调用输出参数OUT_T001

红框6: 把公司代码和公司名称显示出来

红框7: 触发调用上面方法,开始执行

执行类CallRFCFunction,并显示执行结果

JAVA 与 SAPRFC 接口简介 - 封面图
JAVA 与 SAPRFC 接口简介 - 封面图

点击按钮开始执行,右下框为输出结果。结果显示成功输出从0001到9999的公司代码和公司名称字段

郑德鼎

关于作者:郑德鼎

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「JAVA与SAPRFC接口简介.md」整理生成,仅用于内部技术分享与学习交流。