iT邦幫忙

2021 iThome 鐵人賽

DAY 3
1
自我挑戰組

從Agile PLM 移轉 Aras PLM大小事系列 第 3

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

  • 分享至 

  • xImage
  •  

第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;

上一篇
2.移轉 Aras PLM大小事-拆解Agile的準備工作
下一篇
4.移轉 Aras PLM大小事-Agile 匯出 Part & BOM (2)
系列文
從Agile PLM 移轉 Aras PLM大小事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言