通过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)"";
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 codes.setRow(i);
int numbe=i+1;
Ztem tem=new Ztem();
ZtemId zid=new ZtemId();
zid.setNumbe(numbe);
zid.setDocument(docu);
tem.setMatnr(codes.getString("MATNR")); //物料号
tem.setMaktx(codes.getString("MAKTX")); //物料描述1
tem.setWrkst(codes.getString("WRKST")); //物料描述2
tem.setZeinr(codes.getString("ZEINR")); //图号
tem.setMeins(codes.getString("MEINS")); //基本单位
tem.setMatkl(codes.getString("MATKL")); //物料组
tem.setMtart(codes.getString("MTART")); //物料属性
tem.setExtwg(codes.getString("EXTWG")); //11-3 海关HS码
tem.setLabor(codes.getString("LABOR")); //材料形态
tem.setVkorg(codes.getString("VKORG")); //销售机构
tem.setVtweg(codes.getString("VTWEG")); //分销渠道
tem.setSpart(codes.getString("SPART")); //生产线
tem.setDwerk(codes.getString("DWERK")); //交货工厂
tem.setTaxm1(codes.getString("TAXM1")); //税分类
tem.setVersg(codes.getString("VERSG")); //物料统计组
tem.setKondm(codes.getString("KONDM")); //物料定价组
tem.setKtgrm(codes.getString("KTGRM")); //科目设置组
tem.setMtposmara(codes.getString("MTPOS_MARA")); //普通项目类
tem.setMtpos(codes.getString("MTPOS")); //项目类别组
tem.setMtvfp(codes.getString("MTVFP")); //可用性检查
tem.setTragr(codes.getString("TRAGR")); //运输组
tem.setLadgr(codes.getString("LADGR")); //装载组
tem.setEkgrp(codes.getString("EKGRP")); //采购组
tem.setDismm(codes.getString("DISMM")); //MRP类型
tem.setDispo(codes.getString("DISPO")); //MRP控制者
tem.setDispo2(tem.getDispo());
tem.setDispoy(tem.getDispo());
tem.setFevor(codes.getString("FEVOR")); //生产调度员
tem.setDisls(codes.getString("DISLS")); //批量
tem.setDisls2(tem.getDisls());
tem.setDislsy(tem.getDisls());
tem.setBeskz(codes.getString("BESKZ")); //获取类型
tem.setBeskz2(tem.getBeskz());
tem.setBeskzy(tem.getBeskz());
tem.setSobsl(codes.getString("SOBSL")); //特殊采购
tem.setSobsl2(tem.getSobsl());
tem.setSobsly(tem.getSobsl());
tem.setFhori(codes.getString("FHORI")); //计划边际码
tem.setFhori2(tem.getFhori());
tem.setFhoriy(tem.getFhori());
tem.setSbdkz(codes.getString("SBDKZ")); //获立集中
tem.setSbdkz2(tem.getSbdkz());
tem.setSbdkzy(tem.getSbdkz());
tem.setLgpro(codes.getString("LGPRO")); //发贷仓储地点
tem.setLgfsb(codes.getString("LGFSB")); //采购仓储点
tem.setQmpur(codes.getString("QMPUR")); //品质控制
tem.setSsqss(codes.getString("SSQSS")); //Qm控制者
tem.setArt01(codes.getString("ART01")); //检验类型01
tem.setArt03(codes.getString("ART03")); //检验类型03
tem.setArt10(codes.getString("ART10")); //检验类型10
tem.setVprsv(codes.getString("VPRSV")); //价格控制
tem.setNcost(codes.getString("NCOST")); //有无成本
tem.setVbamg(String.valueOf(codes.getFloat("VBAMG"))); //基准数量
tem.setPlifz(codes.getString("PLIFZ")); //计划内交货
tem.setWebaz(codes.getString("WEBAZ")); //收货处理时
tem.setEisbe(String.valueOf(codes.getFloat("EISBE"))); //安全库存
tem.setEislo(String.valueOf(codes.getFloat("BSTMI")));//是不是最小批量?
tem.setPeinh(codes.getString("PEINH")); //价格单位
tem.setPeinh("1");
tem.setVerpr(String.valueOf(codes.getFloat("VERPR"))); //移动平均价
tem.setId(zid);
tem.setApply(oper);
tem.setAppday(appday);
tem.setDocstatus("A");
tem.setStatus1("N");
tem.setStatus2("N");
tem.setStatus3("N");
tem.setStatus4("N");
tem.setStatus5("N");
tem.setStatus6("N");
tem.setStatus7("N");
tem.setView2("n");
tem.setView3("n");
dao.saveTemData(tem);
}
System.out.println("写入完毕");
System_config.docu=docu;
String hql="from Ztem where id.document='"+docu+"'";
list=dao.getInfo(hql);
}catch(Exception ex){
ex.printStackTrace();
}
return list;
}
阅读(4029) | 评论(0) | 转发(0) |