Chinaunix
标题:
通过JCO获取SAP R/3物料主数据信息
[打印本页]
作者:
m04375036
时间:
2008-07-30 16:08
标题:
通过JCO获取SAP R/3物料主数据信息
通过JCO获取SAP R/3物料主数据信息
物料主数据系统的开发,大概完毕.但是在开发过程中,在WEB方式下获取SAP R/3系统中的数据还存在问题,所以改用Java应用程序开了其子系统来获取,这样将获取的数据暂存于数据库中,然后进行凭证数据提取,合并,导入,最终形成物料主数据系统中可用的凭证,这样减少了模板差导问题.
1、查询界面,输入条件如:工厂,创建时间所得到的数据;形成凭证A002080716002;
2、提取数据,对凭证A002080716002进行数据提取;在[原数据]处选择需要的数据并保存,如果要更改已选择的数据,只要在[新数据]处取消,点更改;
3、合并凭证,如果将多次提取的数据合成一张凭证,可以通过已做好的程序来实现。当然可以单独将一张凭证合为一张;从[取出凭证]栏选择凭证到[接收凭证],点合并凭证.
4、导入凭证,刚刚在子系统中将凭证A002080716002合并后形成了母系统中的凭证A002080716001,导入凭证后将在母系统;
5、通过IE浏览器,输入网址可以
看到刚导入的凭证;只待一次审批即可。
通过子系统来处理数据,最终工程部不必在SAP R/3系统中导出数据,然后又导入物料主数据系统来对数据进行处理,这一过程序存在模板问题.
程序处理:
1、首先在SAP R/3系统中创建一个RFC函数类,用来做外部接口通过传入参数,获取物料主数据。(Z_DYG_MATERIAL_GETITEM2)
2、java程序代码处理,通过调用上面写的接口,获取数据,最终将数据存入数据库。
public List getInfo(String werks,String matnr,String mtart,String dispo,String ekgrp,String erdal,String erdah,String oper){
List list=null;
String group=System_config.group;
String user=System_config.user;
String pwd=System_config.pwd;
String language=System_config.language;
String ipaddress=System_config.ipaddress;
String numbee=System_config.numbe;
// Object conn=(Object)"
[email=com.sap.mw.jco.JCO$Client@12ac982]
com.sap.mw.jco.JCO$Client@12ac982
[/email]
";
System.out.println("集团:"+group);
System.out.println("账户:"+user);
System.out.println("密码:********");
System.out.println("语言:"+language);
System.out.println("正在登陆SAP系统...");
System.out.println("工厂:"+werks);
System.out.println("MRP控制者:"+dispo);
System.out.println("创建日期:从"+erdal+" 到 "+erdah);
try{
mConnection = JCO.createClient(group,user,pwd,language,ipaddress,numbee);
// System.out.println("连接:"+mConnection);
mConnection.connect();
mRepository = new JCO.Repository("string",mConnection);
}catch(Exception ex){
ex.printStackTrace();
}
JCO.Function function = null;
JCO.Table codes = null;
try{
function = this.createFunction("Z_DYG_MATERIAL_GETITEM2");
if(function == null){
System.out.println(
"BAPI_MATERIAL_GETLIST" + " not found in SAP.");
System.exit(1);
}
codes = function.getTableParameterList().getTable("VERFY");
JCO.ParameterList input=function.getImportParameterList();
input.setValue(werks, "WERKS");
input.setValue(matnr, "MATNR");
input.setValue(mtart, "MTART");
input.setValue(dispo, "DISPO");
input.setValue(ekgrp, "EKGRP");
input.setValue(erdal, "KUNNL");
input.setValue(erdah, "KUNNH");
mConnection.execute(function);
System.out.println("获取数据总长度:"+codes.getNumRows());
HibernateDao dao=new HibernateDao();
NumbeDocu nd=new NumbeDocu();
// String sql="delete from Ztem where apply='"+oper+"'";
// dao.deleteTem(sql);//删除临时表
// SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHHmmss");
String nname=nd.CreateNumbs();
String docu=oper+nname;
SimpleDateFormat sdff = new SimpleDateFormat("yyyy-MM-dd");
String appday=(String)sdff.format(new Date());
System.out.println("正在将数据写入数据库...:");
for(int i=0;i
本文来自ChinaUnix博客,如果查看原文请点:
http://blog.chinaunix.net/u1/50618/showart_1097072.html
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2