SAP Java Connector(JCo) SERVER是由java程序实现的一个远程RFC SERVER。要使用它,首先得在SAP 系统里为其注册(SM59)。JCO SERVER能够实现与SAP 系统的双向通信。
1、JCo的安装
从 http://www.cnblogs.com/Files/byfhd/jco.rar 下载JCo,解压后将librfc32.dll和sapjcorfc.dll拷贝到WINNT"SYSTEM32下,将sapjco.jar加入项目的classpath中。
2、获取连接
// 定义连接
JCO.Client mConnection;
// 建立连接对象
mConnection = JCO.createClient("211", // SAP client
"*", // userid
"*", // password
"EN", // language (null for the default language)
"*", // application server host name
"00"); // system number
try {
// 打开连接,调用功能模块,关闭连接
mConnection.connect();
System.out.println(mConnection.getAttributes());
mConnection.disconnect();
} catch (Exception e) {
System.err.println("打开或关闭连接失败");
}
2、操作
JCO.Repository jcoRep = new JCO.Repository("可任意字字符",mConnection);
try{
IFunctionTemplate jcoFuncTemp = jcoRep.getFunctionTemplate("SAP中RFC名称");
JCO.Function jcoFunc = jcoFuncTemp.getFunction();
JCO.ParameterList jcoPara = jcoFunc.getImportParameterList();
jcoPara.setValue(" ", "I_NAME"); //SAP RFC中的输入参数
mConnection.execute(jcoFunc);
JCO.Table table = jcoFunc.getTableParameterList().getTable("T_TABLE"); //SAP RFC中的TABLE
String eReturn = jcoFunc.getExportParameterList().getValue("E_RETURN").toString();//SAP RFC中的输出参数
JCO.Table etchanl = jcoFunc.getExportParameterList().getTable("ET_CHANL"); //SAP RFC输出参数
for(int i = 0; i< table.getNumRows();i++){
table.setRow(i);
for(int j=0;j<table.getNumColumns();j++){
String pr = table.getString(j);
System.out.print(pr);
}
System.out.println();
}
System.out.println(etchanl.getNumRows());
}catch(Exception e){
e.printStackTrace();
}
4、释放连接
JCO.releaseClient(mConnection);