3.移转 Aras PLM大小事-Agile 汇出 Part & BOM (1)

第3话 Agile 汇出 Part & BOM(1)

想要汇出Agile的Part与BOM,首先就要了解资料表有哪些,以及如何验证
但涉及资料问题,我把验证交给查看在座的各位

注意也可以用Agile报表来汇出,只是会执行很久


事不宜迟,来看重点Part如何用SQL汇出

料号 品名规格 类别 料号版本 发行日期 是否最新版 单位 文件说明 生命周期

完全版

select  
    item.item_number item_number, --料号
    (replace(replace(replace(rev.description,'<','&lt;'),'>','&gt;'),'&','&amp;') || ' ' ||  (select agile_flex.text from agile_flex 
        where agile_flex.row_id=item.id and agile_flex.attid=2017)) name, --品名规格
    nb.description classification, --类别
    NVL(rev.rev_number,'00') cn_revision, --料号版本
     (TO_CHAR (rev.release_date,'YYYY-MM-DD') || 'T' || TO_CHAR (rev.release_date,'HH24:MI:SS'))  release_date, --Released Date
    rev.effective_date effective_date,
    rev.LATEST_FLAG is_current, --是否最新版
    NVL(list02.entryvalue,'NULL') unit, --单位
    (select agile_flex.text from agile_flex 
        where agile_flex.row_id=item.id and agile_flex.attid=1080) cn_part_note, --文件说明
    replace(getpartrevtype(rev.release_type),'Part. No Released','Temp. Approved') cn_lifecycle --生命周期
from item
inner join nodetable nb on nb.id = item.subclass
inner join rev rev on rev.item = item.id
inner join item_p2 p2 on p2.item_number = item.item_number
left join listentry list02 on list02.entryid = p2.list02
where item.class = 10000
and rev.LATEST_FLAG=1 
and nb.description not in('K01_纸类包装材Paper Package')

第一部分 from 集合

  • Item表->所有料号文件物件, item.class = 10000 表示料号的类别
  • nodetable表 -> 所有子类别集合Page2、Page3...是一种树状结构,nb.description表示子类别名称
  • item_p2表 ->表示Item物件的扩充栏位,用Page2
  • listentry表 -> 表示下拉选单 entryid 对应item物件下拉选单栏位
  • rev表 -> 表示一个物件的版本,也用於版本控制,记录不同版本的栏位差异,latest_flag=1表示最新版

第二部分 select栏位

栏位 解释
name 品名规格 这里用到两个内部栏位相加,一个是rev.description用最新版内容+备注栏位,备注栏位是用另一个aglie_flex表纪录并对应属性ID,建议要将特殊记号<>;转换成Aras可写入的语法
cn_revision 料号版本 建议用NVL定义预设值
release_date 发行日期 日期格式化YYYY-MM-DDTHH:mm:ss
unit 单位 使用到下拉选单,故先用list02.entryvalue清单值
cn_lifecycle 生命周期名称 这个系统使用生命周期的ID做纪录,故ID要先对应出名称,这里由於我找不到生命周期的设定表,直接写一个翻译函式 getpartrevtype(ID)将ID翻译成英文名称(注意ID不会与我相同),再来用replace把Part No.Released 改成 Temp.Approved,getpartrevtype请参考最下方处

这里说明用SQL汇出料号,里面的属性ID需要自行到Agile管理员介面中查阅,这个范例可以从简单的item表开始测试喔!


create or replace FUNCTION GETPartREVTYPE 
(
  RELEASED_TYPE IN VARCHAR2 
) RETURN VARCHAR2
IS
    state_type  varchar2(32767) :='';
BEGIN
    if RELEASED_TYPE = '22507' then
        state_type:= 'Released';
    ELSIF RELEASED_TYPE = '25096' then
        state_type:= 'Obsolete';
    Elsif released_type = '23196' then
        state_type:= 'Temp. Approved';
    Elsif released_type = '21954' then
        state_type:= 'Part. No Released';
    Elsif released_type = '37409' then
        state_type:= 'BOM Released';
    Elsif released_type = '37410' then
        state_type:= 'MP';
    ELsif released_type = '21956' then
        state_type:= 'Approved';
    ELSE
        state_type:='Preliminary';
    end if;
  RETURN state_type;
END GETPartREVTYPE;

<<:  Day 01-这30天的前言

>>:  Day 03:离散数学

Day 20:设定 404 页面,不要让读者迷路了!

当网站建立一段时间,或多或少可能会有页面因为时间推移改变或是删除了,但此时页面已经被搜寻引擎收录或是...

[Day2] 自我必备觉醒力:自觉的力量

敲响自觉的响钟 一直追着不属於自己的目标,很累却也很容易迷失 背负着期待的IT团队,很快地就开始动工...

B+树索引实战篇-Part2(联合索引的扫描区间与边界条件)

此篇由於篇幅的关系为前文的连贯。 如没有看到前文请先去看看再来唷~ 前情提要-我们前面为了方便解释,...

AI ninja project [day 5] AI RPA系统--表单篇

再来是办公室表单的处理, 假设有些表单只有图像或是只有纸本, 想要汇入成Excel档案时, 我们就可...

[Day 20]从零开始学习 JS 的连续-30 Days---todolist 待办事项

待办事项结构 to do list 需要输入框与输入按钮。 送出输入按钮後产生待办事项与完成按钮。 ...