2011年12月30日 星期五

Oracle ERP R12. <經驗分享> Import WO warning.

一般透過INTERFACE 執行WO Import時,若有資料欄錯誤,則其系統都會在interface或其它的error table內紀錄錯誤欄位及原因。但WIP_JOB_SCHEDULE_INTERFACE可能有種狀況就是沒有很明確的顯示原因,這時請檢查一下,若你要import的WO狀態是Released,則其Inventory period必需是Open的。但若是Unreleased狀態則不會卡。
<以上純屬個人經驗,若有錯誤還請不吝指教~>

2011年12月28日 星期三

Oracle ERP R12 - 帳號密碼檢查FUNCTION

FND_WEB_SEC.VALIDATE_LOGIN(:USER_ACCOUNT,:PASSWORD)

其回傳值為:
Y ==> 帳號密碼正確
N ==> 帳號或密碼不正確

2011年12月20日 星期二

Oracle ERP R12. 刪除已存在資料Document Sequence

因為Oracle ERP 的Document Sequence一經設定就不予許刪除重指定,故若傳票編碼設定後就不能修改.但現實狀況裡,可能遇到期初的思慮不週導致後來需要變更Document sequence assign之狀況.
以下文章為顧問公司所提供之Document Sequence刪除的建議步驟:

※以下針對已Assignment Document Sequence做刪除,若僅define Document Sequence並未Assign給任何Category並需要刪除者,處理3. DROP DATABASE SEQUNCE 4. DELETE SEQUENCE DEFINE TABLE(第3步的DATABASE SEQUENCE應該還未建立)

Step 1. 資料備份
CREATE TABLE AP_DOC_SEQUENCE_AUDIT_BK AS
SELECT *
FROM AP_DOC_SEQUENCE_AUDIT;

CREATE TABLE AR_DOC_SEQUENCE_AUDIT_BK AS
SELECT *
FROM AR_DOC_SEQUENCE_AUDIT;

CREATE TABLE FND_DOC_SEQUENCE_AUDIT_BK AS
SELECT *
FROM FND_DOC_SEQUENCE_AUDIT;

CREATE TABLE GL_DOC_SEQUENCE_AUDIT_BK AS
SELECT *
FROM GL_DOC_SEQUENCE_AUDIT;

CREATE TABLE FND_DOC_SEQUENCE_ASSIGNS_BK AS
SELECT *
  FROM FND_DOC_SEQUENCE_ASSIGNMENTS;

CREATE TABLE FND_DOCUMENT_SEQUENCES_BK AS
SELECT *
FROM FND_DOCUMENT_SEQUENCES;

Step 2. 刪除Audit table
/*  若已經部份用舊編號,以新的sequence update回各table(ex: RA_CUSTOMER_TRX_ALL, AP_INVOICES_ALL...)  doc_sequence_id, doc_sequence_value 之後,
      要將audit table刪除,再補(insert into )新的 document_sequence_value, doc_sequence_id, doc_sequence_assignment_id 資料, 以避免相關的 "Audit Report xxxx" 標準報表錯誤.
*/
<AP Document Number 記錄檔 : 
  包括 AP 立帳, AP 付款>
DELETE 
FROM AP_DOC_SEQUENCE_AUDIT   adsa
WHERE 1=1
AND EXISTS
(
SELECT 'X'
  FROM FND_DOC_SEQUENCE_ASSIGNMENTS fdca 
 WHERE 1=1
   AND fdca.set_of_books_id             =  :p_set_of_books_id -- ledger_id 
   AND fdca.application_id              =  nvl(:p_application_id , fdca.application_id)  -- 101: gl ; 200: ap ; 222: ar  ; 660 : om   
   AND trunc(fdca.start_date)          >=  trunc(:p_start_date)
   AND trunc(fdca.end_date)            <=  trunc(:p_end_date) 
   AND fdca.doc_sequence_id             =  adsa.doc_sequence_id
   AND fdca.doc_sequence_assignment_id  =  adsa.doc_sequence_assignment_id 
);

<AR Document Number 記錄檔 : 包括AR 立帳, AR收款, AR ADJUSTMENT>
DELETE 
FROM AR_DOC_SEQUENCE_AUDIT  adsa
WHERE 1=1
AND EXISTS
(
SELECT 'X'
  FROM FND_DOC_SEQUENCE_ASSIGNMENTS fdca 
 WHERE 1=1
   AND fdca.set_of_books_id             =  :p_set_of_books_id   -- ledger_id 
   AND fdca.application_id              =  nvl(:p_application_id , fdca.application_id)  -- 101: gl ; 200: ap ; 222: ar  ; 660 : om   
   AND trunc(fdca.start_date)          >=  trunc(:p_start_date)
   AND trunc(fdca.end_date)            <=  trunc(:p_end_date) 
   AND fdca.doc_sequence_id             =  adsa.doc_sequence_id
   AND fdca.doc_sequence_assignment_id  =  adsa.doc_sequence_assignment_id 
);

<FND Document Number 記錄檔 : 
  包括 OM SALES ORDER NUMBERING , WSH 出貨DELIVERY NUMBERING>
**(若只要刪除 AR/AP 代傳票 以及 GL 傳票 序號, 此一 SCRIPT 不要執行!)**
DELETE 
FROM FND_DOC_SEQUENCE_AUDIT   fdsa
WHERE 1=1
AND EXISTS
(
SELECT 'X'
  FROM FND_DOC_SEQUENCE_ASSIGNMENTS fdca 
 WHERE 1=1
   AND fdca.set_of_books_id             =  :p_set_of_books_id   -- ledger_id 
   AND fdca.application_id              =  nvl(:p_application_id , fdca.application_id)  -- 101: gl ; 200: ap ; 222: ar  ; 660 : om   
   AND trunc(fdca.start_date)          >=  trunc(:p_start_date)
   AND trunc(fdca.end_date)            <=  trunc(:p_end_date) 
   AND fdca.doc_sequence_id             =  fdsa.doc_sequence_id
   AND fdca.doc_sequence_assignment_id  =  fdsa.doc_sequence_assignment_id 
);

<GL Document Number 記錄檔 :  
  傳票序號>
DELETE 
FROM GL_DOC_SEQUENCE_AUDIT  gdsa
WHERE 1=1
AND EXISTS
(
SELECT 'X'
  FROM FND_DOC_SEQUENCE_ASSIGNMENTS fdca 
 WHERE 1=1
   AND fdca.set_of_books_id             =  :p_set_of_books_id   -- ledger_id 
   AND fdca.application_id              =  nvl(:p_application_id , fdca.application_id)  -- 101: gl ; 200: ap ; 222: ar  ; 660 : om   
   AND trunc(fdca.start_date)          >=  trunc(:p_start_date)
   AND trunc(fdca.end_date)            <=  trunc(:p_end_date) 
   AND fdca.doc_sequence_id             =  gdsa.doc_sequence_id
   AND fdca.doc_sequence_assignment_id  =  gdsa.doc_sequence_assignment_id 
);

<DROP DATABASE SEQUNCE : 
  產生的SCRIPT , 再丟到 SQL*PLUS 執行 > 
SELECT 'DROP SEQUENCE APPLSYS.' ||  fds.DB_SEQUENCE_NAME || ';' DROP_SCRIPT, fds.*
  FROM FND_DOCUMENT_SEQUENCES   fds
 WHERE 1=1
   AND fds.application_id        =  nvl(:p_application_id , fds.application_id)  -- 101: gl ; 200: ap ; 222: ar  ; 660 : om  
   AND (
         upper(:p_only_arapgl)   =  'N'        OR
         ( upper(:p_only_arapgl) =  'Y'        OR
           fds.application_id   IN  ( 101, 200, 222 )   -- 101: gl ; 200: ap ; 222: ar 
         )
       ) 
   AND trunc(fds.start_date)    >=  trunc(:p_start_date)
   AND trunc(fds.end_date)      <=  trunc(:p_end_date) 
   AND fds.DB_SEQUENCE_NAME     is  NOT NULL
   AND EXISTS    ----指定帳本, 以避免將所有的 DB SEQUENCE都DROP 掉
       (
         SELECT 'X'
           FROM FND_DOC_SEQUENCE_ASSIGNMENTS fdca 
          WHERE 1=1
            AND fdca.set_of_books_id             =  :p_set_of_books_id   -- ledger_id  
            AND fdca.doc_sequence_id             =  fds.doc_sequence_id 
       );

<DELETE SEQUENCE DEFINE TABLE : 
  先刪此一TABLE, 因為FND_DOC_SEQUENCE_ASSIGNMENTS TABLE 才能判別 帳本 (SET_OF_BOOKS_ID)>
DELETE 
  FROM FND_DOCUMENT_SEQUENCES fds
 WHERE 1=1   
   AND fds.application_id        =  nvl(:p_application_id , fds.application_id)  -- 101: gl ; 200: ap ; 222: ar  ; 660 : om  
   AND (
         upper(:p_only_arapgl)   =  'N'        OR
         ( upper(:p_only_arapgl) =  'Y'        OR
           fds.application_id   IN  ( 101, 200, 222 ) -- 101: gl ; 200: ap ; 222: ar 
         )
       ) 
   AND trunc(fds.start_date)    >=  trunc(:p_start_date)
   AND trunc(fds.end_date)      <=  trunc(:p_end_date) 
   AND fds.NAME                  =  nvl(:p_sequence_name, fds.NAME) 
   AND EXISTS    --指定帳本, 以避免將所有的 DB SEQUENCE都DROP 掉
       (
         SELECT 'X'
           FROM FND_DOC_SEQUENCE_ASSIGNMENTS fdca 
          WHERE 1=1
            AND fdca.set_of_books_id             =  :p_set_of_books_id   -- ledger_id  
            AND fdca.doc_sequence_id             =  fds.doc_sequence_id 
       );

<DELETE SEQUENCE ASSIGNMENTS TABLE>  
DELETE
  FROM FND_DOC_SEQUENCE_ASSIGNMENTS fdca 
 WHERE 1=1 
   AND fdca.set_of_books_id             =  :p_set_of_books_id   -- ledger_id 
   AND fdca.application_id              =  nvl(:p_application_id , fdca.application_id)  -- 101: gl ; 200: ap ; 222: ar  ; 660 : om   
   AND trunc(fdca.start_date)          >=  trunc(:p_start_date)
   AND trunc(fdca.end_date)            <=  trunc(:p_end_date)  
   AND (
         upper(:p_only_arapgl)    =  'N'        OR
         ( upper(:p_only_arapgl)  =  'Y'        OR
           fdca.application_id   IN  ( 101, 200, 222 )   -- 101: gl ; 200: ap ; 222: ar 
         )
       )






2011年12月14日 星期三

Oracle Discoverer - 開啟Discoverer Desktop出現Failed to update the system registry

因為Microsoft 在windows 2000以後的版本,有對regedit (註冊表),進行權限的控管,故可能造成Desktop在執行時無法順利的變更其regedit值,故常會在開啟Desktop時出現錯誤訊息"Failed to update the system registry",不過就我的經驗似乎也沒有多大的影响,報表一樣可以正常開發。但總是覺得不完美,故上Meta link找了一下,總於找到相關的解決文件:


Doc ID : ID 197716.1

其主要的解法如下:
Step 1. 執行regedit 
Step 2. 將以下機碼的權限予以適當的授權 (本人是給Users這群組)
Grant full control privilege on the following registry to Users group:
HKEY_LOCAL_MACHINE\Software\Oracle 
HKEY_LOCAL_MACHINE\Software\Classes\.DIS 
HKEY_LOCAL_MACHINE\Software\Classes\Dis.Document 
HKEY_LOCAL_MACHINE\Software\Classes\Discoverer.Application 
HKEY_LOCAL_MACHINE\Software\Classes\DIS 
HKEY_LOCAL_MACHINE\Software\Classes\CLSID

2011年12月12日 星期一

Oracle Discoverer - 如何查詢Discoverer報表之授權

SQL 如下:


SELECT 'USER' ASSIGN_TYPE,
       CASE
         WHEN TRUNC(SYSDATE) BETWEEN FU.START_DATE AND
              NVL(FU.END_DATE, TRUNC(SYSDATE)) THEN
          FU.USER_NAME
         ELSE
          EEU.EU_USERNAME
       END ASSIGN_TO,
       FU.DESCRIPTION ASSIGN_TO_DESCRIPTION,
       ED.DOC_NAME REPORT_NAME,
       ED.DOC_DESCRIPTION REPORT_DESCRIPTION
  FROM EUL10_US.EUL5_EUL_USERS    EEU,
       EUL10_US.EUL5_ACCESS_PRIVS EAP,
       EUL10_US.EUL5_DOCUMENTS    ED,
       FND_USER                   FU
 WHERE EAP.GD_DOC_ID = ED.DOC_ID
   AND EAP.AP_EU_ID = EEU.EU_ID
   AND EEU.EU_ROLE_FLAG = 0 --By User
   AND TO_CHAR(FU.USER_ID) = SUBSTR(EEU.EU_USERNAME, 2)
UNION ALL
SELECT 'RESPONSIBILITY' ASSIGN_TYPE,
       CASE
         WHEN TRUNC(SYSDATE) BETWEEN R.START_DATE AND
              NVL(R.END_DATE, TRUNC(SYSDATE)) THEN
          R.RESPONSIBILITY_NAME
         ELSE
          EEU.EU_USERNAME
       END USER_NAME,
       R.DESCRIPTION,
       ED.DOC_NAME,
       ED.DOC_DESCRIPTION
  FROM EUL10_US.EUL5_EUL_USERS    EEU,
       EUL10_US.EUL5_ACCESS_PRIVS EAP,
       EUL10_US.EUL5_DOCUMENTS    ED,
       FND_RESPONSIBILITY_VL      R
 WHERE EAP.GD_DOC_ID = ED.DOC_ID
   AND EAP.AP_EU_ID = EEU.EU_ID
   AND EEU.EU_ROLE_FLAG = 1 --By Responisbility
   AND TO_CHAR(R.RESPONSIBILITY_ID) =
       SUBSTR(EEU.EU_USERNAME, 2, INSTR(EEU.EU_USERNAME, '#', 1, 2) - 2)
   AND TO_CHAR(R.APPLICATION_ID) =
       SUBSTR(EEU.EU_USERNAME, INSTR(EEU.EU_USERNAME, '#', 1, 2) + 1);

2011年12月4日 星期日

Oracle DBA(11g) - 如何關閉SQL Tuning Advisor功能

因Oracle 11g所提供之SQL Tuning Advisor功能,仍存在以下Bug,故其會一直產生下文的Alert log,故有些DBA顧問公司會建議在Patch提供之前先行停用功能。以下為停用的指令供各位參考。

狀況:

----- PL/SQL Call Stack -----
 object      line  object
 handle    number  name
700000027223ab8     11774  package body SYS.DBMS_SQLTUNE_INTERNAL
70000003f8f5ed0         7  SYS.WRI$_ADV_SQLTUNE
70000001c3c1510       545  package body SYS.PRVT_ADVISOR
70000001c3c1510      2613  package body SYS.PRVT_ADVISOR
7000000119b7d38       241  package body SYS.DBMS_ADVISOR
700000037884030       772  package body SYS.DBMS_SQLTUNE
7000000273b1bd0         4  anonymous block

請參考metalink文件 11732364  , 9954040

指令步驟:
Step 1. 以SYSDBA角色登入Database
Step 2. 檢查系統參數
SQL> show parameter pack

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
control_management_pack_access       string      DIAGNOSTIC+TUNING      --> 目前的值

Step 3. 關閉Tuning功能
SQL> alter system set control_management_pack_access="DIAGNOSTIC";   -->   把 TUNING 關掉

2011年12月1日 星期四

Oracle ERP R12. EBS+Discoverer Multi-Org應用(1)

有鑑於本身在開發Discoverer常遇到要By ORGANIZATION_ID控制存取權限之問題。故分享本人的做法。

條件說明:
1. Discoverer Viewer/Plus登入權限是結合Oracle ERP EBS認證(即不是用DB Account來認證)
2. 開發之報表只能是assign給Inventory level的RESPONSIBILITY(即有做assign org的)
3. 資料來源(Folder)必需是Customer SQL.(不能是From database...)

做法及原理:
1. 因為登入時是同EBS結合,故其會要求是用那一RESPONSIBILITY的角色登入。此時Oracle便會在DB 的Global變數內戴入Profile的設定及紀錄現行的RESPONSIBILITY。
2. 因為該RESPONSIBILITY有做assign org,故只要在資料來源的SQL加入限制即可。
範例如下:

2011年11月22日 星期二

Oracle ERP R12. Mass Closs of Purchasing Documents(大量Close PO)

因為有些公司的採購人員未能有效的針對PO進行關結動作,導致長時間下來累積了大量的未結PO,此時就會需要進行大量PO的Close動作。但是若由Puchase Order Summary來執行Close動作則需要一筆一筆的關。該狀況下就會用到以下Concurrent Request了 (Ps : 據說是R12以後版本才提供的)

路徑 : PO模組
程式名稱 : Mass Closs of Purchasing Documents

Oracle ERP R12. (PAC成本制)PO收貨匯率與立帳匯率差異對於成本的影響

<情境設定>
PO : USD1$
PO匯率型態 : User Rate ==> 27
User Rate Vs. 三旬匯率

<分析>

 立帳,收料日同月份說明Rate立帳,收料日同月份跨月才立帳說明
收料Dr 待驗存貨   TWD$27
   Cr應付暫估 TWD$27
匯率固定不會變,
同PO
28RATE DATE :28
Dr 待驗存貨   TWD$28->29
   Cr應付暫估 TWD$28
   Cr IPV           TWD$1
(PAC3支程式後才會改29)
上月
Dr 待驗存貨   TWD$28
   Cr應付暫估 TWD$28
Rate Date預設為收料當天,可自行修改,但不會自動與變更後的收料日同步
入庫Dr 存貨           TWD$27
   Cr待驗存貨  TWD$27
  Dr 存貨           TWD$28->29
   Cr待驗存貨  TWD$28->29
上月或本月
Dr 存貨           TWD$28
   Cr待驗存貨  TWD$28
待驗存貨跟著收料跑,跨月存貨成本將不含匯差這麼說比較恰當: 收料時待驗存貨立帳多少, 入庫時的存貨科目就轉多少。
AP立帳Dr應付暫估 TWD$27
Dr 未實現匯兌差TWD$2
  Cr AP應付帳款 TWD$29
可變更匯率型態29Dr應付暫估 TWD$28
Dr 未實現匯兌差TWD$1
  Cr AP應付帳款 TWD$29
Dr應付暫估 TWD$28
Dr 未實現匯兌差TWD$1
  Cr AP應付帳款 TWD$29
可變更匯率型態,同收料匯率.為避免未實現匯兌差,
可修改立帳時的Rate Date,或用User指定匯率.

R12 PAC對於AP立帳與收貨之間匯率差異造成的價差,記在IPV科目,會造成AP是'未實現匯兌損益' 但 PAC是IPV科目而無法對沖。
但, 一般發票與採購單價差異, 收貨與立帳同月份的情況下, AP與PAC都是做IPV科目,在總帳可以Netting對沖掉。
付款Dr AP應付帳款  TWD$29
Dr 已實現匯兌差TWD$1
  Cr 現金or銀存 TWD$30
 30Dr AP應付帳款  TWD$29
Dr 已實現匯兌差TWD$1
  Cr 現金or銀存 TWD$30
Dr AP應付帳款  TWD$29
Dr 已實現匯兌差TWD$1
  Cr 現金or銀存 TWD$30
 

2011年11月20日 星期日

Oracle ERP R12. Check EBS timeout - SQL

分享由SQL來查詢各SESSION TIMEOUT的SQL :

SELECT A.DISABLED_FLAG,
       USER_NAME,
       SESSION_ID,
       LIMIT_CONNECTS,
       COUNTER,
       ROUND((SYSDATE - LAST_CONNECT) * 24 * 60) MINS_IDLE,
       TO_CHAR(FIRST_CONNECT, 'YYYY/MM/DD HH24:MI:SS') START_TIME,
       TO_CHAR(SYSDATE, 'YYYY/MM/DD HH24:MI:SS') CURRENT_TIME,      
       FND_PROFILE.VALUE_SPECIFIC('ICX_SESSION_TIMEOUT',
                                  A.USER_ID,
                                  A.RESPONSIBILITY_ID,
                                  A.RESPONSIBILITY_APPLICATION_ID,
                                  A.ORG_ID,
                                  NULL) TIMEOUT_MINS,
       LAST_CONNECT,
       TO_CHAR(LAST_CONNECT +
       (FND_PROFILE.VALUE_SPECIFIC('ICX_SESSION_TIMEOUT',
                                  A.USER_ID,
                                  A.RESPONSIBILITY_ID,
                                  A.RESPONSIBILITY_APPLICATION_ID,
                                  A.ORG_ID,
                                  NULL)/(24*60)),'YYYY/MM/DD HH24:MI:SS') TIMEOUT_TIME
  FROM ICX_SESSIONS A, FND_USER B
 WHERE A.USER_ID = B.USER_ID
   AND B.USER_NAME NOT IN ('GUEST','SYS','SYSTEM','SYSADMIN')
   AND SYSDATE > (LAST_CONNECT +
       (FND_PROFILE.VALUE_SPECIFIC('ICX_SESSION_TIMEOUT',
                                  A.USER_ID,
                                  A.RESPONSIBILITY_ID,
                                  A.RESPONSIBILITY_APPLICATION_ID,
                                  A.ORG_ID,
                                  NULL)/(24*60)))
   AND A.LAST_CONNECT > SYSDATE - 1
   AND A.DISABLED_FLAG = 'N';

2011年11月17日 星期四

Oracle ERP R12. <文章分享>Pending Transaction處理

有鑑於諸多pending transaction可能無法直接在畫面上re-submit,而需直接更新資料庫(Data fix)。其Oracle white paper有詳盡說明,個人認為此份文件寫得不錯,提供各位參考。
"Resolving Period Close Pending Transaction.pdf"

2011年11月16日 星期三

Oracle ERP R12. 如何於View Output將資料導向Excel

在之前的一篇文章"Oracle ERP R12. - 設定Viewe Output可以輸出至Excel" 中有提到,如何設定Report output可以由那些應用程式來開啟. 今天就運用同樣的道理來將Oracle 標準的Text報表導至Excel內.

主要原因有如下:
1. 若直接將Text File由Excel打開,則其每行資料會視同同一資料欄,其仍需要user手動做"資料剖析"的動作.(將資料分欄).
2. 若有些Oracle Standard Report是可以直接拿來用的,但是user又希望直接導至Excel後自行整理分析. (標準的View output==>Copy files會由Browser打開,則user要另存文字檔再轉Excel)
3. 不想使用Discoverer 或 用XML Templete (BI)的情況

原理:
1. 將Oracle Standard Report的Output format由Text改成XML. (將資料予以正規化)
例 : Journal Entry Reserve Ledger Report ==> 改為XML輸出 ==> 建議另存一個Program


2. 設定Viewer Options ==> 加入XML可以用Excel來開啟 (透過Excel來自動剖析資料成表格型態)

實際執行報表看結果
(記得選用Excel來開啟)



請選XML表格
結果呈現




Ps : 其它的應用就看各位先進如何利用現有的應用程式功能來開啟檔案了~~


2011年11月13日 星期日

Oracle ERP R12. 如何複製Periodic Average Cost至Standard Cost

【資料結構差異】
1.      標準成本類的Cost Type(Ex: PendingFrozen…)都是By Organization;但PACLegal Entity層級可以跨Organizations的成本類別。
2.      標準成本類的Cost Type可以記錄Cost Elements(ex: MaterialResourceOverheadOutside Processing)Sub-Element(ex: );但PAC只記錄Cost Element,沒有Sub-Elements
Setup
1          設定「彙總的」Sub-Elements
1.1.  區分Organization+Cost Elements設定
1.2.  一次性設定
1.3.  設定一命名為『Material』的Sub-Element(Material) . Ps : 一般早都有設定好了
1.4.  Resource彙總Sub-Element (Outsite process & Normal)

1.6.  Overhead彙總Sub-Element



【設定標準成本類的Cost Type】

複製PAC至標準成本類Cost Type
  執行「Copy Item Period Cost
  路徑:Cost Managementè Periodic Costing è Copy Periodic Costs
  報表參數內容如下。




2011年11月6日 星期日

Oracle ERP R12. 自訂專屬的Concurrent Manager

最近因為開發服務單位的自動出貨的程式,常常不知明的原因造成執行失敗,但又找不出資料面的問題,剛好又遇到最近USER在反應有些重要報表Pending跑不出來,經顧問診斷後發現是Create accounting時Oracle 會呼叫多個sub-request,而系統的Standard Manager的process數又不足以應付,導致大量的Request處於waiting狀態。 剛好我就試著將一些較重要的interface import程式獨立出來。結果就正常了@@,故初步判斷OM的API程式背後會呼叫一些Concurrent來作業,所以要確保被呼叫起來的concurrent是可以較快被服務(不然就可能會發生疑似Timeout的狀況,導致程式異常)。

以下就設定專屬Concurrent Manager的方式做一簡單說明 :
1. 路徑 : System Administrator / Concurrent / Manager / Define
2. 輸入 Manager 名稱 / Short Name / Application Name  設定快速通道名稱
3. Type 請選 Concurrent Manager
4. Program Library 請選FNDLIBR

5. 點Specialization Rules來進行程式的指定(即VIP程式)

6. 接著點選WorkShifts , 設定該快速通道的開放時間及Process數/偵測間隔


至上述步驟後,就可以至路徑 : System Administrator / Concurrent / Manager / Administer
檢查是否有專屬的Concurrent Manager開始服務

2011年11月1日 星期二

Oracle ERP R12. Auto Receiving To AP Interface (Oracle Standard Function : AutoInvoice)

因為目前服務的單位並沒有啟用AutoInvoice的機制,但後來有一些自動化過帳的客製需求,其要求PO收料後必需自動至AP做立帳動作,故就需要Oracle 該Standard Function來節省客製時間.
經同事及顧問的指導後,發現只要Supplier 及PO設定正確認,就可讓該PO於收料後自動轉抛AP INVOICE INTERFACE.再執行一Concurrent來進行import動作

1. Supplier設定 Pay On 及其後面三欄


<2011/11/03補充 : Payment Method Code亦要維護完整,建立header & site level皆維護>
2. PO設定 , 確認Pay On欄是否有設定


3. 收料後,執行"Pay On Receipt AutoInvoice"

4. "Pay On Receipt AutoInvoice"會再自動帶出"Payables Open Interface Import"
最後再至AP ,By RT 查就應該看的到了