SAP JCO使用备忘录
公司的很多系统都需要连接SAP进行数据交互(我们用的是RFC方式),之前我们采用的是jco2的版本,前阵子因为服务器升级,导致系统旧的sap模块无法使用了,必须升级至jco3才行,后来下载了jco3才知道,两者相差太多了,许多接口名字都变了,相关模块必须重写!
好不容易弄完了,这里把两者如何做连接简单地记录一下:
JCO2:
Properties logonProperties = new Properties();logonProperties.put("jco.client.ashost", "10.10.11.22");logonProperties.put("jco.client.client", "100");logonProperties.put("jco.client.sysnr", "01");logonProperties.put("jco.client.user", "username");logonProperties.put("jco.client.passwd", "password");JCO.Client conn = JCO.createClient(logonProperties);conn.connect();JCO.Repository rep = new JCO.Repository("Repository", conn);IFunctionTemplate ft = rep.getFunctionTemplate("Z_SD_XXXX");JCO.Function function = ft.getFunction();JCO.ParameterList list = function.getImportParameterList();//设置输入参数list.setValue("1000", "PLANT");...conn.execute(function);JCO.Table rs = function.getTableParameterList().getTable("TABLE_HEAD");conn.disconnect();//获取输出List<HeadBean> sh = new ArrayList<HeadBean>();for (int i = 0; i < rs.getNumRows(); i++) {rs.setRow(i);HeadBean s = new HeadBean();s.setCompanyCode(rs.getString("COMPANY_CODE"));s.setSalesOrg(rs.getString("SALES_ORG"));...sh.add(s);}Properties logonProperties = new Properties();logonProperties.put("jco.client.ashost", "10.10.11.22");logonProperties.put("jco.client.client", "100");logonProperties.put("jco.client.sysnr", "01");logonProperties.put("jco.client.user", "username");logonProperties.put("jco.client.passwd", "password");File file = new File("sapconnection.jcoDestination");FileOutputStream stream = new FileOutputStream(file, false);logonProperties.store(stream, "SAP connection properties");stream.close();JCoDestination destination = JCoDestinationManager.getDestination("sapconnection");JCoRepository repository = destination.getRepository();JCoFunction function = repository.getFunction("Z_SD_XXXX");JCoParameterList list = function.getImportParameterList();//设置输入参数list.setValue("PLANT", "1000");...function.execute(destination);JCoTable rs = function.getTableParameterList().getTable("TABLE_HEAD");//获取输出List<HeadBean> sh = new ArrayList<HeadBean>();for (int i = 0; i < rs.getNumRows(); i++) {rs.setRow(i);HeadBean s = new HeadBean();s.setCompanyCode(rs.getString("COMPANY_CODE"));s.setSalesOrg(rs.getString("SALES_ORG"));...sh.add(s);}