windows 环境设置
1.根据自己的操作系统版本选择对应的sapjco3包,将该jar包引入进项目。
2.配置sapjco3.dll文件:
32位系统
将 sapjco3.dll 加入到c:/windows/system32/目录 或者 将 sapjco3.dll 加入到 JDK/bin 目录下
64位系统
将 sapjco3.dll 加入到c:/windows/SysWOW64/目录 或者 将 sapjco3.dll 加入到 JDK/bin 目录下
Linux 环境设置
jdk环境设置
1.创建目录mkdir /usr/java
2.把下载的rpm文件copy过去cp jdk-8u161-linux-x64.rpm /usr/java/
3.进入目录mkdir cd /usr/java
4.添加可执行权限chmod +x jdk-8u161-linux-x64.rpm
5.执行rpm命令安装
rpm -ivh jdk-8u161-linux-x64.rpm
6.查看是否安装成功java -version
Linux sapjco3 环境设置
1.将sapjco3.jar 文件复制至 $JAVA_HOME/lib/sapjco3.jar
2.将 libsapjco3.so 文件复制至 $JAVA_HOME/jre/lib/amd64/server/libsapjco3.so
3.将项目打成jar包或war包发布即可
附JAVA调用sap工具类:
package com.vtradex.wms.server.utils;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Properties;
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.ext.DestinationDataProvider;
import com.vtradex.thorn.server.exception.BusinessException;
/**
* SAP接口工具类
*
*/
public class SAPHelper {
public static JCoDestination destination = null;
private static final String ABAP_AS_POOLED = "ABAP_AS_WITH_POOL";
public SAPHelper() {
// createDestination();
}
/**
* 创建JCO配置文件(需要的时候,可以采用这种方式)
*/
static {
Properties connectProperties = new Properties();
connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "211.118.201.43");// 正式服务器
// connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "211.118.201.122");// 测试服务器
connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, "01"); // 系统编号
connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "402"); // SAP集团
connectProperties.setProperty(DestinationDataProvider.JCO_USER, "ZRFC"); // SAP用户名
connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "zrfc123"); // 密码
connectProperties.setProperty(DestinationDataProvider.JCO_LANG, "zh"); // 登录语言
connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3"); // 最大连接数
connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, "10"); // 最大连接线程
createDataFile(ABAP_AS_POOLED, "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, "SAP接口配置信息");
fos.close();
System.out.println("创建成功!配置文件:" + cfg.getPath());
} catch (Exception e) {
throw new BusinessException("Unable to create the destination file " + cfg.getName());
}
}
/**
* 创建并返回SAP连接
*/
public static JCoDestination getJCoDestination() {
try {
destination = JCoDestinationManager.getDestination(ABAP_AS_POOLED);
} catch (JCoException e) {
throw new BusinessException(e);
}
if (destination == null) {
throw new BusinessException("创建SAP连接失败!");
}
return destination;
}
/**
* 获取SAP函数实例
*
* @param funcName
* SAP函数名称
* @return 返回SAP函数实例
*/
public static JCoFunction getJCoFunction(String funcName) {
if (destination == null) {
destination = getJCoDestination();
}
JCoFunction function = null;
try {
function = destination.getRepository().getFunction(funcName);
} catch (JCoException e) {
System.out.println("--------------------------------------exception");
e.printStackTrace();
throw new BusinessException("获取SAP接口函数:" + funcName + " 失败!" + e.getMessage());
}
if (function == null) {
throw new BusinessException("获取SAP接口函数:" + funcName + " 失败!");
}
return function;
}
}