2024年6月11日

Date range

LeetCode - SQL 50 - 1321. Restaurant Growth

看到別人的寫法, 學起來!

 sum(amount) over (order by visited_on range between interval '6' day preceding and current row)

2024年4月17日

如何啟動 SLA MO Security (依 Property Manager 為例)

看起來, Oracle 預設就沒有在  Property Manager (PN) 啟動 SLA 的 MO Policy. 這個會造成如果你的 Ledger 底下有多個 Operation Unit, 它們會在同一個 Create Accounting 底下把全部 OU 的 Subledger 資料都跑出來. 當然就結果論來說, 反正它拋轉到 GL 本來就都是在同一個 Ledger 底下, 從 GL 的角度來看不是個問題; 可是如果使用者會在意 (比如, 把 Create Accounting 的結果當成是一個 Review 節點), 那就是個問題了.

思考點

就我這邊的環境來看, 同 Ledger 有多個 OU 並不是剛出現的情況, 但只有這個 PN 出了這個問題 (AR, AP, FA 等都沒有同樣結果), 那八成是跟 Application 有關. 另外, OU 的問題就應該是跟 MO 設定有關, 但是在看過 Profile "MO: Operating Unit" 與 "MO: Security Profile" 都沒問題後, 就覺得應該還有另外的東西是我不熟悉的.

參考文章

Create Accounting Creates a Single Journal For All Inventory Org. Parameter 'Inventory Organization' not enabled (Doc ID 556261.1)

實際作業

第一步: 更新該 Application 在 XLA_SUBLEDGERS 的設定值

UPDATE  XLA_SUBLEDGERS

SET     SECURITY_FUNCTION_NAME = 'XLA_SECURITY_POLICY_PKG.MO_POLICY'

WHERE   APPLICATION_ID = 240


第二步: 產生對應的 DBA_POLICIES 資料

BEGIN

  XLA_SECURITY_PKG.SET_SUBLEDGER_SECURITY(

      P_APPLICATION_ID => 240

    , P_SECURITY_FUNCTION_NAME => 'XLA_SECURITY_POLICY_PKG.MO_POLICY'

  );

END;


第三步: 把有用到的 SLA "Application Accounting Definitions" 重新 Validate 一次

雖然畫面上是顯示 Valid, 但是因為執行完第二步後 Create Accounting 會報錯, 所以就是一千零一招就好了

2024年3月8日

用 API: PO_CREATE_REQUISITION_SV.PROCESS_REQUISITION 產生 IR 取價不正確

 用 Oracle EBS 標準 API 來產生 IR 雖然沒有報錯,但是單價 Unit Price 資訊不正確。

 (這邊指的不正確是跟用標準 Java 畫面產生一模一樣的交易資料時,取得的單價值不同)

目前發現這個 API 有兩地方有疑問:

(目前使用的 API 版本資料為 $Header: POXCARQB.pls 120.12.12020000.3 2013/05/11 10:51:12 rkandima ship $)

1) Line# 154 ~ 164

邏輯是取得 Source 與 Destination Inventory Organization 的參數 PROCESS_ENABLED_FLAG 的值,如果 兩者不同 或是 兩者都為 Y 才進入到呼叫到 Transfer Price 的程式碼。如果兩者都為 N,則直接取得 Source Organization 的成本值。

2) Line# 215

就算成功進到 Transfer Price 的區塊,當它呼叫另一個 API: GMF_GET_TRANSFER_PRICE_PUB.GET_TRANSFER_PRICE 時,似乎參數 P_TRANSFER_TYPE 是給 INTORD,但是去該 API 看它的註解,給的值應該要是 INTORG 才對。

2023年8月3日

SLA Package Name 的規則

當使用 Oracle SLA 功能, 完成設定後, Oracle 會自動產生對應的 Package 在 APPS Schema 底下, 我們要怎麼知道自動產生的 Package 是哪一個呢?

首先, 我們可以看到以下的 Package 名稱:


XLA_00222_AAD_C_012345_PKG

第一節段: XLA, 沒有什麼問題, 就表示它是 SLA 用的 Package

第二節段: 00222, 你所設定的 SLA 的 Application Accounting Definitions 是適用在哪一個 Application, 這個是 Application ID

第三節段: AAD, 不知道什麼意思, 看起來每一個都是一樣的

第四節段: C, 應該是指客製 Customize. 另外有的值是 S, 那應該就是指標準 Standard

第五節段:  012345, 這個值是當你完成 Application Accounting Definitions 後, 它的 PRODUCT_RULE_HASH_ID.

2020年7月10日

2020年6月29日

2020年6月26日

Approval Management Engine - 第1篇

其實很早之前就想要寫這一個功能,多早呢?大概是 2013 - 2014 年吧。但是,我就懶~

反正現在就是在家上班,那就慢慢地開始寫這個功能的東西吧。


AME (Approval Management Engine) 是一個處理 Oracle EBS 電子簽核流程的功能,它可以讓 Oracle EBS 的表單 (但不是全部) 的簽核流程有更大的彈性去滿足公司的需求,而不是只能按照組織架構簽核。

2019年8月19日

Oracle Pipelined Table Functions

Oracle 9i 之後, 有一個功能叫做 Pipelined, 它是一個 Function, 可是用法與 Table 相同, 優點有 :

  • 快速, 不需等查詢執行完畢,每一筆 row 直接回傳結果
  • 執行效率好
  • 可輕易達成複雜的邏輯需求
  • 將程式保留在資料庫
  • 可輸入變數
  • 可達成 Transformation ( 行列轉置 )

2019年8月16日

利用 Dual 產生一個連續號碼的資料表

有時候會需要有一個資料表,可以用來確定某些應該是連續數字的欄位資料,是否有產生跳號的情況,這時候不需要"真的"去弄一個 Temp Table,然後塞一堆數字進去:

SELECT LEVEL AS GROUP_NUM FROM DUAL CONNECT BY LEVEL <= 5

紅字的部份就是看需要來修改囉~

2019年1月15日

INV/CST 期間關閉時,會將庫存 (Inventory) 與 WIP 資料Snapshot 起來

- 庫存資料: CST_PERIOD_CLOSE_SUMMARY
有數量有價值(數量*單位成本)

- WIP資料: WIP_PERIOD_BALANCES
沒有數量只有價值。資料有分三種:
  • Changed: 新增的投入價值
  • Relieved: 新增的產出價值
  • Variance: 新增的差異價值,

2018年12月7日

Create Accounting

這幾天在 Subledger Accounting (SLA) 跟 Create Accounting 打滾,因為在測試環境玩了好一陣子,所以有很多很多的交易 (Transactions) 都沒有拋轉到總帳 (GL),所以在明細帳 (Subledger) 就有兩個月份的資料。

結果昨天突然驚覺:交易不是很多嗎?為什麼 Create Accounting 跑這麼快!才發現怎麼都沒有本月份的資料 。

查了一下才想到,也許,Oralce 是為了保護資料流的正確性,所以 Create Accounting 本來就不會把跨月份的資料拋轉到這個月!?

果然,把 Create Accounting 中的 End Date 改成這個月後資料就出來了,裡面也不會包含上個月的資料。

2017年12月7日

Issue: Audit History Consolidator Can't create audit history by Request date

我們對於訂單資料需要做很多的控管,尤其在 Booked 之後更是重要。

Oracle OM 有提供一種功能:Audit History

IT 可以幫助 User 很快很直接的設定要控管的欄位,可在 OM > Setup > Rules > Security > Processing Constraints 中設定。

但是,看似完美的功能,卻發現了一個 Bug (#5735404)。這個功能對於「日期」欄位會發生 SQL Error,經過提出 SR 之後,Oracle 告訴我這是一個 Internal BUG,也有一個對應的 Internal Patch,所以在 Metalink 上找不到。

Patch Number:5853601

2015年1月14日

FND_DATE.CANONICAL_TO_DATE

有時,在 Toad 跑一些 SQL 要放日期的變數值的時候,會遇到日期格式的問題。

比如,我個人偏愛的格式是 2015-01-14,這樣的格式在我家的系統是不行的,也就是我 SQL 寫成:

DATE = '2015-01-14'

它會報錯 "ORA-01861: Literal Does Not Match Format String"。

然後我就必須改寫成:

DATE = TO_DATE('2015-01-14', 'YYYY-MM-DD')


今天發現一種作法,"或許" 可以省掉一點麻煩:

DATE = FND_DATE.CANONICAL_TO_DATE('2015-01-14')


不過前題是你要記得這一大串 XD


2014年3月24日

EBS 密碼安全設定

How To Setup Password Security? (Doc. ID 564125.1)

Signon Password Failure Limit

The Signon Password Failure Limit profile option determines the maximum number of log in attempts before the user's account is disabled.

Users cannot see or update this profile option.

The internal name for this profile option is SIGNON_PASSWORD_FAILURE_LIMIT.

Signon Password Hard to Guess

The Signon Password Hard to Guess profile option sets rules for choosing passwords to ensure that they will be "hard to guess." A password is considered hard-to-guess if it follows these rules:
  • The password contains at least one letter and at least one number.
  • The password does not contain the user name.
  • The password does not contain repeating characters.
  • Users can see but not update this profile option.
The internal name for this profile option is SIGNON_PASSWORD_HARD_TO_GUESS.

Signon Password Length

Signon Password Length sets the minimum length of an Applications signon password.

If no value is entered the minimum length defaults to 5.

Users can see but not update this profile option.

The internal name for this profile option is SIGNON_PASSWORD_LENGTH.

Signon Password No Reuse

This profile option specifies the number of days that a user must wait before being allowed to reuse a password.

Users can see but not update this profile option.

The internal name for this profile option is SIGNON_PASSWORD_NO_REUSE.

Signon Password Case

This profile option is not available from the beginning.

With 11i.ATG_PF.H RUP3 comes the system profile 'Password Case Option'
After 11i.ATG_PF.H.RUP4 this system profile option was renamed to 'Signon Password Case'.

There are two settings: 'Sensitive' and 'Insensitive'. The default is 'Insensitive'.

Setting this profile option to 'Sensitive' will make the password case sensitive.

'Mixed' is no longer supported.

2007年12月14日

OO4O 與 VB/VBA

前陣子,也是使用者提出的需求,他希望能夠用 Excel 把資料倒進 Oracle,雖然 Oracle 有 SQL Loader,但是對使用者來說,那不是一個簡單的東西,所以呢,他想要「直接」用 Excel。

雖然可以使用 ODBC 或者 ADO,但是顧問告訴我們一個小東西 : OO4O

2007年12月13日

防止 User 自行修改 Profile

有時候不知道使用者是太聰明還是怎樣的,就是會改到一些不該改的。為了避免慘劇發生,能擋能防的就全上吧!

2007年12月11日

FNDLOAD

如下為 11.5.10 版本以上可用的 FNDLOAD 語法,可將各種設定下載轉出為 .ldt 的檔案,然後搬移此檔案到新的環境,再透過上傳的指令就能完成設定。

在導入階段多個環境間 (Test/Pilot-Run/Prod) 進行設定時非常有幫助。