2009年10月7日 星期三

[OM] 訂單Line狀態:AWAITING INVOICE INTERFACE - PENDING COMPLETE DELIVERY

環境:EBS 11.5.10.2

簡述:訂單已出貨成功,存貨帳已扣,AR INTERFACE 無資料,懷疑workflow拋轉

            失敗沒Rollback。經過Load TAR後,測試結果是workflow拋轉另一張訂單失

            敗造成同一批次的其他單子卡單。

解決方案:

1. 先select wf_item_activity_statuses_v,找出error的order line id。

2.

set serveroutput on
Declare
l_line_id NUMBER := &line_id;
l_org_id NUMBER;
l_count NUMBER;
l_result VARCHAR2(30);
l_activity_label VARCHAR2(30);
l_file_val VARCHAR2(200);

Begin

fnd_client_info.set_org_context('&org_id');
oe_debug_pub.debug_on;
oe_debug_pub.initialize;
l_file_val := OE_DEBUG_PUB.Set_Debug_Mode('FILE');
oe_debug_pub.setdebuglevel(5);

select activity_label
into l_activity_label
from wf_item_activity_statuses_v
where item_type='OEOL'
and activity_name = 'INVOICE_INTERFACE'
and activity_status_code = 'ERROR'
and item_key = to_char(l_line_id);

dbms_output.put_line('activity label : '||l_activity_label);

OE_Standard_WF.OEOL_SELECTOR
(p_itemtype => 'OEOL'
,p_itemkey => to_char(l_line_id)
,p_actid => 12345
,p_funcmode => 'SET_CTX'
,p_result => l_result
);

wf_engine.handleError('OEOL', to_char(l_line_id), l_activity_label, 'RETRY',nu
ll);
dbms_output.put_line('File name '||OE_DEBUG_PUB.G_DIR||'/'||OE_DEBUG_PUB.G_FILE);
End;
/
commit;

 

2009年8月26日 星期三

[PO] MTL_SUPPLY table 在PO模組下的異動變化

今天剛好有需求,找到以前網路上收集的一些資料,講得蠻清楚的。
1、當請購單建立、核准後,mtl_supply的變化

a.當建立完請購單,MTL_SUPPLY為空
b.當核准後,mtl_supply中產生一條資料,supply_type_code=REQ
c.當請購單核准後,請購頭與請購行存入MS.REQ_HEADER_ID, MS.REQ_LINE_ID,此時MS.SUPPLY_TYPE_CODE=REQ


2、當PO建立、核准後,mtl_supply的變化

a.當請購單轉換成po後,在未核准時,MTL_SUPPLY為空
b.當核准後,mtl_supply中原有的supply_type_code=REQ被更改為supply_type_code=PO
c.一般而言,當請購單自動建立為採購單時,其supply_type_code=REQ被更改為supply_type_code=PO
d.當核准後的po做取消時,MTL_SUPPLY中supply_type_code=PO被更改為supply_type_code=REQ
e.--當調用由請購單自動開採購單的程式時,如果未核准,MS.PO_HEADER_ID,MS.PO_LINE_ID,MS.PO_RELEASE_ID,MS.PO_LINE_LOCATION_ID,MS.PO_DISTRIBUTION_ID,為空,如果已核准MS.REQ_HEADER_ID,MS.REQ_LINE_ID被清空,MS.SUPPLY_TYPE_CODE=PO,對於在po單中修改數量或添加新的採購訂單行而未核准,原有已核准的採購訂單行資料不變,但新添加的行未錄入該表當核准後的po做取消時,MTL_SUPPLY中supply_type_code=PO被更改為supply_type_code=REQ,MS.REQ_HEADER_ID, MS.REQ_LINE_ID被填入原有的請購單的頭和行值,同時,MS.PO_HEADER_ID,MS.PO_LINE_ID,MS.PO_RELEASE_ID,MS.PO_LINE_LOCATION_ID,MS.PO_DISTRIBUTION_ID, MS.NEED_BY_DATE,MS.RECEIPT_DATE,
MS.EXPECTED_DELIVERY_DATE, 被清空


3、當PO接收後,mtl_supply的變化

a.當po完全接收後,mtl_supply中原有的supply_type_code=PO被更改為supply_type_code=RECEIVING
b.當採購單做完接收後,MTL_SUPPLY中supply_type_code=PO被更改為supply_type_code=RECEIVING,同時MS.SHIPMENT_HEADER_ID,MS.SHIPMENT_LINE_ID,  MS.RCV_TRANSACTION_ID,存入shipment的頭資訊,行資訊,及rcv_transaction的transaction_id


4、當PO某行部分接收後,mtl_supply的變化

a.當PO某行部分接收後,接受行中原有的supply_type_code=PO被更改為supply_type_code=RECEIVING


5、當PO檢驗後,mtl_supply有什麼變化

a.當PO檢驗後,接受行中原有的supply_type_code=RECEIVING不變


6、當PO部分入庫後,mtl_supply有什麼變化,全部入庫後

a.當PO部分入庫後,mtl_supply中該行記錄被刪除,而全部入庫則該採購單所有行記錄被刪除涉及的表

2009年7月15日 星期三

[COST] Oracle ERP系統借貸關係表

網路上收集的,因為很久了忘了出處,覺得常用到,所以放上來。

Oracle ERP系統借貸關係表

成本核算會計資訊歸納
按照交易處理的來源類型歸納。
一、 採購接收入庫和退貨:
1.接收: 借:材料採購 (訂單價格)
貸:應計負債 (訂單價格)
2.入庫: 借:原材料 (標準成本)
貸:材料採購 (訂單價格)
借或貸:材料成本差異_材料訂單價格
3.退貨至接收時產生與上面第2步相反的分錄,退貨至供應商時產生與上面第1步相反的分錄。
二、 子庫存轉移:只有轉出子庫產生分錄
借:原材料(自製半成品、庫存商品)
貸:原材料(自製半成品、庫存商品)
三、 雜項交易處理:
1.庫存增加:借:原材料(自製半成品、庫存商品)
貸:帳戶別名(或自訂帳戶)
2.庫存減少:與上面相反的分錄
四、 採購發票匹配:借:應計負債 (訂單價格)
應交稅金_增值稅_進項稅
貸:應付帳款 (發票價格)
借或貸:材料成本差異_材料發票價格差異
五、 生產環節:
1. 標準工單:
① 標準工單領料:借:生產成本_直接生產成本_材料
貸:原材料(自製半成品、庫存商品)
② 標準工單退料:與上面相反的分錄
③ 標準工單資源交易處理(即人工):雖然我司沒有在WIP模組進行實際的人工成本核算,但系統會自動核算一筆,基於在定義資源時的吸收帳戶為“生產成本_直接生產成本_直接人工”,系統產生以下分錄:
借:生產成本_直接生產成本_直接人工 (包含成本中心資訊)
貸:生產成本_直接生產成本_直接人工
(值為零,且只有裝配件定義了資源、工藝路線的工單才會產生此分錄)
因此,在總帳模組處理實際人工和製造費用時,建議:
借:生產成本_生產成本差異_人工 (實發工資)
貸:應付工資
借:生產成本_生產成本差異_費用 (實際發生的製造費用)
貸:製造費用
④ 標準工單完工入庫:借:原材料(自製半成品、庫存商品)
貸:生產成本_直接生產成本_直接材料
生產成本_直接生產成本_直接人工
生產成本_直接生產成本_直接費用
(僅庫存商品會有人工和費用科目)
⑤ 如果按照標準成本生產,即發生成本和沖減成本一致,則工單關閉時沒有差異;
⑥ 工單關閉時,如果材料的發生成本比沖減成本大,即多耗料:
借:生產成本_生產成本差異_材料
貸:生產成本_直接生產成本_直接材料
如果少耗料則產生相反分錄。
生產環節只產生量差,不產生價差。
⑦ 工單關閉時,對於人工和費用產生的分錄恒定為:
借:生產成本_直接生產成本_直接人工 (標準)
生產成本_直接生產成本_直接費用 (標準)
貸:生產成本_生產成本差異_人工
生產成本_生產成本差異_費用
2. 非標工單:(對一般性分錄不歸納,如領材料等)
① 有完工入庫的非拆卸工單
發出成品時:借:生產成本_直接生產成本_直接材料 (標準)
生產成本_直接生產成本_直接人工 (標準)
生產成本_直接生產成本_直接費用 (標準)
貸:產成品
完工入庫時:借:庫存商品
貸:生產成本_直接生產成本_直接材料 (標準)
生產成本_直接生產成本_直接人工 (標準)
生產成本_直接生產成本_直接費用 (標準)
關閉時:借:生產成本_直接生產成本_直接人工 (標準)
生產成本_直接生產成本_直接費用 (標準)
貸:生產成本_生產成本差異_人工
生產成本_生產成本差異_費用
借:生產成本_生產成本差異_材料
貸:生產成本_直接生產成本_直接人工 (標準)
生產成本_直接生產成本_直接費用 (標準)
② 拆卸工單:
發出成品,同上;
發放負組件:借:原材料(自製半成品)
貸:生產成本_直接生產成本_直接材料
返還負元件,產生與之相反分錄;
關閉時:借:生產成本_生產成本差異_材料
貸:生產成本_直接生產成本_直接材料 (標準)
生產成本_直接生產成本_直接人工 (標準)
生產成本_直接生產成本_直接費用 (標準)
3. 其它委外加工、外協加工、編碼拆分等類型類似工單處理(因為科目設置一樣)
六、 銷售環節:
1. 挑庫:借:分期收款發出商品
貸:庫存商品(自製半成品、原材料)
2. 發運:借:分期收款發出商品
貸:分期收款發出商品
七、 成本更新:
1. 對庫存的影響:
如果單位成本增加,則 借:原材料(自製半成品、庫存商品)
貸:材料成本差異_材料成本更新差異
如果單位成本降低,則產生相反分錄
2. 對在製品的影響,需要區分不同的工單狀態
① 工單已發放狀態,元件尚未發,裝配件未入庫,裝配件物料、人工和製造費用及元件的更新均不產生影響;
② 工單已發放狀態,元件已發,未有裝配件入庫,裝配件物料、人工和製造費用的更新不產生影響,某元件的成本更新會產生影響,
借(貸):生產成本_直接生產成本_直接材料
貸(借):生產成本_生產成本差異_在製品成本
③ 工單已發放狀態,元件已發,裝配件部分入庫,如果是裝配件某一元件更新引起裝配件成本更新,則元件和裝配件的更新都會產生影響:
(元件成本增加)元件產生的影響:
借:生產成本_直接生產成本_直接材料(已發料數量*更新值)
貸:生產成本_生產成本差異_在製品成本
裝配件產生的影響:
借:生產成本_生產成本差異_在製品成本
貸:生產成本_直接生產成本_直接材料(已入庫數量*更新值)
對於以後再入庫的按新裝配件成本沖減。
元件成本減少產生相反分錄。
④ 工單已發放狀態,元件已發,裝配件部分入庫,物料沒有更新,裝配件的資源或製造費用更新(人工定義非累計的更新)對已入庫部分產生影響:
成本增加:借:生產成本_生產成本差異_在製品成本
貸:生產成本_直接生產成本_直接人工(已入庫數量*更新值)
(或 貸:生產成本_直接生產成本_直接費用)
成本減少產生相反分錄。
⑤ 工單已完成狀態,元件已發,某個元件更新(但裝配件並沒更新),對元件的發料會產生影響:
成本增加:借:生產成本_直接生產成本_直接材料 (已發料數量*更新值)
貸:生產成本_生產成本差異_在製品成本
成本減少產生相反分錄。
⑥ 工單已完成狀態,元件已發,某個元件更新引起裝配件物料成本更新,對元件發放和裝配件入庫都會產生影響:
成本增加:借:生產成本_直接生產成本_直接材料 (已發料數量*更新值)
貸:生產成本_生產成本差異_在製品成本
借:生產成本_生產成本差異_在製品成本
貸:生產成本_直接生產成本_直接材料(入庫數量*更新值)
成本減少產生相反分錄。
⑦ 工單已完成狀態,元件已發,物料沒有更新,資源或製造費用更新(人工定義非累計):
成本增加:借:生產成本_生產成本差異_在製品成本
貸:生產成本_直接生產成本_直接人工(直接費用)
成本減少產生相反分錄。
八、 根據開票資訊在總帳結轉銷售成本:
借:主營業務成本(其它業務支出_材料)
貸:分期收款發出商品
九、 匯總各個差異帳戶,按規則在總帳中分攤。
1.採購驗收作業,產生會計分錄如下:(
借):收貨科目 (Receiving Inventory) @ PO Price
(貸):存貨AP應計額 (Inventory AP Accrual) @ PO Price
2.入庫作業,有應付帳款立帳資訊,則依循立帳資訊,無立帳資訊,則採用採購單資訊,產生會計分錄如下 (假設有應付帳款立帳資訊):
(借):原物料科目 (Material Account) @應付帳款立帳本幣金額
(貸):收貨科目 (Receiving Inventory) @ PO Price
(借 或 貸):商業發票價格差異(Invoice Price Variance, IPV)
採購單匯差收益/損失(Rate Variance Gain/Loss)
3.應付帳款立帳作業,產生會計分錄如下:
(借):存貨AP應計額 (Inventory AP Accrual) @ PO Price
(貸):應付帳款科目 @應付帳款立帳本幣金額
(借 或 貸):商業發票價格差異(Invoice Price Variance, IPV)
採購單匯差收益/損失(Rate Variance Gain/Loss)
4. 在週期性成本之下,若原物料採購的發票在立帳時有做Match Receipt的動作,則週期性成本會將此發票的商業發票價格差異(IPV)轉變成原物料成本,但若本期的發票Match前期的Receipt,則此發票產生的IPV將不會被週期性成本納入本期的料件成本計算.
關與在製品會計分類(WIP Accounting Class)
1. 直接材料的發料
分錄的金額為「當期週期性成本」
(借):在製品計價科目 (WIP Valuation) @ 當期週期性成本
(貸):存貨科目 (MTL Account) @當期週期性成本
2. 直接人工的成本處理
分錄的金額為「當期維護的工資率」
(借):在製品計價科目 (WIP Valuation) @ 當期維護工資率
(貸):已分攤直接人工(Absorption) @當期維護工資率
3.製造費用 / 委外加工費用的成本處理
製造費用的成本反應會產生如下的分錄,分錄的金額為「當期維護的部門分攤率」
(借):在製品計價科目 (WIP Valuation) @ 當期維護分攤率
(貸):已分攤製造費用(Absorption) @當期維護分攤率
委外加工費用的成本反應會產生如下的分錄
分錄的金額為「當期維護的部門分攤率」
(借):在製品計價科目 (WIP Valuation) @ 當期維護分攤率
(貸):已分攤加工費用(Absorption) @當期維護分攤率
如果採用標準外包作業流程,則于驗收作業時產生如下之分錄:
(借):收貨科目 (Receiving Inventory) @ PO Price
(貸):存貨AP應計額 (Inventory AP Accrual) @ PO Price?
應付帳款立帳作業,產生會計分錄如下:
(借):存貨AP應計額 (Inventory AP Accrual) @ PO Price
(貸):應付帳款科目 @應付帳款立帳本幣金額
(借 or貸):商業發票價格差異(Invoice Price Variance, IPV)
採購單匯差收益/損失(Rate Variance Gain/Loss)
收回工單時,有應付帳款立帳信息,則依循立帳資訊,無立帳資訊,則採用採購單資訊,產生會計分錄如下 (假設有應付帳款立帳資訊):
(借):在製品-委外加工(WIP-Outside Process)@應付帳款立帳本幣金額
(貸):收貨科目 (Receiving Inventory) @ PO Price
(借 or貸):商業發票價格差異(Invoice Price Variance, IPV)
採購單匯差收益/損失(Rate Variance Gain/Loss)
工單完工入庫時會產生如下的分錄,其中借方科目依據完工入庫的成品/半成品料號所對應的分類(Category),讀取「週期性成本」的「週期性科目指定」貸方科目為「在製品會計分類」的「計價科目」。
(借):存貨科目 (MTL Valuation)
(貸):在製品計價科目 (WIP Valuation)
工單完工入庫數 = 工單開立數時,系統會將狀態切換為「完工(Complete)」。
生管於月底結帳前,需檢視所有未結工單是否仍會有交易會發生,針對可結案的工單,需將工單狀態切換為「完工 – 不允許費用再入帳(Complete-No Charge)」。
成會于月底結帳時,查詢所有狀態為「完工 – 不允許費用再入帳(Complete-No Charge)」的工單,執行工單成本結案動作。
工單結案時,如果工單上仍有剩餘在製品價值,會依成本元素分別結至「在製品會計分類」的對應「差異科目」,產生如下之分錄:
(借or 貸):在製品計價科目 (WIP Valuation)
(貸 or 借):在製品差異科目 (WIP Variance)
RMA 作業
有「銷退」、「退修」與「換貨」三種型態。
換貨作業採用訂單出貨與RMA收貨方式處理,並用「暫領待退料」來表達尚未歸還的部分,並需透過輔助報表協助表達已歸還部分是否有差異發生,如有差異,於總帳進行調整,調至「製造費用」科目。
上述差異的發生,一方面可能是領出與歸還的料號不同,這部分確實屬於差異,另一方面即使同一料號,因為領出與歸還的期間不同,亦會有差異的發生,照道理說,這部分的差異是不應該發生的。
假設 H 出原物料給 W,在途資產屬於接收方W,則H出貨時產生如下分錄(Transfer Credit 為轉撥利得):
(借) 在途存貨(Intransit, W) 應收帳款(Receivable, H)
(貸) 原物料(Material, H) 移轉銷退折讓(Transfer Credit, H)
應付帳款(Payable, W)?
W收貨時,產生如下的分錄:
(借) 原物料(Material, W)
(貸) 在途存貨(Intransit, W)
週期性成本,成品或半成品完工入庫時之成本計算
依據各站的單位成本貢獻加總而得,表達上有區分成本要素(Cost Elements)。
當站的單位貢獻成本 = (當站發生的成本 – 工單入庫, 當站已Relief 成本) / (當站移轉數 – 工單入庫數)。

2009年7月7日 星期二

關於Form中各種commit的說明

1. Commit針對Form操作和代碼進行Commit,若Form上的異動和代碼中的資料異動有衝突,以介面上的為主。

2. Commit_form
針對Form上的資料異動做Commit,對於代碼中的類似update、insert語句也進行提交,如果Form上的資料異動和代碼中的異動有衝突,以介面上的為主。

3. do_key(‘commit_form’)
首先會觸發Form下的KEY-COMMIT這個Trigger。若沒有KEY-COMMIT這個Trigger,則直接提交Form和代碼資料。如果Form上的資料異動和代碼中的資料異動有衝突,以介面上的為主。

4. forms_ddl(‘commit’)
只針對代碼中的update、insert、delete等語句進行Commit,Form上的異動不會提交。資料異動有衝突時,依據Trigger先後順序覆蓋,例如Post-Forms-Commit中的UPDATE就會覆蓋掉介面。

2009年6月16日 星期二

[SSRS] 利用Reporting Service開發Oracle ERP 報表的注意事項

1.若是與Sharepoint整合,Server端的Oracle Client安裝目錄記得給予IIS user讀取權限,例如ASP.NET帳戶。 否則會一直告訴你Oracle Client版本要8.1.7以上。

image

2.若需要用到含OU的View(含有USERENV('CLIENT_INFO')),登入檔的NLS_LANG記得把TRADITIONAL CHINESE_TAIWAN.ZHT16BIG5改掉,一般我都習慣改成 AMERICAN_AMERICA.ZHT16BIG5。

image

Report裡需要Calll DBMS_APPLICATION_INFO.SET_CLIENT_INFO 這個Procedure,個人習慣把他放在DataSet裡執行,因為也找不到其他方法,除非放到SSIS執行,那又很麻煩。

例如我們若需要對OE_ORDER_HEADERS_V這的View做查詢,則我們第一個DataSet放入一個Procedure,執行DBMS_APPLICATION_INFO.SET_CLIENT_INFO,第二個DataSet再放入我們要的SQL,操作如下:

a.使用單一交易要勾選

image

b.新增一個DataSet,執行DBMS_APPLICATION_INFO.SET_CLIENT_INFO

image

c.參數預設值記得設定

image

d.新增報表所需要的資料SQL

image

e.設計報表

image

f.執行測試預覽,成功。

image

2009年6月4日 星期四

[Cost] MTA - ACCOUNTING_LINE_TYPE

ACCOUNTING_LINE_TYPE

1 Inv valuation
2 Account
3 Overhead absorption
4 Resource absorption
5 Receiving Inspection
6 Purchase price variance or rate variance
7 WIP valuation
8 WIP variance
9 Inter-org payables
10 Inter-org receivables
11 Inter-org transfer credit
12 Inter-org freight charge
13 Average cost variance
14 Intransit Inventory
15 Encumbrance Reversal
99 Unknown

範例

SELECT MTT.TRANSACTION_TYPE_NAME,
       MMT.TRANSACTION_DATE,
       GCC.SEGMENT1||','||GCC.SEGMENT2||','||GCC.SEGMENT3||','||GCC.SEGMENT4 ACCT,
       ROUND(SUM(NVL(MTA.BASE_TRANSACTION_VALUE,0)), 1) NET_ACTIVITY,
       ROUND(SUM(DECODE( NVL(MTA.BASE_TRANSACTION_VALUE,0) /
                         ABS(DECODE(
                                    NVL(MTA.BASE_TRANSACTION_VALUE,0),
                                    0, 1, NVL( MTA.BASE_TRANSACTION_VALUE,0  )  )), 
                  1, NVL(MTA.BASE_TRANSACTION_VALUE,0), 0 )  ), 1) SUM_DEBITS,
       ROUND(SUM(DECODE( NVL(MTA.BASE_TRANSACTION_VALUE,0) /
                         ABS(DECODE(
                                     NVL(MTA.BASE_TRANSACTION_VALUE,0),
                                     0, 1, NVL( MTA.BASE_TRANSACTION_VALUE,0  )  )), 
                 -1, NVL(ABS(MTA.BASE_TRANSACTION_VALUE),0), 0 )  ), 1) SUM_CREDITS
  FROM MTL_MATERIAL_TRANSACTIONS MMT,    
       --MTL_SYSTEM_ITEMS MSI,
       GL_CODE_COMBINATIONS GCC,
       MTL_TRANSACTION_ACCOUNTS MTA,
       MTL_TRANSACTION_TYPES MTT,
       ORG_GL_BATCHES OGB
WHERE MTA.TRANSACTION_ID = MMT.TRANSACTION_ID
   AND MMT.TRANSACTION_TYPE_ID = MTT.TRANSACTION_TYPE_ID
   --AND    MTA.INVENTORY_ITEM_ID = MSI.INVENTORY_ITEM_ID
   --AND    MSI.ORGANIZATION_ID  =  MMT.ORGANIZATION_ID
   AND MTA.REFERENCE_ACCOUNT = GCC.CODE_COMBINATION_ID
   AND MMT.ORGANIZATION_ID = MTA.ORGANIZATION_ID
   AND MTA.ORGANIZATION_ID = :P_ORG_ID
   AND MTA.ACCOUNTING_LINE_TYPE <> 15
   AND MTA.TRANSACTION_DATE BETWEEN ...
   AND OGB.GL_BATCH_ID (+) = MTA.GL_BATCH_ID
GROUP BY MTT.TRANSACTION_TYPE_NAME,
       MMT.TRANSACTION_DATE,
       GCC.SEGMENT1||','||GCC.SEGMENT2||','||GCC.SEGMENT3||','||GCC.SEGMENT4

2009年5月23日 星期六

[BOM] 正展BOM

 

在做一些成本分析時,常常會對BOM做正逆展開功能,所以就把他記錄下來,範例:
PROCEDURE xxx (IN_ORGANIZATION_ID   IN   NUMBER,
               IN_ITEM_ID           IN   NUMBER,
               IN_LEVELS_TO_EXPLODE IN   NUMBER) IS

   V_GROUP_ID               NUMBER;
   V_ERROR_MESSAGE          VARCHAR2(2000);
   V_ERROR_CODE             NUMBER;

BEGIN
   DELETE BOM_SMALL_EXPL_TEMP;

   SELECT BOM_EXPLOSION_TEMP_S.NEXTVAL
     INTO V_GROUP_ID
     FROM DUAL;
   -- 正展BOM
   BOMPXINQ.EXPLODER_USEREXIT(
           VERIFY_FLAG => 0,
           ORG_ID => IN_ORGANIZATION_ID,
           ORDER_BY => 1,
           GRP_ID => V_GROUP_ID,
           SESSION_ID => 0,
           LEVELS_TO_EXPLODE => IN_LEVELS_TO_EXPLODE, 
           BOM_OR_ENG => 1,                           
           IMPL_FLAG => 1,
           PLAN_FACTOR_FLAG => 2,
           EXPLODE_OPTION => 3,                       
           MODULE => 2,                               
           CST_TYPE_ID => 0,                          
           STD_COMP_FLAG => 2,
           EXPL_QTY => 1,                             
           ITEM_ID => IN_ITEM_ID,                     
           ALT_DESG => NULL,
           COMP_CODE => NULL,
           UNIT_NUMBER_FROM => NULL,
           UNIT_NUMBER_TO => NULL,
           REV_DATE => SYSDATE,
           SHOW_REV => 1,
           MATERIAL_CTRL => 2,
           LEAD_TIME => 2,
           ERR_MSG => V_ERROR_MESSAGE,
           ERROR_CODE => V_ERROR_CODE);
   IF V_ERROR_MESSAGE IS NOT NULL THEN
      RAISE...
   END IF;
   ...
EXCEPTION
   WHEN OTHERS THEN
        RAISE...
END;

OK,可以查詢結果看看
SELECT *
  FROM BOM_SMALL_EXPL_TEMP;

2009年5月22日 星期五

[BOM] 逆展BOM

  

procedure xxx (IN_ORGANIZATION_ID   IN  NUMBER, 
                          IN_ITEM_ID                       IN   NUMBER) is 
      ln_SEQUENCE_ID   number;
      X_char_date      varchar2(30);

   begin

       delete BOM_SMALL_IMPL_TEMP;
      -- 取 SEQUENCE
      select bom_implosion_temp_s.nextval
        into ln_SEQUENCE_ID
        from dual;

      -- 執行日期
      SELECT to_char(sysdate, 'YYYY/MM/DD HH24:MI')
        INTO X_char_date
        FROM dual;

/*     
| DESCRIPTION  : This file is a packaged procedure for the imploders.
|                This package contains 2 different imploders for the
|                single level and multi level implosion. The package
|                imploders calls the correct imploder based on the
|         # of levels to implode.
| Parameters:   org_id          organization_id
|               sequence_id     unique value to identify current implosion
|                               use value from sequence bom_small_impl_temp_s
|               levels_to_implode
|               eng_mfg_flag    1 - BOM
|                               2 - ENG
|               impl_flag       1 - implemented only
|                               2 - both impl and unimpl
|               display_option  1 - All
|                               2 - Current
|                               3 - Current and future
|               item_id         item id of asembly to explode
|               impl_date       explosion date dd-mon-rr hh24:mi
|               err_msg         error message out buffer
|               error_code      error code out.  returns sql error code
|                               if sql error, 9999 if loop detected.
|        organization_option
|                1 - Current Organization
|                2 - Organization Hierarchy
|                3 - All Organizations to which access is allowed
*/   
      -- 逆展成品
      BOMPIINQ.IMPLODER_USEREXIT (
                  sequence_id => ln_SEQUENCE_ID,
                  eng_mfg_flag => 1,              -- BOM
                  org_id => IN_ORGANIZATION_ID,
                  impl_flag => 1,                 --IMPLEMENTED_ONLY,
                  display_option => 1,            --All
                  levels_to_implode => 15,
                  item_id => IN_ITEM_ID,
                  impl_date => X_char_date,
                  unit_number_from => null,
                  unit_number_to => null,
                  err_msg => err_msg,
                  err_code => err_code,
                  organization_option => 1, 
                  organization_hierarchy => null,
                  serial_number_from => null,
                  serial_number_to => null
                  );

   end;

執行OK就可以應用BOM_SMALL_IMPL_TEMP的資料了。

[MRP] MRP連結PO的SQL

SELECT PLL.*
FROM PO_LINE_LOCATIONS_ALL PLL ,
      MRP_RECOMMENDATIONS MR,
      MRP_ITEM_PURCHASE_ORDERS MIPO
WHERE PLL.PO_LINE_ID       = MIPO.LINE_ID
  AND MR.DISPOSITION_ID    = MIPO.TRANSACTION_ID
  AND MR.ORGANIZATION_ID   = PLL.ORG_ID
  AND MR.COMPILE_DESIGNATOR   = 'XXX-MRP'

2009年2月25日 星期三

OSP 工單完工未扣投入卻有產出完成品

EBS:11.5.10.2

狀況:USER偶爾會反應OSP工單收完料後,工單狀態有完工, WIP PENDING MOVE TRANSACTIONS也沒卡住,

但是庫存有產出完成品卻沒扣掉投入品的庫存數。

之前在METALINK上LOAD過TAR,說要上 WIP的PATCH,結果測試環境的AP上完PATCH後EBS就掛了,所以就沒人趕放到正式環境。直到最近在處理幾筆PENDING的資料發現,只要利用WIP_MOVE_TXN_INTERFACE就可以解決問提了。

首先,將為扣帳的工單用SQL查出,然後再從WIP_MOVE_TRANSACTIONS_V裡把此筆工單的資料找出,Insert到WIP_MOVE_TXN_INTERFACE 重送PENDING的資料,這樣系統就會補扣投入品的庫存。

image

WIP_MOVE_TXN_INTERFACE對應的FORM

image

WIP_MOVE_TRANSACTIONS_V對應的FORM