Chinaunix首页 | 论坛 | 博客
  • 博客访问: 720985
  • 博文数量: 158
  • 博客积分: 6010
  • 博客等级: 准将
  • 技术积分: 1643
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-11 14:37
个人简介

人法地,地法天,天法道,道法自然

文章分类

全部博文(158)

文章存档

2022年(1)

2020年(3)

2016年(1)

2014年(7)

2013年(4)

2010年(5)

2009年(86)

2008年(25)

2007年(26)

我的朋友

分类: Java

2008-07-30 16:08:04

通过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;
 }
 
阅读(4081) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~