Java直接调用SAP函数详解---Windows篇

JAVA 调用 SAP RFC接口【函数】的方式实例【window 和Linux不同部署】 java要调用 SAP RFC接口时,需要用到sapjco3.jar 架包; windows下还需要将文件sapjco3.dll文件放到system32的目录下; linux下同样需要把sapjco3.so放入项目的执行目录下; 下载链接:稍等 java项目下直接把sapjco3.jar 和sapjco3.dll 两个文件da放到 项目lib下 直接上代码:连接sap pack... 阅读详情


Java与SAP之间进行交互有好多解决方案,比如:通过EAI中间平台、WebService接口、SAP JCo组件等等。本文主要介绍在Windows下通过SAP JCo组件实现Java可以直接调用SAP函数。

SAP JCo 的全称是SAP Java Connector(JCo)是SAP提供的一套高效的基于RFC的APAP和Java进程间的通讯组件。

此前使用该组件开发接口,简单测试了下,效率也是很不错的,有个传输数据的接口,在测试环境简单试了试,三万条数据3秒(非压测环境)。

JCo3.0安装

可以根据自己电脑是32位的还是64位的到官网进行下载

官网:https://service.sap.com/connectors

我这有64位的资源,放置到了百度网盘上,公众号内回复【SAPJCo3】获取

主要就是两个文件:

  • sapjco3.dll
  • sapjco3.jar

在Windows环境下,配置非常简单:

  • 将sapjco3.dll和sapjco3.jar文件文件放入JDK的lib目录下(连接池方式)
  • 将sapjco3.dll文件放入C:\Windows\System32目录下

如何测试是否配置成功呢?

可以在命令窗口下,进入JDK的lib目录,运行下面的命令:

java -jar sapjco3.jar

成功后会弹出下图:

这样在Windows下用Java去连接SAP提供的函数就可以了。

另外,还有一个工具也可以连接SAP,就是–Kettle

配置也非常简单

  • Windows下配置

    将sapjco3.jar拷贝至data-intergration/lib下,sapjco3.dll拷贝至data-intergration/libswt/相应系统下即可

  • Linux下配置

    将sapjco3.jar,libsapjco3.so拷贝至data-integration/libswt/linux/x86_64下即可

应用实例

在Web项目中,使用该组件,需要先创建jcoDestination配置文件,SAPJCo3插件会自动去解析创建连接,以及自动关闭连接,不需要手动进行处理。

现在项目大部分都是maven或者gradle来进行管理,项目中需要增加对sapjco3的依赖

配置文件

创建一个类,用于配置生成连接文件,只展示了部分代码示例,全部类信息传到百度网盘,下载后可以直接使用,有需要公众号回复【SAPJCo3】自取

//......  ....... 

private static final String ABAP_AS_SAP800 = "ABAP_AS_SAP";
  static{
    Properties connectProperties = new Properties();    
    connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "X.X.X.X");//服务器
    connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR,  "00");        //系统编号
    connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "800");       //SAP集团
    connectProperties.setProperty(DestinationDataProvider.JCO_USER,   "name");  //SAP用户名
    connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "password");     //密码
    connectProperties.setProperty(DestinationDataProvider.JCO_LANG,   "ZH");        //登录语言
    connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3");  //最大连接数
    connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, "10");     //最大连接线程
    
    createDataFile(ABAP_AS_SAP, "jcoDestination", connectProperties);
  }

/**
   * 创建SAP接口属性文件。
   * @param name  ABAP管道名称
   * @param suffix  属性文件后缀
   * @param properties  属性文件内容
   */
  private static void createDataFile(String name, String suffix, Properties properties){
    File cfg = new File(name+"."+suffix);
    if(cfg.exists()){
      cfg.deleteOnExit();
    }
    try{
      FileOutputStream fos = new FileOutputStream(cfg, false);
      properties.store(fos, "for connection !");
      fos.close();
    }catch (Exception e){
      log.error("Create Data file fault, error msg: " + e.toString());
      throw new RuntimeException("Unable to create the destination file " + cfg.getName(), e);
    }
  }
//  .........

接口调用

我们在拿到SAP系统给出的函数以及入参、出参后,就可以使用JCo进行接口开发了,下面是在接口开发过程中常用的方法,基本够用,不够的可以去查询JCo的官方文档。

//获取要连接的SAP配置文件名,这个名需要配置到环境资源文件中,这样就可以通过打包来区别开连接SAP的不同环境
//此处为方面看,直接写上具体值
private static final String ABAP_AS_SAP = "ABAP_AS_SAP";
//创建与SAP的连接
JCoDestination dest = JCoDestinationManager.getDestination(ABAP_AS_SAP);
//获取repository
JCoRepository repository = dest.getRepository();
//获取函数信息
JCoFunction fm = repository.getFunction("函数名");
if (fm == null) {
   throw new RuntimeException("Function does not exists in SAP system.");
}
//获取输入参数
JCoParameterList input = fm.getImportParameterList();
//根据接口文档,可以知道入参,设置查询参数
//这个是函数的入参是单独的,而不是有表的情况
input.setValue("param1", value1);
input.setValue("param2", value2);
.......
//有表的情况,需要先获取表信息
JCoTable inTableWerks = jCoFunction.getTableParameterList().getTable("表名");
//一般有表的情况,都是可以传List的,所以可以循环往表中存参数
for (int i = 0; i < list.length; i++) {
    //附加表的最后一个新行,行指针,它指向新添加的行。
    inTableWerks.appendRow();
    inTableWerks.setValue("param", list[i]);
}
//执行函数
JCoContext.begin(jCoDestination);
jCoFunction.execute(jCoDestination);
JCoContext.end(jCoDestination);
//获取返回的Table
JCoTable outTableOutput = jCoFunction.getTableParameterList().getTable("表名");
//从输出table中获取每一行数据
if (outTableOutput != null && outTableOutput.getNumRows() > 0) {  
  //循环取table行数据
  for (int i = 0; i < outTableOutput.getNumRows(); i++) { 
    //设置指针位置
    outTableOutput.setRow(i);
    System.out.println(outTableOutput.getString("Param1"));
    System.out.println(outTableOutput.getString("Param2")); 
   } 
}

有更好的方法的同学,欢迎私信我,一起探讨img

​ 更多文章请扫描下方二维码关注公众号获取,或者微信搜索【HughPro】关注


SAP RFC调用示例 连接sap大概需要以下几步: windows环境下执行需要:sapjco3.jar、sapjco3.dll 1、获取连接(有四种格式) 2、获取相应函数 3、入参设置(一般有三种格式的入参:一般参数、JCoStructure参数、JCoTable参数)4、执行execute()方法,获取结果 5、根据返回结果解析相应数据。 一、获取连接: (1)主动生成配置文件 Properties connectProperties = new Properties(); connectProper... 阅读详情

相关推荐

windows 下的sap gui for java 配置

在WIN7 下装 sap gui 720  下载压缩包gui_720 for java ------>解压缩找到 PlatinGUIINT_1.JAR  安装 到完成   配置登陆端 一般的是conn=/H/服务器IP地址/S/连接服务器的端口号 但是在windows好像不需要这么多  只需要conn=/H/服务器Ip  就可以连接了  运行登录

坏坏的专栏 4857

java项目调用SAP函数报错

SAP

qq_38864315的博客 1559

Windows系统中实现Java与SAP集成的SAP JCo SDK指南

本文还有配套的精品资源,点击获取 简介:Windows环境下,Java开发人员在集成SAP系统时常用到SAP Java Connector (JCo) SDK。该SDK允许Java应用与SAP R/3系统或基于ABAP的应用程序通信。本文详细解释了必须的组件文件如sapjco3.dll、sapjco3.jar、sapjcomanifest.mf等的重要性及其功能,并提供了将...

weixin_35728286的博客 1724

Java(JCo3)调用sap接口

安装JCo3 windows安装 将sapjco3.dll拷贝到c:/windows/system32与C:\Program Files (x86)\Java\jdk1.7.0_51\bin下,将sapjco3.jar加入项目的classpath中 linux安装 sapjco3.jar放入Java的lib目录下,将libsapjco3.so放入Java/jre/lib/amd64/ser...

qq_32253371的博客 3350

SAP Java Connector3.0

SAP Java Connector3.0

sap java connector jco 3.1.1.7z

jco_3.1.1.7z

Java 代码使用 JCo3 对接 SAP RFC 函数

Java 代码使用 JCo3 对接 SAP RFC 函数

Calvin Chan的博客 1330

用于kettle连接sap

用于kettle连接sap 包括sapjco3.dll,sapjco3.jar,sapjco3.pdb

java使用jco连接sap调用rfc函数,环境配置+代码

1、将sapjco3.jar引入2、配置sapjco3.dll文件32位系统:将sapjco3.dll放到C:\Windows\System32下 或者放到jdk/bin下64位系统:将sapjco3.dll放到C:\Windows\SysWOW64下 或者放到jdk/bin下。

publicman_的博客 6407

SAPJCO31.zip

JAVA访问SAP R3系统RFC接口所需类库 SAP JAVA CONNECTOR 3.1.2 2019年10月6日发布版本

Kettle 连接SAP插件ITN ERP Connector

Kettle 连接SAP插件ITN ERP Connector。支持Kettle连接SAP的插件,可以直接读取函数、表等内容 ITN ERP Conn Kettle SAP。

通过JAVA连接SAP调用接口资源文件

通过JAVA连接SAP调用接口资源文件 去发现同类优质开源项目:https://gitcode.com/ 此仓库提供了通过JAVA连接SAP调用接口所需的关键资源文件,包括sapjco3.jar、sapjco3.dll和libsapjco3.so。以下是详细的文件描述和环境设置指南。 资源文件描述 本资源文件包含以下三个组件: sapjco3.jar:JAVA环境下连接SAP的主要库文件。 sa...

gitblog_06705的博客 873

SAP Java JCo 3.1.3 Windows 平台 64bit

SAP Java JCo 3.1.3 Windows 平台 64bit 更新于 200923-1521.

使用JCo连接SAP远程函数的简单方法

上网查了很久,都没找到JCo连接sap最简单的方法调用(指知道方法名和参数的情况下直接调用得到返回值),所以自己写了一点。 首先要调用JCo就必须先安装JCo(安装过程网上很多,转载一下) JCo的安装 很不幸,虽然JCo是用Java语言编写的但却是平台相关的。(具

aaron_luchen的专栏 4440

windows中JAVA对接SAP所需SDK

windows中JAVA对接SAP所需SDK

使用BK3432芯片进行蓝牙开发的详细指南:编程手册与实际应用

BK3432是一款蓝牙4.2双模式芯片,支持蓝牙低功耗(BLE)和经典蓝牙(BR/EDR)模式。它集成了高性能的RF收发器、基带处理器、ARM9E内核、丰富的功能外设单元,并支持BLE应用的可编程协议和概要文件。蓝牙版本:4.2数据速率:最高支持2Mbps内核:ARM9ERF收发器:高性能、低功耗外设单元:包括UART、SPI、I2C、GPIO等功耗:超低功耗设计,适合电池供电的应用。

m0_57781768的博客 4446

java调用sap创建订单_SAP建立自己的Java发行版

java调用sap创建订单 SAP已经发布了开源Java的“友好分支”,称为SapMachine。 该项目于2017年12月开始,是SAP维护的OpenJDK的下游版本。 SAP客户和合作伙伴可以使用它来运行他们的应用程序。 OpenJDK是Java的开源版本。 [ 15个Java框架使开发人员受益匪浅 。 • 哪些工具支持Java的新模块化功能 。 | 通过InfoWorld的App ...

cxu0262的博客 240

ScanNet数据集详解

ScanNet 是一个 RGB-D 视频数据集,在超过 1500 次扫描中包含了 250 万个视图,并标注了 3D 相机位姿、表面重建和实例级的语义分割。为了收集这些数据,设计了一个易于使用且具有扩展性的 RGB-D 捕获系统,包括自动化的表面重建和众包的语义标注。如果您想下载 ScanNet 数据,请使用您的机构邮箱地址填写一份 ScanNet 使用条款协议,并发送至 scannet@googlegroups.com。压缩包是将3D的标注信息“拍扁”成2D图片的结果,对应原始视频的每一帧。

frostmelody 全网同名,大家多多关注呀~ 持续分享优质内容! 3919

SAP接口编程 之JCo3.0系列(06) - Jco服务器端编程

Jco 服务器端编程的作用是为了实现从 SAP 系统中调用外部 Java 程序提供的服务,将 Java 作为服务器。Jco Client 端编程是 Java 调用 ABAP,正好相反。但 Jco 服务器端编程是**在 SAP 设计的框架下实现 ABAP 调用 Java**,并不是并不是完全自由式的 ABAP 调用 Java。

王敏的专栏 3553

StarCCM+ 导入STL几何模型进行仿真

通过 Import Surface Mesh 的方法导入 STL 文件进行仿真

薛定谔的alpha狗 6129

华为OD新系统机试真题 2026.5.10 - 美观的灯笼

华为OD新系统机试真题【美观的灯笼】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【美观的灯笼】

qq_45776114的博客 640
上一篇: Spring Cloud 项目各种超时时间设置详解
下一篇: Jenkins | 一键打包部署Vue前端应用
Hugh Pro
博客等级 码龄16年 6粉丝 22原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值