【ERP】如何根据系统币种(扩展)精度来动态产生数字的格式(FORMAT MASK)
生活随笔
收集整理的這篇文章主要介紹了
【ERP】如何根据系统币种(扩展)精度来动态产生数字的格式(FORMAT MASK)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
系統設置
首先到幣種定義界面定義幣種的精度和擴展精度。
NAVIGATION: Financials > Currencies > Currencies
界面截圖如下:
?
Precision是普通精度,Extended是擴展精度。FND Libraries里面有一個程序包FND_CURRENCIES提供了API可以讓我們方便的根據精度或擴展精度來構建format mask。下面舉出簡單的代碼調用實例。
?
Precision
利用FND_CURRENCIES的SAFE_GET_FORMAT_MASK來輕松獲取:
1 declare2 l_format_mask varchar2(80);
3 l_formatted_number varchar2(40);
4 begin
5 l_format_mask :=
6 fnd_currency.safe_get_format_mask(
7 currency_code => 'USD'
8 , field_length => 20
9 );
10
11 dbms_output.put_line(l_format_mask);
12
13 select to_char(1234566.123456, l_format_mask)
14 into l_formatted_number
15 from dual;
16
17 dbms_output.put_line(l_formatted_number);
18 end;
?
Extented Precision
很遺憾,這個取法Oracle并沒有提供單一的API來供我們調用,不過我們可以自己搞定這種情況,即利用FND_CURRENCIES里面的GET_INFO和SAFE_BUILD_FORMAT_MASK來得到EXTENDED PRECISION的format mask,示例代碼如下:
1 declare2 l_format_mask varchar2(80);
3 l_precision number;
4 l_ext_precision number;
5 l_min_acct_unit number;
6
7 l_formatted_number varchar2(40);
8 begin
9 fnd_currency.get_info(
10 currency_code => 'USD'
11 , precision => l_precision
12 , ext_precision => l_ext_precision
13 , min_acct_unit => l_min_acct_unit
14 );
15 fnd_currency.SAFE_BUILD_FORMAT_MASK(
16 format_mask => l_format_mask
17 , field_length => 20
18 , precision => l_ext_precision
19 , min_acct_unit => l_min_acct_unit
20 );
21
22 dbms_output.put_line(l_format_mask);
23
24 select to_char(1234566.123456, l_format_mask)
25 into l_formatted_number
26 from dual;
27
28 dbms_output.put_line(l_formatted_number);
29 end;
?
Enjoy!
?
?
?
轉載于:https://www.cnblogs.com/objectorl/archive/2011/12/29/get-format-mask-via-currency-def.html
總結
以上是生活随笔為你收集整理的【ERP】如何根据系统币种(扩展)精度来动态产生数字的格式(FORMAT MASK)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用Siri API开发的语音输入法Ai
- 下一篇: 【转】正则基础之——捕获组(captur