所需jar包附件放在前面: Java用JCO连接SAP.zip
1、将librfc32.dll、sapjcorfc.dll、sapjco3.dll文件复制到C:\Windows\System32目录下;
测试是否成功:
a、将sapjco3.jar放在C盘根目录下;
b、打开cmd命令输入java -jar C:/sapjco3.jar或者java -cp C:/sapjco3.jar com.sap.conn.jco.rt.About
c、出现下图中所示即为成功。
2、新建web项目将sapidoc3.jar、sapidocjco.jar、sapjco3.jar导入lib中
3、类SAPConn.java代码如下:
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.ext.DestinationDataProvider;
public class SAPConn {
private static final String ABAP_AS_POOLED = "ABAP_AS_WITH_POOL";
static{
Properties connectProperties = new Properties();
//服务器
connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "10.10.1.66");
//系统编号
connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, "02");
//SAP集团
connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "150");
//SAP用户名
connectProperties.setProperty(DestinationDataProvider.JCO_USER, "00000001");
//密码
connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "123456");
//登录语言
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, "for tests only !");
fos.close();
}catch (Exception e){
System.out.println("Create Data file fault, error msg: " + e.toString());
throw new RuntimeException("Unable to create the destination file " + cfg.getName(), e);
}
}
/**
* 获取SAP连接
* @return SAP连接对象
*/
public static JCoDestination connect(){
JCoDestination destination =null;
try {
destination = JCoDestinationManager.getDestination(ABAP_AS_POOLED);
} catch (JCoException e) {
System.out.println("Connect SAP fault, error msg: " + e.toString());
}
return destination;
}
}
类Function.java代码如下:
import com.sap.conn.jco.JCoDestination;
import com.sap.conn.jco.JCoException;
import com.sap.conn.jco.JCoFunction;
import com.sap.conn.jco.JCoParameterList;
public class Function {
public static String getMonthLastday(){
String data="";
JCoFunction function = null;
//连接sap,其实就类似于连接数据库
JCoDestination destination = SAPConn.connect();
try {
//调用函数 (该函数必须具有远程调用权限)
function = destination.getRepository().getFunction("ZBDC_TEST");
//获取参数
//JCoParameterList input = function.getImportParameterList();
//给参数赋值
//input.setValue( "I_DATE","20160725",);
//连接SAP执行function
function.execute(destination);
//获取执行结果
JCoParameterList output = function.getExportParameterList();
//从结果集中取出结果
data = output.getString("SUBRC");
} catch (JCoException e) {
e.printStackTrace();
}
return data;
}
public static void main(String[] args) {
System.out.println(getMonthLastday());
}
}
最初分享时间: 2016.08.04