java 通过RFC 与 SAP 做交互
公司要开始对接SAP系统,所以对此我们要通过RFC接口往sap抛数据 以及 可能要通过 rfc 拉sap数据。所以代码记录下,以备不时之需。
首先先把环境配置下(其实也就几个文件而已))(这东西百度就能找到)
sapjco3.jar 导入jar包
sapjco3.dll 放 c:/windows/system32
//以上单机环境测试无误,但是在服务器上调用就报错。
sapjco3.dll 在放入 libs文件夹,解决。
片段一:sap 链接配置
package com.test;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Properties;
import com.test.LoggerUntil;
import com.sap.conn.jco.JCoDestination;
import com.sap.conn.jco.JCoDestinationManager;
import com.sap.conn.jco.JCoException;
import com.sap.conn.jco.ext.DestinationDataProvider;
//與sap連接的配置
//呼叫 dev環境的 rfc連接
public class SapDEVConn {
private static final String ABAP_AS_POOLED = "DEV_ECD";//连接池名
static{
Properties connectProperties = new Properties();
connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "xxx.xxx.xxx.xx"); //服务器
connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, "xx"); //系统编号
connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "xxx"); //客户端编号
connectProperties.setProperty(DestinationDataProvider.JCO_USER, SapConfig.USER); //账户
connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, SapConfig.PASSWD); //密码
connectProperties.setProperty(DestinationDataProvider.JCO_LANG, "ZF"); //登录语言
connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "30"); //最大连接数
connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, "100"); //最大连接线程
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();
}