SAP JCO使用备忘录

  公司的很多系统都需要连接SAP进行数据交互(我们用的是RFC方式),之前我们采用的是jco2的版本,前阵子因为服务器升级,导致系统旧的sap模块无法使用了,必须升级至jco3才行,后来下载了jco3才知道,两者相差太多了,许多接口名字都变了,相关模块必须重写!

  好不容易弄完了,这里把两者如何做连接简单地记录一下:
[b]
[size=large]JCO2:[/size][/b]

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



[b][size=large]JCO3:[/size][/b]

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值