跳轉到

程式資訊

  • 程式 IDBOM_BOTM
  • 所屬子系統:D.工程資料
  • 狀態:stable

BOM 底階用料查詢

功能簡介

「BOM 底階用料查詢」把一段品號區間內的每個品號,沿著 BOM 結構一路展開到最低階(底層)零件,列出該品號最終要用到哪些「不再往下分解」的物料、各用多少、以及這些零件的主要供應廠商與基本屬性。

它回答的問題是:「這個成品(或半成品)拆到最底,實際是由哪些採購件/原料組成的?」——中間的半成品階層會被穿透,只保留最末端的用料。適合工程師、製程規劃與採購人員在估料、核對 BOM、或盤點底階零件時使用。

與其他 BOM 查詢的差異

本頁只做「結構展開」,不算成本、不結合訂單/預示需求。若要看標準製造成本請用 BOM 成本展開;若要由下而上反查某品號被哪些母件用到、彙總總用量,請用 BOM 用途查詢。它用的底階展開預存程序(DARB_QRY_BOM_BOTM)與客戶報價單展材料、生產計劃查詢展用量是同一支,只是本頁固定以基準數量 1 展開、純看結構。

前置需求

  • 權限:D.工程資料 → D-070 BOM 底階用料查詢 的瀏覽(與列印)權限。
  • 基礎資料:展開結果的完整度取決於下列主檔的維護狀況——
資料 影響的結果
BOM 主檔(Bom 展開路徑與底階零件清單;BOM 沒建到底,就只展開到目前的末階
品項主檔(B 模組) 上層/底階零件的品名、單位、材質、ABC 分類、容器別、包裝量
廠商主檔與 BOM 供應商設定 底階零件的廠商代號 1/2/3、廠商簡稱、供應比例
群組設定 群組代號與群組說明

小技巧

若某品號展開後底階零件少得不合理,多半是該品號(或其下半成品)的 BOM 還沒建完整。可先到 BOM 主檔 確認結構,或用 BOM 階層檢查 找出沒展開到底的階層。

操作步驟

本表單為唯讀查詢,沒有新增/修改/刪除,操作集中在「設定品號區間 → 查詢 → 看上下兩個格線」。

步驟① 設定品號區間

  1. 在條件面板輸入起始品號截止品號(兩欄之間以 ~ 表示區間)。
  2. 兩欄皆套用品號搜尋樣式(SKUSearch),可用 BOM 品號搜尋帶出品號。
  3. 預設起始品號為空字串、截止品號zzzz,即「全部品號」。
  4. 區間以品號字串大小比對(起始品號 ≤ 品號 ≤ 截止品號)。只想查單一品號時,把起訖填同一個品號即可。

步驟② 執行查詢

  1. 按工具列的 查詢。系統對區間內的每個品號做 BOM 底階展開,結果分為上下兩個格線。
  2. 上方(組件清單):每一列是一個「被查詢的品號」(查詢組件號),列出它的品名、停用、群組代號、群組說明與零件編號。
  3. 下方(底階零件明細):點選上方任一列,下方即顯示該品號展開到最低階的所有底階零件——品號、品名、用量、單位、組件編號、查詢組件號與零件編號等。

上下兩格線連動

步驟③ 列印 / 匯出

  1. 上、下兩個格線都是 TsRadGridView,可在格線上按右鍵 → 匯出 Excel,把當前內容輸出成試算表。
  2. 工具列的 列印 可把查詢結果輸出成報表(透過系統共用列印機制;本表單 HaveReportData 永遠為真,故列印恆可用)。

查詢前先設好區間

本表單沒有「自動帶上次條件」的暫存;每次開啟都是預設的全品號區間(空字串 ~ zzzz)。品號很多時建議先縮小起訖品號再查,避免一次展開過多資料。

欄位說明

查詢條件(步驟①)

欄位 必填 說明 / 格式 / 預設
起始品號 品號區間下界;套 SKUSearch 搜尋樣式。預設空字串(不限下界)
截止品號 品號區間上界;套 SKUSearch 搜尋樣式。預設 zzzz(不限上界,等同查全部)

兩欄都不檢查存在

起訖品號的搜尋框都設定 CheckDataExist="False",即可填入不存在的品號當邊界(用來框區間),系統不會擋。

上方格線(組件清單,每列一個被查品號)

欄位 說明
查詢組件號 被展開的品號(即起訖區間內符合的品號),同時是上下連動鍵
品名 該品號的品名(取自展開結果該組第一筆)
停用 該品號是否停用
群組代號 該品號所屬群組代號
群組說明 群組代號對應的說明
零件編號 該品號的零件編號

下方格線(底階零件明細,隨上方選取列連動)

欄位 說明
品號 底階零件的品號
品名 底階零件品名
停用 底階零件是否停用
群組代號 / 群組說明 底階零件所屬群組
數量 該底階零件展開後的用量(以單位用量基準 1 逐階相乘累計;格式套 BomQuantity 數值樣式)
單位 底階零件單位
組件編號 此底階零件所屬的上層組件編號
查詢組件號 對應上方被查詢的品號(連動鍵)
零件編號 底階零件的零件編號

其他可用但未排進預設格線的欄位

展開結果(Bom_botmDetailPoco)還帶有含損耗數量、單重、總重、材質、庫存量、容器別、ABC 分類、包裝材料、包裝量(包/箱)、來源別、顯示序號(途程序號)、廠商代號 1~3/廠商簡稱 1~3/廠商 1~3 比例等欄位,資料已隨查詢取回,只是預設未排進畫面格線;如需呈現可調整版型或加欄。另外底階展開預存程序原始回傳的 bomlevel(階層)、損耗率派工截止點 等欄位本表單未取用。

欄位連動與附加功能

這支程式邏輯集中在「查詢」與「上下連動」,以下把實際程式碼裡會發生的事逐條說明:

  • 輸入起訖品號 → 組成查詢範圍:按 查詢 時(Bom_botmViewModel.Query),系統把條件組成 品號 between '起始品號' and '截止品號',搭配展開基準數量 1 與「今日日期」(DateTimeWrapper.TodayYYYYMMDD()),以事件代碼 Bom_chk 呼叫底階展開預存程序 DARB_QRY_BOM_BOTM。也就是說,用量是以單位 1 為基準往下展開,看的是「每做 1 個此品號需要多少底階零件」,而非結合任何訂單數量。

  • 展開到最低階(穿透半成品):預存程序會沿 BOM 階層遞迴,自動跳過中間的半成品階,只回傳「不再往下分解」的底階零件。中間階層的用量會逐層相乘累計到底階零件的數量上。

  • 查詢結果在 BLL 內分組成上/下兩份Bom_botmBll.GetSources 把預存程序回傳的扁平清單,以查詢組件號ToLookup 分組——每個被查品號在上方只出現一列(取該組第一筆的品名、停用、零件編號、群組代號/說明),它底下所有底階零件則整批歸入下方明細清單。

  • 上方選一列 → 下方即時換明細:上方每列代表一個被查品號;當你點選上方某列,SelectedItem 的 setter 會以該列的查詢組件號為鍵,從已分組好的 detailLookup(記憶體內的 ILookup)撈出屬於它的底階零件填入下方格線。若取消選取(無選取列),下方會清空。這個對應在查詢當下一次算好放在記憶體裡,所以切換上方各列時是即時的,不會重打資料庫

  • 三組供應廠商隨查詢帶回、原樣呈現:每個底階零件可帶三組廠商代號/簡稱/供應比例(廠商代號 1/2/3)。Bom_botmBll 把這三組欄位原樣放進明細,本表單不另做「挑最高比例為主要廠商」之類的計算,供應比例只是如實呈現的參考值。

    GetVendor 在本頁未啟用

    底階展開模型 Twork_qry_bom_botm 雖有一個 GetVendor()(依比例 1≥2≥3 選出主要廠商)的方法,但那是給生產計劃查詢等需要「單一主要供應商」的場景用的;本表單刻意不呼叫它,三組廠商一律平鋪呈現。

  • 展開帶入查詢當日日期:呼叫底階展開預存程序時會帶入「今日日期」作為展開基準日,因此與日期相關的欄位(如庫存量)反映的是查詢當下的狀態。

  • 可列印並寫入作業紀錄:本表單覆寫 HaveReportData() 永遠回傳 true,因此工具列的 列印 可用。列印走系統共用的報表列印路徑(IUpdatePrint / IPrintSource 機制),不需在本頁額外設定資料來源;列印(或記錄工作流程)時系統會一併把這次作業寫入作業紀錄(RECORD)。

注意:本頁不做的事

  • 不算成本/金額:展開結果沒有單價與金額欄位,純粹是結構與用量。要成本請改用 BOM 成本展開
  • 不結合需求:用量固定以基準 1 展開,不會乘上訂單或預示數量。要由下而上反查某品號被哪些母件用到、彙總總用量,請用 BOM 用途查詢
  • 不在此編輯 BOM:所有欄位唯讀(XAML IsReadOnly="True"),改 BOM 結構請到 BOM 主檔

常見問題

查詢後上方沒有任何資料?

可能是起訖品號區間內沒有符合的品號,或這些品號根本沒有建 BOM。請確認:(1) 起始/截止品號是否把目標品號夾在區間內(區間以品號字串大小比對);(2) 該品號是否已在 BOM 主檔 建立結構。預設區間是「空字串 ~ zzzz」即全部品號,把起訖清空再查可先確認資料是否存在。

上方有資料,但點某列後下方明細是空的?

代表該品號沒有可展開的底階零件——通常是它本身就是採購件/原料(沒有下階 BOM),或它的 BOM 還沒往下建。請到 BOM 主檔 確認該品號是否真的有下階組成。

展開出來的底階零件比預期少,是不是漏了?

底階展開只會穿透「有建 BOM 的階層」。若中間某個半成品的 BOM 沒建完整,展開就會停在那一階、把它當成底階零件列出,導致更下層的真正原料沒被展開。建議用 BOM 階層檢查 找出沒展開到底的階層後補建 BOM。

底階零件的數量是什麼基準?是訂單數量嗎?

不是。數量是以「上層品號做 1 個」為基準,沿 BOM 逐階相乘累計到底階的用量,與任何訂單/預示數量無關。要由下而上反查某品號被哪些母件用到、彙總總用量請用 BOM 用途查詢;要結合實際需求數量估採購量,請改用 生產計劃查詢

看不到單價、金額、成本或廠商欄位?

本查詢只做結構展開,刻意不含成本,所以沒有單價/金額欄。廠商代號 1~3、供應比例、含損耗數量、庫存量等欄位其實已隨查詢取回,只是預設格線沒排這些欄(詳見 欄位連動與附加功能);要顯示可調整版型加欄。要看標準製造成本與金額,請改用 BOM 成本展開

輸入了一個不存在的品號當邊界,會被擋嗎?

不會。起訖品號的搜尋框設定為不檢查存在(CheckDataExist="False"),刻意允許填入不存在的字串當區間邊界(例如用 zzzz 當上界)。

相關功能


需補截圖清單

以下截圖待 runtime 驗收後補拍(放 docs/D-Bom/images/):

  1. bom_botm-step1.png — 條件面板(起訖品號)+上下兩個格線連動的全貌(建議點選上方一列、下方顯示其底階零件明細)