JAVA使用jco的方式调用sap系统环境配置

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;
	}
}

猜你喜欢

转载自blog.csdn.net/w_qqqqq/article/details/80759591
今日推荐