参考博客:https://blog.csdn.net/qq_36026747/article/details/81287462

                  https://www.cnblogs.com/jiangzhengjun/p/4291479.html     

安装jco

链接:https://pan.baidu.com/s/1DclmG14bjAteTvUC7X-e9A
提取码:ppg2

解压之后,进入安装目录:执行cmd执行 java -jar sapjco3.jar ,显示以下图片,则安装成功。

创建RFC函数:

编写Java代码:

配置好Jvm后,将刚才jco3目录中的 sapjco3.jar 和 sapjco3.dll 放入lib 包中。

package sapConnection2;

import java.io.File;
import java.io.FileOutputStream;
import java.util.Properties; import com.sap.conn.jco.ext.DestinationDataProvider; public class ConnectPooled {// 连接池 static String ABAP_AS_POOLED = "ConnectionPool"; //配置文件名
static { Properties connectProperties = new Properties();
connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "xxx.xxx.x.xxx"); // IP
connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, "xx"); // 系统编号
connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "xxx"); // 客户端编号
connectProperties.setProperty(DestinationDataProvider.JCO_USER, "xxxx"); // 用户名
connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "xxxxxx"); // 密码
connectProperties.setProperty(DestinationDataProvider.JCO_LANG, "ZH"); // 语言// *********连接池方式与直接不同的是设置了下面两个连接属性*******
// JCO_PEAK_LIMIT - 同时可创建的最大活动连接数,0表示无限制,默认为JCO_POOL_CAPACITY的值
// 如果小于JCO_POOL_CAPACITY的值,则自动设置为该值,在没有设置JCO_POOL_CAPACITY的情况下为0
connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, "10");
// JCO_POOL_CAPACITY - 空闲连接数,如果为0,则没有连接池效果,默认为1
connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "2");
createDataFile(ABAP_AS_POOLED, "jcoDestination", connectProperties);
} /* 创建连接池的配置文件 */
static void createDataFile(String name, String suffix, Properties properties) {
File cfg = new File(name + "." + suffix);
if (!cfg.exists()) {
try {
FileOutputStream fos = new FileOutputStream(cfg, false);
properties.store(fos, "for tests only !");
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}

测试代码:

package sapConnection2;

import com.sap.conn.jco.JCoDestination;
import com.sap.conn.jco.JCoDestinationManager;
import com.sap.conn.jco.JCoException;
import com.sap.conn.jco.JCoFunction;
import com.sap.conn.jco.JCoParameterList;
import com.sap.conn.jco.JCoRepository; /*
* JCoFunction包含importing参数,exporting参数,changing参数,table参数。
* 分别使用getImportParameterList方法,getExportParameterList方法, getChangingParameterList方法和getTableParameterList获得。
* 这些方法的返回值都是JCoParameter类型
*/
public class ConnectPooledTest { public static void main(String[] args) throws JCoException {
String bapiFunctionName = "ZPOP_NUMBER";
JCoDestination destination = JCoDestinationManager.getDestination(ConnectPooled.ABAP_AS_POOLED);
JCoRepository repository = destination.getRepository(); //JCoFunction是一个接口,代表SAP系统的函数库
JCoFunction function = repository.getFunction(bapiFunctionName); // 从这个函数模板获得该SAP函数的对象
JCoParameterList input = function.getImportParameterList(); // 获得函数的import参数列表
input.setValue("INPUT_NUMB1", 2);
input.setValue("INPUT_NUMB2", 2);
function.execute(destination);
JCoParameterList output = function.getExportParameterList(); // 获得Export变量列表。
int value = output.getInt("OUTPUT_NUMB");
System.out.println(value);
}
}

报错:

Exception in thread "main" com.sap.conn.jco.JCoException: (102) JCO_ERROR_COMMUNICATION: Connect to SAP gateway failed
Connection parameters: TYPE=A DEST=ConnectionPool ASHOST=192.168.1.112 SYSNR=00 PCS=1

可能缺少路由器字符串,在ConnectPooled类中添加:

connectProperties.setProperty(DestinationDataProvider.JCO_SAPROUTER, "xxxxxxxxx");

Java连接Sap系统调并调用RFC函数的更多相关文章

  1. JAVA连接SAP

    1.首先需要在SAP事务码SE37中新建一个可以被远程调用的RFC 事务码:SE37 新建一个函数组:输入事务码SE37回车后,来到函数构建器屏幕,到上面一排菜单栏:转到 -> 函数组 -> ...

  2. (一)通过JAVA连接SAP (sapjco3.jar在Windows和MacOS上的配置)

    (一)通过JAVA连接SAP调用接口 (sapjco3.jar在Windows和MacOS上的配置) 一.sapjoc3.jar获取 由于sap官网提供的链接需要合作公司提供账号密码,如果商用请索要正 ...

  3. .NET连接SAP系统专题:SAP中新建可远程调用的RFC(二)

    何谓RFC,就是一个Function,可以被非SAP系统调用,比如VB,C#,Java等.如果我们在RFC中INCLUDE了相关的业务逻辑,那么我们就可以完全操控SAP中的业务数据了.就像在TTE里, ...

  4. .NET连接SAP系统专题:C#调用RFC代码(三)

    本文就说明在C#中如何编写代码来调用SAP中的RFC函数获取数据. 首先需要引用两个NCO3.0的DLL DLL下载地址:http://files.cnblogs.com/mengxin523/SAP ...

  5. .NET连接SAP系统专题:.NET调用RFC几种方式(一)

    本来今天是要写一篇关于NCO3.0的东西,就是关乎.NET调用SAP的RFC的,支持VS2010和.NET 4.0等.现在网上到处都是充斥着NCO1.X和NCO2.0,需要用VS2003来使用,都是一 ...

  6. C#通过RFC连接sap系统

    先理解一下 RFC(Romote Function Call)远程函数调用 调用前提: 1.要想通过C# 通过RFC调用SAP端,SAP端要存在RFC远程调用的函数才行(例如SAP端通过SE37创建) ...

  7. Oracle的学习三:java连接Oracle、事务、内置函数、日期函数、转换函数、系统函数

    1.java程序操作Oracle java连接Oracle JDBC_ODBC桥连接 1.加载驱动: Class.forName("sun.jdbc.odbc.JdbcodbcDriver& ...

  8. .NET连接SAP系统专题:BAPI_TRANSACTION_COMMIT的使用方法(十)

    from:http://scnblogs.techweb.com.cn/mengxin/archives/5.html 为什么.net调用SAP的BAPI接口需要调用BAPI_TRANSACTION_ ...

  9. C#与SAP系统的接口调用

    Sap作为ERP的龙头企业,在企业信息化建设中是有目共睹的,特别是财务.人力.物流等发挥着极大作用,占领着半壁江山,所以与企业系统用SAP软件的接口对接很是普遍,简单介绍一下与SAP接口的一点点儿心得 ...

随机推荐

  1. Jmeter最佳录制工具BlazeMeter

    简介 在做接口测试时,开发会提供接口文档作为测试脚本编写的依据,但接口文档往往有一些局限性: 接口文档本身可能有编写错误 接口文档可以针对单个字段的取值和含义做描述,但多个字段的组合作用很难通过文字做 ...

  2. Java语言基础(15)

    1 综合案例 Demo1 设计一个父类Shape(图形类),抽象类常量:public static final double PI = 3.14;抽象方法:void show():输出每一个属性值vo ...

  3. js实现购物车数量的增加与减少,js实现购物车数量的自增与自减

    js实现购物车数量的增加与减少,js实现购物车数量的自增与自减 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...

  4. Android异常与性能优化相关面试问题-内存管理面试问题详解

    内存管理机制概述: 分配机制:操作系统会为每一个进程分配一个合理的内存大小,从而保证每一个进程能够正常的运行,不至于内存不够使用,或者某个进程占用过多的内存. 回收机制:在系统内存不足的时候,系统有一 ...

  5. 网络协议相关面试问题-TCP与IP网络模型

    互联网应用的实现主要是通过分层来实现的,每一层有自己相应的功能,上层依赖于下层,具体层次如下图: 下面具体一层层来了解: 物理层 / 实体层: 也就是将电脑通过物理的手段连接起来,其实也就是01电子信 ...

  6. css3属性transform-origin属性讲解

    transform是CSS3里的变换属性,常用的有translate(平移).rotate(旋转).skew(倾斜).scale(缩放)方法.而transform-origin并不是transform ...

  7. MQTT 入门介绍——菜鸟教程

    一.简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级& ...

  8. Java-DealString工具类

    import java.text.NumberFormat; import java.util.Date; import java.util.Locale; import java.util.Stri ...

  9. hdu 6039 Gear Up

    题 OvO http://acm.hdu.edu.cn/showproblem.php?pid=6039 (2017 Multi-University Training Contest 1 1007) ...

  10. vue css采用别名引入背景图

    在vue css中采用别名引入 背景图片,可以在前面加一个波浪号 css 属性中: background: url("~@/assets/xxx.jpg") Webpack 会将以 ...