1. 程式人生 > >Oracle EBS 如何設定事務處理分配行金額、成本和資源費率等等數字小數點位數?

Oracle EBS 如何設定事務處理分配行金額、成本和資源費率等等數字小數點位數?

 通常事務處理的分配行金額、採購單價、成本和資源費率等等數字的小數點位數,在想設定新增小數點位數時候,往往誤認在Oracle EBS配置檔案中設定,其實與賬薄的設定本位幣有關係。

例如下圖,當Resource Cost的Resource Unit Cost的小數點超過5位提示錯誤

解決方法:設定本位幣的擴充套件精確度,假設本位幣為CNY。

幣種導航:GL/Setup/Currencies/Default 如下圖

若以後開發中某一些單價或金額相關限制與準標系統保持一致,則可以呼叫如下程式碼

declare
  currency_code VARCHAR2(15) := 'CNY'; --本位幣
  precision     NUMBER; --精確度
  ext_precision NUMBER; --擴充套件精確度
  min_acct_unit NUMBER; --最小可計帳單位
  mask          VARCHAR2(80); --格式
begin
  /*
  --Form開發時,呼叫CSTCORE.pll庫檔案
  currency_code := RTRIM(CST_GLOBALS.CURRENCY_CODE); 
  */
  currency_code := 'CNY';
  FND_CURRENCY.GET_INFO(currency_code,
                        precision,
                        ext_precision,
                        min_acct_unit);
  dbms_output.put_line('Currency:' || currency_code);
  dbms_output.put_line('precision:' || precision);
  dbms_output.put_line('precision:' || ext_precision);
  dbms_output.put_line('precision:' || min_acct_unit);
  FND_CURRENCY.BUILD_FORMAT_MASK(format_mask   => mask,
                                 field_length  => 38, ---數字最大長度
                                 precision     => ext_precision,
                                 min_acct_unit => min_acct_unit);
  dbms_output.put_line('Format Mask:' || mask);
End;