ERP系统与PDM系统集成

您目前在:PLM主页 > 行业资讯 >

ERP系统与PDM系统开发

    ERP系统与PDM系统双向集成由两部分构成。分别为PDM系统数据往ERP系统的传递和ERP系统数据共享给PDM系统查询。其中,在PDM系统查询ERP系统的查询相对简单,通过DNLINK接口进行实时访问即可,本论文不做详细阐述。
 

    本章节重点描述PDM系统数据往ERP系统的传递过程,如图5-1 PDM系统数据传递流程图所示。

图5-1.jpg  

  PDM系统数据往ERP系统的传递过程分为两部分,为PDM中信息的转化和ERP系统中集成数据处理并利用API导入至ERP系统。
    1.PDM系统集成开发逻辑
    (1)在PDM系统中,对物料信息需要补充ERP中相关的属相字段,如物料大类、小类等,传递至集成临时接口表。
    (2)在PDM系统中,对物料成本信息,传递至集成临时接口表。
    (3)在PDM系统中,对技术工艺路线需要补充相关信息,如自制件,采购件等,完善ERP制造工艺路线的信息,传递至接口表。
    (4)在PDM系统中,对设计BOM需要进行转换,转成工艺BOM,然后再转换成设计BOM,传递至接口表。

PDM系统集成,流程如图5-2 PDM系统数据流程图所示。

图5-2.jpg

 
2.ERP系统集成开发逻辑
    ERP系统与PDM系统双向集成中,ERP系统需要从临时接口表获取待集成的数据,经过数据的校验后装载如ERP系统的接口表,然后分别调用API接口,导入至ERP系统,其实现过程如图5-3ERP系统集成流程图所示:

图5-3.jpg

1.1 PDM系统中进行制造BOM和工艺路线转化的开发
    PDM系统中进行制造BOM和工艺路线转化开发的工具为开目DPL集成开发环境,一个完整的DPL代码通常包含了以下部分:①查询方式②临时表是否先清空③表名④产生临时表名⑤连接表名及表间关联条件⑥筛选条件⑦获取字段⑧排序字段⑨执行查询⑩获取字段等等。

1.制造bom生成实现的部分开发如下:
//找出ERP属性
  连接表名及表间关联条件---LEFT JOIN pdm_docc_relateobj ON #b11.对应零件类ID=pdm_docc_relateobj.cdocc_id and pdm_docc_relateobj.crelname=’零部件ERP属性’刀如果单位为毫米的,改换为以米为单位
<计算开始>
#if(L12栏填[mm])
#endif
<计算结束>
<序号填写规则开始>
序号填写规则---1001
<序号填写规则结束>
刀外购件、标准件未编码时,物料描述赋值
 
2.工艺路线生成实现的部分开发
工艺路线:
<数据库平台查询开始>
树表名---pdm_snapshot
产生临时表名---#pdm_snapshot
树键字段---CNODE_ID
树键及父键字段类型_字符型
执行查询
查询方式---执行SQL语句
查询方式---执行DPL
DPL----{{
    sDbType=upper(kmdp_GetCurrentDBType());
    sRealTableName=kmdp_TranslateTempTableName("#pdm_snapshotll",sDbType);
}}
连接表名及表间关联条件---LEFT JOIN pdm_snapshot ON
#b 1. CNODEJD=pdm_ snapshot.CNODE_ID and
#b 1. CPARENTNODEJD=pdm_ snapshot. CPARENTNODEJD
---#bl.f_up_path,#bl.f_cur_path,#b1.CPARENTNODE_ ID,#b1.CPARENTNODE_ID
as所属部件的代号,#b1. CNODE_ID,#b 1. CNODE_ID as代号,#bl.f level as层次
排序字段---排序字段
执行查询
 
1.2 PDM查询ERP数据开发
    PDM系统实时查询ERP系统的数据主要有客户信息、合同信息等,下面以合同信息为例,描述其查询的主要实现。
    信息的查询主要有合同号、客户名称、销售员、销售处、主制公司、计划发运日期、产品号、产品说明等等信息。其主要实现代码如下:
select  nvl (ool.cust_po_number,ooh.cust_po_number)     合同编号,
        substr (hp. party_name, 1, 50)                  客户名称,
        ooh. demand_class_code                      需求分类,
        ----省略部分
  from   oe_order_headers_all   ooh,   oe_order_lines_all   ool,
        fnd_flex_values v1      fv,   fnd_flex_value_sets   fs,
        hz_cust_accounts       hca,   hz_parties            hp,
        jtf_rs_salesreps       jrs,   fnd_lookup_values    flv,
        mtl_system_items_b     msi
  where   ooh. header_id=ool.header_id
    and   hp. party_id=hca. party_id
    and   hca.cust_account_id=ooh.sold_to_org_id
    and   fs.flex_value_set_ id(+)=fv.FLEX_VALUE_SET_ID
    and   nvl (fs. flex_value_set_ name,' NF-主制公司’)=’NF-主制公司’
    and   ooh.attribute4=fv.flex value(+)
    and   jrs.salesrep_id(+)=ooh.salesrep_id
    and   jrs. org_id(+)=54
    and   ool.org_id=54
    and   NVL (OOH. CANCELLED_FLAG,’N')=,N'
    and   NVL (00L. CANCELLED_FLAG,’N')=,N'
    and   ooh.flow_status_code=flv.lookup_code(+)
    and   flv.lookup_type='FLOW_STATUS'
    and   flv. language=' ZHS'
and   msi.inventory_item_id=ool.inventory_item_id
and   msi.organization_id=54

1.3 ERP系统物料导入的开发
    在ERP系统中实现物料的导入功能需要进行如下顺序的处理:①将中间文件的数据装载到临时表中;②对临时表中的数据与系统中数据进行比较,并依据相应的条件将需要导入的数据插入临时表;③调用系统API,实现接口数据的导入功能;④在ERP系统中实现上述功能的请求定义开发。
 
1.导入物料的中间文件数据导入物料导入临时表的开发
    模板文件的数据,我们上传至到服务器的目录“APPL TOP/inv/11.5.0/bin"下,采用ftp的方式上传。上传完成后,供系统调用。
    (1)SQL*LOADER程序开发
    此部分数据,在ERP系统中采用SQL*LOADER程序,将csv中的数据装载到定义的物料导入临时表中,SQL*LOADER程序[}23}bom_ item_ cost的实现代码如下:
    options (skip=1)
      LOAD DATA
      INFILE '& 1’
    REPLACE INTO TABLE cux_bom_item_import_temp
    FIELDS TERMINATED BY”,”
    optionally enclosed by ""
      TRAILING NULLCOLS
    (
      id,organization_code,top_item,bom_level,pre_item,item_number,item_desc,item-
    remark,template_name,bom_sequence,quantity,po_price,item_weight,item_cost,c
      ost_type,line_status,primary_uom,planner,fixed_lot_multiplier,full_lead_time,fixe
      d_lead_time,supply_subinventory_item,supplyes_type_item,supply_subinventory_b
      om,supplyes_type_om,buyer,item_yield,item_category-l,item_category_2,item_ca
      tegory_3
)
 
    (2)中间文件数据装载到临时表的存储过程开发
将csv中的数据装载到定义的临时表中,需要用存储过程调用SQLSQL*LOADER程序的执行,存储过程的开发,其主要实现伪逻辑代码如下:
procedure submit_bom_item_cost_do-1(参数声明)as
  变量声明;
begin
  v_req_id:=fnd_request.submit_request('INV','CUX_BOM_ITEMes_COSTes_DO_1’,”,
                                      to_ char(sysdate,'YYYY/NI1VI/DD’),false,
                  v-path,                chr(0)
                                      );
  comm it;---提交
if v_req_id >0 then---成功提交,输出日志
    v_req_completed:=Fnd_ Concurrent.Wait_For_Request(v_req_id,4,0,v_phase,v_sta
                                    tus,v_phase,v_dstatus,v_message);
    if   v_req-completed=true then
        if     v_dstatus='NORMAL' then
              运行完成,输出日志
              else
                没有正常完成,输出日志
            end if;
        else
          请求没有成功运行完成,输出日志
        end if;
  else
      提交失败,物料没有导入成功,输出日志
  end if;
exception
  when others then
      异常处理
        rollback;
        return;
end;
 
2.临时表数据进入系统接口的开发
    临时表中的数据,哪些需要进入系统接口表,进入接口表后物料属性的赋值,物料的分配等处理操作由存储过程import item完成,import-item的程序伪代码实现如下:
procedure import_item(参数申明)as
begin
  begin
    获取组织名称;
    获取主组织ID和名称;
  exception
      when others then
      异常处理;
  return;
end;
  先从接口表中删除特定组织下的Item的接口表中的信息;
  delete from mtl_system_items_interface msii where...……;
  commit;
  验证系统中是否存在该物料
  begin
    if主组织中己存在then
    if子组织中也存在then则不做任何处理
  else主组织中存在,子组织中不存在,复制主组织中的属性。
  insert  into mtl_system_items_interface(...……)
  select ...……from mtl_system_items_b
  where  organization_id=v_master_organization_id
  and   inventory_item_id=v_inventory_item_id;
      commit;
    end if;
else--主组织中不存在
--判断接口中是否存在.如果存在,则不再导入,否则导入接口
if_v count>0 then
  --接口中己经存在.什么都不做.
else
  --检查该物料对应的模板是否存在,如果提供了模板,但是有错误,
  begin
…………-- 警告:物料所对应的模板不存在.物料属性未设置;
  End;
  ---检查子组织中是否存在。
  If v_count>0 then---主组织中不存在,子组织中存在。
  else---检验单位是否存在,如果不存在,则设置为空.
    exception   when others then v_primary_uom_code:=,’;
else v-primary_uom_code:=,’;
  end if;
    ---这里要插入主组织,同时插入子组织.使用同一个模板
insert into mtl_system_items_interface(...……)
values(...……);
    ---分配到子组织
  insert  into mtl_system_items_interface(...……)
  values(...……);
  end if;
end if;
end if;
exception
return;
end;
 
3.调用API实现接口数据导入
    API程序INCOIN实现了物料的导入功能,由Oracle EBS进行了封装,在下面的程序伪逻辑代码中,描述了在存储过程中如何调用API程序。
procedure submit item_ import(参数申明)as
begin
  v_req_id:=fnd_request. submit_request('INV', 'INCOIN',
                                    ,’,o_char(sysdate,'YYYY/NI1VI/DD'),
                                      false, v_organization_id,
                    v_all_ or                ganization, v_validate_item,
                    v_treat_item,                           v_ delete_rows,
                    v_process_set id,v                        _submit_type,
chr(0)
                                          );
comm it;---提交
  if v_req_id >0 then
---成功提交
v_req_completed:=Fnd_Concurrent.Wait_Fores_Request(v_req_id,4,0,v_phase,v_status,v
_dphase,v_dstatus,v_message);
    if   v_req_completed=true then
        if     v_dstatus='NORMAL' then
              导入物料.成功运行完成
              Else
    导入物料.没有正常完成
nd if;
else
  导入物料.没有成功运行完成,请查看日志.程序退出
end if;
  else   --提交失败
      导入物料请求失败,物料没有导入成功;
  end if;
exception
  when others then提交物料导入请求时出错
  rollb  ack;
        return;
end;
 
1.4 ERP系统物料成本导入的开发
    在ERP系统中实现物料成本的导入功能,首先,需要将中间文件的数据装载到临时表中;然后,对临时表中的数据与系统中数据进行比较,并依据相应的条件将需要导入的数据插入临时表;再次,调用系统API,实现接口数据的导入功能。由于物料成本的信息包含在物料属性中,其中间文件数据的装载己经在4.3.2中做过描述,下面重点描述其后续过程。
 
1.调用API实现接口数据导入
    API程序CSTPCIMP实现了物料成本的导入功能,由Oracle EBS进行了封装,在下面的程序伪逻辑代码中,描述了在存储过程中如何调用API程序。
 
2.ERP中系统请求的定义

ERP系统中成本导入API定义如图5-7所示:

图5-7.jpg

1.5 ERP系统物料清单及工艺路线导入的开发
    在ERP系统中实现物料清单及工艺路线的导入功能,需要将中间文件的数据装载到临时表中,对临时表中的数据与系统中数据进行比较,并依据相应的条件将需要导入的数据插入临时表,然后调用系统API,实现接口数据的导入功能。
 
2系统实现
2.1自制件分解到原材料级,原材料用量的维护
    (1) ERP原材料作为对象,设计人员维护材料的ERP编码、ERP描述、ERP大类、ERP小类等四个与ERP相关的属性,其余由ERP信息室维护ERP特有的物料的属性信息,如图5-8所示。
 
    (2)设计人员在维护自制零件的“材料名称规格”栏时,必须从PDM的对象类列表中选择得到。不允许手工输入,或从其他的库中获得(原来从“属性分类管理器”中获取),如图5-9所示。

图5-8-9.jpg

    (3)在PDM的PBOM中,并不能直观地出现自制零件到ERP原材料级的单层父子关系,只在输出到接口文件中,才处理成单层父子关系,如图5-10所示。
(要自动查出“材料名称规格”唯一对应的ERP编码)

图5-10.jpg

    4)原材料用量。作为“ERP零部件属性”对象的固有属性,目前暂由信息室人员维护,如图5-11所示。

图5-11.jpg

2.2
自制件工艺路线数据维护
    在自制件的关联对象中,有一类“ERP工艺路线”关联对象,由信息室人员维护,如图5-12所示。

图5-12.jpg

2.3外协零部件BOM层次和采购单价处理
    (1)通过维护“ERP零部件属性”对象的“物料模板”的属性值,来识别是否为“外协件”。
    (2)外协部件:要保留完整的结构,只是在PDM输出中间接口文件时,将外协部件采购单价计算得出,不作为属性维护
    (3)外协件采购单价一原材料用量*((年初材料单价*加工系数s}+当前材料单价)+外购件单价(如有)。
 
2.4 PBOM上的工序号输入维护
    PBOM上的工序号,是一个结构属性,创建结构快照,在结构快照的每一个节点上,输入维护“工序号”。
 
2.5设计BOM上ERP数据完整性查询与验证
    即在创建的结构快照上的任一节点,能对下级没有关联对象的物料、结构快照属性没有维护全、关联对象中某些ERP属性(如物料编码、物料模板、价格、ERP工艺路线等)没有维护全的物料进行筛选查找,查找到的结果能显示出来,提醒并指导ERP信息室维护人员对这些未维护的属性或对象进行补录或再次维护。
 
3系统运行说明
    PDM系统与ERP系统的集成,在ERP系统和PDM系统中根据岗位分别设立了不同的权限,如各个分子公司的设计人员可以在PDM系统是实时查询ERP系统中合同的交货期、物料的库存情况等,以便于设计人员在进行产品设计时合理安排设计图纸的出图顺序和有效利用库存时间长的货物。公司内部局域网用户可直接登陆ERP, PDM系统,在外出差人员可使用VPN进入公司内网,然后登陆系统。为了保护公司的商业秘密,在信息安全领域有着严格技术、制度、软硬件等方面的防护措施,确保系统的稳定、安全、可靠地运行。
 
3.1 PDM中设计BOM转制造BOM
    在设计人员搭出设计BOM后,BOM在PDM中体现为设计结构树,工艺人员对设计结构树进行快照并维护工艺信息,信息室人员对照结构快照参考工艺信息,对相应的节点进行ERP信息的维护,维护完成后,才能转换为制造BOM,制造BOM的转换经历了从设计BOM->工艺BOM->制造BOM的过程。
 

具体过程如图5-13、图5-14、图5-15所示

图5-13.jpg

图5-14.jpg

图5-15.jpg

3.2 PDM中实时查询ERP信息
    ERP系统与PDM系统双向集成后,在PDM系统中可以根据选择和输入的组织、库存、物料信息,实时查询ERP系统中的信息,得到相应结果,并可以将结果导出为excel,其实现效果图如图5-16所示。

图5-16.jpg

3.3 ERP中实现物料及成本导入
    有物料需要导入ERP系统,在PDM系统维护相关属性后,生成中间文件bom_ item_ cost.CSV文件,将中间文件用ftp工具上传到ERP后,运行请求CUX:物料清单和成本工艺路线数据导入,参数如图5-17所示,请求完成后检查日志文件,物料己成功导入ERP系统,物料在ERP系统如图5-18所示。

图5-17.jpg

图5-18.jpg

3.4 ERP中物料清单及工艺路线导入
    以PDM系统中的罐体总成为例,设计人员在PDM系统中设计完成后,工艺人员和信息室人员分别在维护工艺信息和ERP信息后,生成物料清单中间文件和工艺路线中间文件,将中间文件用ftp工具上传到ERP后,运行请求CUX:物料清单和成本工艺路线数据导入,参数如图5-19所示,请求完成后检查日志文件,物料清单和工艺路线成功导入ERP系统,物料清单在ERP系统如图5-20所示、工艺路线在ERP系统如图5-21所示。

图5-19.jpg

图5-20.jpg


4系统测试
4.1测试方案
    系统测试是系统交付前的一个重要步骤,只有经过细致周密的测试的系统才能被认为是可以交付使用的系统。因此系统测试的目标非常明确,即按照客户的使用要求,进行详细的软件功能验证及角色业务验证,尽可能全面地测试系统的所有功能和界面,最后形成测试报告,对系统的功能、界面做客观的评价,为系统进一步的完善工作提供重要的参考意见。
 
  本课题ERP系统与PDM系统测集成的测试主要有功能性测试、准确性测试、性能测试、可靠性测试等。功能性测试主要为两系统双向集成的功能测试,准确性测试从数据的准确性入手,校验系统自动集成后产生数据的准确性,性能测试主要是对系统集成性能的评价,可靠性评价主要是测试系统的稳定性等。从测试方法而言,本次测试主要采用了白盒测试(White Box Testing、黑盒测试(Black Box Testing )、单元测试( Unit Testing )、集成测试(Integration Testing )等等。
 
4.2测试过程
    ERP系统、PDM所涉及的测试产品和业务情形的范围很广,在课题论文的测试章节中,对测试的详细过程不作一一阐述,只列举其中的部分数据,描述具体的测试过程。

1. PDM系统实时查询ERP库存信息
    这部分内容的测试主要有功能性测试、准确性测试、稳定性测试等方面。在PDM系统中,为了方便设计人员高效地开展设计工作,有效合理地安排工作任务,实时查询库存信息,降低呆滞库存,根据合同交货期及时进行设计图纸的下发等。
 

   ERP系统实时库存信息为测试用例,测试用例如表5-1所示:

表5-1.jpg表5-1-2.jpg

2. PDM设计BOM转化为制造BOM、工艺路线测试
    此部分测试主要是功能性测试、性能测试和数据准确性测试。对于PDM系统中的设计BOM需要经过工艺BOM转换,在补充相关信息后再转化成制造BOM,设计BOM转化为制造BOM过程中,通过手工搭建BOM与系统自动生成的中间文件的结果进行比较,以校验集成的准确性。
 

测试用例如表5-2所示:

表5-2.jpg

3. ERP导入工艺路线和物料清单测试
    此部分测试主要是功能性测试、性能测试和数据准确性测试。ERP工艺路线和物料清单的导入主要测试器功能是否正常完成,并检验其导入结果和PDM输出文件结果是否一致,以验证功能的可实现性和数据的准确性。ERP工艺路线和物料清单的导入的测试用例如表5-3所示:

表5-3.jpg表5-3-1.jpg

4. ERP导入物料及物料成本测试
    此部分测试主要是验证功能的可实现性、数据的准确性和系统性能。ERP物料及物料成本的导入主要测试器功能是否正常完成,并检验其导入结果和PDM输出文件结果是否一致,以验证功能的可实现性和数据的准确性。ERP工艺路线和物料清单的导入的测试用例如表5-4所示:

4.3测试结论
    通过仔细严格的测试, ERP与PDM系统双向集成的实现,达到了系统集成的目标,集成的性能完全符合设计需要;集成功能的稳定性良好,其功能符合设计需要;数据的准确性经过多次验证,均准确无误。
 
    通过系统用户、系统开发人员进行的多轮次的测试,ERP与PDM系统双向集成的实现,系统程序性能优越,系统数据准确,系统稳定,符合用户使用习惯和期望目标,符合课题建设目标。
 

本文章内容转自中车信息有限公司 : 本文网址:http://www.pdm.so/information/20180408657.html
更多


(工作日:7:30-23:00)

在线QQ

销售热线4006-185-708 021-31263780

4006-185-708 021-31263780