一般透過INTERFACE 執行WO Import時,若有資料欄錯誤,則其系統都會在interface或其它的error table內紀錄錯誤欄位及原因。但WIP_JOB_SCHEDULE_INTERFACE可能有種狀況就是沒有很明確的顯示原因,這時請檢查一下,若你要import的WO狀態是Released,則其Inventory period必需是Open的。但若是Unreleased狀態則不會卡。
<以上純屬個人經驗,若有錯誤還請不吝指教~>
1. 這是個初學農友的農友日誌~ 2. Oracle ERP 分享 3. Oracle DBA 心得 4. Android 開發心得 5. MoJo寵物手作粉絲成員 6. 程式客製及外包專案接案
2011年12月30日 星期五
2011年12月28日 星期三
Oracle ERP R12 - 帳號密碼檢查FUNCTION
FND_WEB_SEC.VALIDATE_LOGIN(:USER_ACCOUNT,:PASSWORD)
其回傳值為:
Y ==> 帳號密碼正確
N ==> 帳號或密碼不正確
其回傳值為:
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
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);
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 關掉
狀況:
----- 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加入限制即可。
範例如下:
條件說明:
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
路徑 : PO模組
程式名稱 : Mass Closs of Purchasing Documents
Oracle ERP R12. (PAC成本制)PO收貨匯率與立帳匯率差異對於成本的影響
<情境設定>
PO : USD1$
PO匯率型態 : User Rate ==> 27
User Rate Vs. 三旬匯率
<分析>
PO : USD1$
PO匯率型態 : User Rate ==> 27
User Rate Vs. 三旬匯率
<分析>
立帳,收料日同月份 | 說明 | Rate | 立帳,收料日同月份 | 跨月才立帳 | 說明 | |
收料 | Dr 待驗存貨 TWD$27 Cr應付暫估 TWD$27 | 匯率固定不會變, 同PO | 28 | RATE
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 | 可變更匯率型態 | 29 | Dr應付暫估
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 | 30 | Dr
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';
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"
"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來開啟)
主要原因有如下:
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: Pending、Frozen…)都是By Organization;但PAC是Legal Entity層級可以跨Organizations的成本類別。
2.
標準成本類的Cost Type可以記錄Cost Elements(ex: Material、Resource、Overhead、Outside
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
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開始服務
以下就設定專屬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 及其後面三欄
2. PO設定 , 確認Pay On欄是否有設定
3. 收料後,執行"Pay On Receipt AutoInvoice"
4. "Pay On Receipt AutoInvoice"會再自動帶出"Payables Open Interface Import"
最後再至AP ,By RT 查就應該看的到了
經同事及顧問的指導後,發現只要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 查就應該看的到了
訂閱:
文章 (Atom)