今天,我想實現一個東西,我想透過Oracle sequecne 功能,實現User想要的sequence給號。我的需求是每年度要重新給號,實現這個功能,我們可以用DB sequence,設定recycle,但我想做的是透過設定,每個不同的帳本,可以依照自己想要的編碼方式取得想要的號碼,就像GL的sequence一樣。
不囉嗦,就來看我怎麼實現囉…..
Oracle ERP version : 11.5.10.2
首先我要讓我的客製Table在Oracle Document Category可以選擇的到,於是我必須先將我的Table 註冊到Oracle Database Table中....請先參考<How to register table into Oracle ERP applicaiton> 文章。
接著,我們就去註冊我的專屬的Category Code吧
1. Create new document categories
- Responsibility : System Administrator (或者是其他模組的super user 權限)
- Navigator : Application > Document > Categories
2. Create new document sequence
3. Assign sequence to new category
如何取得下一個Sequence 號碼呢? 使用標準的library
FND_SEQNUM.GET_NEXT_SEQUENCE( APPID => 20003 -- application_id
, CAT_CODE => 'XXDII_INVOICE' – category_code
, SOBID => 7 -- Set of book id
, MET_CODE => 'A' -- Automatically / Manual
, TRX_DATE => SYSDATE – Transaction Date
, DBSEQNM => DOCSEQ_VAL
, DBSEQID => DOCSEQ_ID );
好處:不需要依照不同Site的編碼需求修改自己客製程式,依照需求設定。
之前用過的方式大約有兩種
1. 是建客製表格, 記錄目前已用的最大號碼, 取用時(注意session與lock)加一號, 特定期末把他設為1 (或新增一組生效日在新期間期初的.. 從1開始)..
2. 用 DB Sequence, 那麼不太需要管空 session和 lock... DB會處理好... 唯一問題是下一期要從1開始的問題.... 這邊需要點小技巧, sequence設定為 cycle的, 在期末時把它指定取到最大號.. 接下來下一期期初再取用, 就會從1開始..
我有 Oracle ERP 的問題想請教妳
不知是否方便留個信箱呢?
謝謝