1. 程式人生 > >INV: Transactions庫存事務處理

INV: Transactions庫存事務處理



應用:Inventory
職責:Inventory

基礎業務學習

庫存模組的核心是如實記錄入庫和出庫的品種和數量,反應庫存的當前價值。正如GL是ERP的賬務處理核心,所有模組的會計分錄,最後都要過到GL;同樣,INV是ERP的物料處理核心,所有模組的物料事務處理都要在INV中體現。採購接收入庫和退貨、銷售發運出庫和RMA退回、WIP元件發料和退回、WIP裝配件完工和退回、工廠內的倉庫庫間物品調撥、工廠間的物品調撥、低值易耗品雜項領料、盤點產生的盈虧、專案合同領料、成本更新導致的庫存價值變動、內部請購/內部銷售產生的物品轉移,這些事務雖然操作介面分散在各個模組中,但最終都要及時在庫存中做記錄,以反映企業最新的存貨數量和價值狀況。那麼這麼多種業務在庫存系統中如何區分呢?Oracle的設計思路是:用“事務處理型”來區分。

事務處理型別

事務處理型別(Type):乃“事務處理來源”、“事務處理動作”的組合;除了在庫存直接做事務處理或者通過開發Interface匯入資料外,各標準模組該用哪個“型別”,Oracle實際上是寫死的,——“來源”和“動作”當然也固定下來了。

SELECT mtp.transaction_type_id,
mtp.transaction_type_name,
mtp.transaction_source_type_id,
mtp.transaction_action_id
FROM inv.mtl_transaction_types mtp
WHERE mtp.user_defined_flag = 'N'
ORDER BY 2;

事務處理來源(Source):類似總賬的Journal Source,系統的各標準模組,都有各自的Source程式碼,由此得以區分各模組資料,如Source“Job or Schedule”代表WIP的庫存事務。

SELECT tst.transaction_source_type_id, tst.transaction_source_type_name
FROM inv.mtl_txn_source_types tst
WHERE tst.user_defined_flag = 'N';

事務處理動作(Action):Source僅區分出來源模組,並未標誌到底發生了什麼動作——入庫還是出庫。為此Oracle引入了“事務處理動作”,並且對出入庫進行了更加細緻的劃分,這個實際上才是系統內部區分庫存事務的關鍵程式碼,如Action“Assembly completion”代表WIP完工入庫。Action不允許自定義!

SELECT lov.lookup_code, lov.meaning
FROM mfg_lookups lov
WHERE lookup_type = 'MTL_TRANSACTION_ACTION'
ORDER BY 1;

此外,為更好的進行追溯和查詢,庫存系統還把相關模組的單據ID保留在inv.mtl_material_transactions.transaction_source_id欄位上。

核心邏輯:庫存組織用來遮蔽各類製造資料,Item/BOM/Routing等定義在庫存組織上,WIP/MRP等跑在庫存組織上;而庫存事務處理則以子庫為中心,要麼從某個子庫出,要麼從某個子庫入;每個子庫可以啟用貨位,也可以不啟用,如果啟用了,則事務處理時還必須選擇貨位。在不同的庫存內,子庫程式碼可以重複;在不同的子庫內,貨位程式碼也可以重複。
也就是說,Oracle僅僅是提供了這樣的一個模型,至於如何和實際業務對應,就非常靈活了。比如:庫存是個組織的概念,其比較“虛”,可指一個工廠或者獨立的辦事處、分公司這樣的實體;而子庫則通常代表一個真正的物理倉庫,也可指倉庫或車間的一塊區域,還可以是虛擬的;貨位可用來代表倉庫的某一處空間或者貨架,也可指車間的一個塊區域。

仍然站在庫存立場看,Oracle的核心邏輯是這樣的:
1、 反向:各個庫存組織出、入庫所產生的會計分錄,根據這個“關係鏈”,傳到相應的SOB,即僅僅是財務關係。
2、 正向:SO和PO接收入庫、發貨時,除Drop Ship外,必須選本OU下的庫存組織。

批次控制

批次控制:入庫、出庫均需通過“批次/序列”指定批次,以此可跟蹤每批物料流轉資訊和現有量,達到批次追蹤的目的。

入庫時可以指定一個新批次,或者一個已存在的批次,來表示數量合併,這個比較好理解;出庫實際也是這樣,系統並未限制在出庫時必須選擇已存在的批次,如果允許負庫存,我們也可以指定一個新批次。

庫存雜項、子庫轉移、組織間轉移、採購或RMA接收入庫/退貨時、WIP投料/退料或者完工/退回時、SO保留/挑庫或者出庫、甚至盤點,因為都包含“入庫、出庫”動作,所以也需要指定批次,規則同上。

是否啟用批次控制,是在Item屬性上設定,改變的前提是該Item無現有量。至於批次號的產生方式、唯一性控制層次,均可設為按組織或按Item。

遺憾的是WIP投料和產出的批次是斷開的,不通過開發,標準功能無法追蹤。比如投入物料A,其中01批10個、02批20個,最後產出物料B共30個,這樣就沒法區分到底哪
些B是由01生產的,哪些B是由02批生產的,除非WIP每次生產一個B。

N: INV/Onhand, Availability/Lots可用來檢視所有批次資訊:批次號、保質期、是否有效、每個批次經歷的事務處理、Onhand。

保質期控制方式在Item屬性上定義:無、固定天數、輸入批次時輸入。過期的批次,不能保留,MRP計劃、最大最小和重訂貨點庫存計劃也不考慮其數量,但其他地方照樣可以用。

批次失效後,僅僅影響入庫操作時,“批次”Lov不顯示該批次。

WIP自動投料時(Backflush),會根據WIP引數上設定的方法自動選擇批次。

序列號控制

與批次不同,有多少個單位的Item,就需要多少個序列號,兩者是一一對應關係;序列號控制的另一層含義則是,事務處理量必須是主單位的整數倍。可在三個時點產生序列號:
1、 SO發貨時:僅在SO Ship Confirm時,通過“批次/序列”介面輸入序列號,其他任何事務處理都不需要指定序列號。特殊情況是,做RMA接收需要指定和原始發貨一致的序列號。
2、 INV收貨時:在PO Receipt或其他途徑入庫時,通過“批次/序列”介面輸入序列號,之後做任何出庫事務處理都需要指定序列號,而且必須選擇已有的序列號。注:批次只能在入庫時指定,但序列號可以在接收時就指定。
3、 預先生成:首先物料屬性或者組織引數一定要指定字首和起始編號,其次要用“生成序列號”請求為該物料預先生成一定數量的序列號;入庫時,通過“批次/序列”介面輸入序列號,之後做任何出庫事務處理都需要指定序列號,而且必須選擇已有的序列號。
4、 無控制:任何時候都不需要指定序列號。

序列號的控制方式,是在Item屬性上設定。如果要改變,除非是從1變為4或2變成3,其它情況要求該Item無現有量。至於批次號的產生方式、唯一性控制層次,均可設為按組織或按Item。

N: INV/Onhand, Availability/Serial Numbers可用來檢視所有序列號資訊:序列號、狀態、接收日期/發運日期、供應商、批次、每個序列號經歷的事務處理、Onhand。

狀態有:生成但未使用(Defined but not used)、在庫存中(Resides in stores)、已發出(Issued out of inventory)、在途(Resides in intransit)。此外,因為序列號和Item是一一對應的,所以有序列號的物料也叫Serialized Item。

貨位控制

貨位控制:入庫、出庫均需在輸入子庫後再指定貨位。貨位的產生有兩種方式:

1、 做庫存相關事務處理(含SO保留,不含PO接收,下同)時指定,即動態錄入。
2、 必須先設定好子庫-貨位的關係,做庫存事務處理時只能選擇子庫下已有的貨位。

單位、單位轉換

每個物料都設有主單位,如“千克”,但是實際做出入庫操作、做PO和SO,可能採用其它單位,比如大宗採購用“噸”更為合適,這個叫事務處理單位。

不過系統最終計算,都是先轉成主單位後進行,比如銷售成本計算如下:

銷售數量 * 事務單位與主單位的轉換率 * 每主單位的成本

實際上,Oracle的物料事務相關表中,基本都有3個欄位:事務數量、事務單位、主數量。
貨位控制通常在子庫引數上設定,這裡的優先順序比Item屬性上的高。

庫存成本分錄

庫存事務處理的會計分錄,本質都是出庫、入庫的分錄,所以借貸的一方總是庫存5大科目,另一方——對方科目,則視具體Action而定。參見“CST: Item Cost”章節的“成本分錄”。

相關推薦

INV: Transactions庫存事務處理

 應用:Inventory 職責:Inventory 基礎業務學習 庫存模組的核心是如實記錄入庫和出庫的品種和數量,反應庫存的當前價值。正如GL是ERP的賬務處理核心,所有模組的會計分錄,最後都要過到GL;同樣,INV是ERP的物料處理核心,所有模組的物料事務處理都要在

詳解EBS介面開發之庫存事務處理-物料批次匯入

庫存事務處理-物料批次匯入 --系統批次表 SELECT * FROM MTL_LOT_NUMBERS T; --API建立批次 inv_lot_api_pub.create_inv_lot(x_return_status => l_return_status,

財務事務處理,銷售訂單,庫存事務處理,AP應付關聯語句

select cus.customer_number,              cus.customer_name,              ood.ORGANIZATION_CODE,                         mmt.subinventory

Sybase ASE的XA Transactions(分散式事務處理)

ASE支援分散式事務處理,需要一些額外配置。Using XA resources with Adaptive Server EnterpriseTo use XA resources with an Adaptive Server Enterprise 12.0 or lat

詳解EBS介面開發之庫存事務處理採購接收和退貨

3.2   接收&退貨匯入api說明 此程式是呼叫標準API的客戶化程式,實現處理處理接收&退貨,處理方式有三種,聯機,立即,和批,具體資訊使用可以參考程式中的註釋 (五)接收&退貨匯入併發程式研究 4.1   匯入的併發請求 fnd_request.submit

INV 除錯: 如何獲取庫存物料事務處理除錯資訊

 1. 按如下方式設定系統配置檔案值: 系統配置檔案值 地點/使用者/應用/職責層配置檔案值 --彙總 FND: 啟用除錯日誌   是 FND:除錯日誌層級   陳述 INV: 除錯跟蹤: 是 INV:除錯層級:10 INV:除錯檔案:/usr/tmp/invdebu

C#事務處理(三)之Transactions事務

自.NET 2.0以來增加了System.Transactions名稱空間,為.NET應用程式帶來了一個新的事務程式設計模型。 這個名稱空間提供了幾個依賴的TransactionXXX類。Transaction是所有事務處理類的基類,並定義了所有事務類可以

PDO中的事務處理

ech cti dbm 開始 on() exec image 相關 use 基本原理和步驟其實都是一樣的(可參看上一篇“MySQL的事務處理”),PDO中的事務處理就是調用PDO對象的三個方法: 開啟事務:beginTransaction 回滾操作:rollBack 執行操

mysql事務處理

特殊 oot count-1 names 系列 種類 date ins 包括 MySQL的事務支持不是綁定在MySQL服務器本身,而是與存儲引擎相關1.MyISAM:不支持事務,用於只讀程序提高性能 2.InnoDB:支持ACID事務、行級鎖、並發 3.Berkeley

Spring 事務配置實戰(一):過濾無需事務處理的查詢之類操作

log pla ssi pan spl tail gif aop img <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes

MySQL : 事務處理

int pre 開啟事務 特點 nbsp rollback code margin 數據 【事務】一組SQL語句操作單元,組內所有SQL語句,完成一個業務。 若整組成功,意味著組內的全部操作都成功; 反之,若其中任何一條語

springBoot(14):使用SQL關系型數據庫-事務處理

springboot springboot事務處理 一、事務的四個特性(ACID)原子性(Atomicity): 事務是一個原子操作,由一系列動作組成。事務的原子性確保動作要麽全部完成,要麽完全不起作用。一致性(Consistency): 一旦事務完成(不管成功還是失敗),系統必須確保它所建模的業務處

分布式事務處理基本原理

分布式系統 保存 idt 用戶 新的 標準 nbsp 對數 兩個 事務是有一系列對系統中數據進行訪問與更新的操作組成的一個基本的程序邏輯執行單元。引入事務的概念有兩個目的,第一,事務對多個並發訪問的應用程序進行隔離,防止彼此幹擾,第二,事務為數據庫操作序列提供了一個失敗回復

PDO 事務處理

intra fec catch 賬號 soft transacti align () 拋出異常 <?php header(‘content-type:text/html;charset=utf-8‘); try{ //最後是關閉自動提交 $pdo=new pdo("

ADO.NET事務處理

message sch mit col 否則 數據庫連接 conn png back 執行ADO.NET事務包含四個步驟 以SqlTransaction對象為例介紹: 1)調用SqlConnection對象的BeginTransaction()方法,創建一個SqlTra

PHP與MYSQL事務處理

舉例 database 相同 bsp 幾分鐘 acl exists 細節 data PHP與MYSQL事務處理 $conn = mysql_connect(‘localhost‘,‘root‘,‘root‘) or die ("數據連接錯誤!!!"); mysql_

分布式系統的事務處理

1年 2009年 網絡請求 存儲 分配 對數 cap理論 判斷 種類 當我們在生產線上用一臺服務器來提供數據服務的時候,我會遇到如下的兩個問題: 1)一臺服務器的性能不足以提供足夠的能力服務於所有的網絡請求。 2)我們總是害怕我們的這臺服務器停機,造成服務不可用或是數據丟失

【轉】錯誤: ORA-01591: 鎖被未決分布式事務處理 7.2.428982 持有--解決方案

link trying 清除 fault locked fail 自動 針對 阻止 SQL 錯誤: ORA-01591: 鎖被未決分布式事務處理 7.2.428982 持有 01591. 00000 - "lock held by in-doubt distribute

MySQLi面向過程實踐---事務處理

target param mysql fin cal 存儲引擎 roo 進行 div 數據庫的事務處理參見另一篇博客,用PDO實現,和MySQLi操作幾乎沒有差別,地址是http://www.cnblogs.com/-beyond/p/7551177.html 註意要進行事

MySQLi面向對象實踐---事務處理

操作 begin cep fin 代碼 code except 處理 ini 在看這篇博客的時候,如果你有什麽疑惑嗎,可以參照一下這兩篇博客 MySQLi面向過程實踐---事務處理http://www.cnblogs.com/-beyond/p/7577232.html P