Form格式化數字、金額

來源:互聯網
上載者:User

在form介面我們要想格式化一個數字行如:123456.03的話,我們可以把這個Item的屬性

成這樣

原數字

Format Mask

結果

說明

123456.03

FM999,990

FM999,990.00

 

0.123

FM999,999.00

.12

小數點前是9

0.123

FM999,990.00

0.12

小數點前是0

123456789.03

FM999,990.00

######

因為Format Mask的個數不夠

123456789.03

FM999,999,990.00

123,456,789.03

 

在to_char中to_char(A,B)

A

B

結果

說明

0.123

FM999,999.00

.123

小數點前是9

0.123

FM999,990.00

0.123

小數點前是0

金額的格式輸入不應該用上面的方法,因為不同種類幣種的格式掩碼是不一樣的,例如:幣種為‘CNY’時金額保留兩位小數,幣種為‘BHD’時顯示三位小數,有兩種方法可以實現:

(1) 用代碼根據幣種動態控制格式掩碼

設需要格式化的塊為TEST,Item為AMOUNT,在塊TEST的Post-query裡加入如下代碼:

APP_ITEM_PROPERTY.SET_PROPERTY('TEST.AMOUNT', --需要格式化的Item

FORMAT_MASK,

FND_CURRENCY.GET_FORMAT_MASK(

/*格式化用的幣種,如果想用本位幣可以這樣取得

Select currency_code

Into l_currency_code

From gl_sets_of_books

Where set_of_books_id = fnd_profile(‘GL_SET_OF_BOOKS_ID’);

*/

‘USD’,

GET_ITEM_PROPERTY('TEST.AMOUNT', --返回Item的長度

MAX_LENGTH)));

這種方法簡單,但如果是一個塊顯示為多行資料,每行的幣種不同的話,就不起作用了。

(2) 用函數APP_CURRENCY.Line_Dyn_Currency實現,這種方法可以實現多行不同幣種的格式化

具體方法如下:

設需要格式化的塊為TEST,Item為AMOUNT,每行的幣種為Item CURRENCY_CODE在資料區塊中建立一個非資料庫描述欄位DESC,AMOUNT不顯示,顯示DESC,在塊TEST的post-query裡加入如下代碼:

:TEST.DESC := TEST.DESC;

APP_CURRENCY.Line_Dyn_Currency(:TEST.CURRENCY_CODE, 'TEST.AMOUNT', 'TEST.DESC', 'POST-QUERY');

在Item:DESC的WHEN-VALIDATE-ITEM裡添加如下代碼:

APP_CURRENCY.Line_Dyn_Currency(:TEST.CURRENCY_CODE, 'TEST.AMOUNT',

'TEST.DESC', 'WHEN-VALIDATE-ITEM');

它的作用是當DESC改變之後重新設定。

當然這種方法也有它的缺限,在塊上查詢之後使用者沒有操作,當前塊的狀態變成‘CHANGED’因顯示AMOUNT時函數會APP_CURRENCY.Line_Dyn_Currency對AMOUNT重新賦值。解決以上問題,可以在塊TEST的 post-query裡加 APP_RECORD.SET_STATUS('QUERY'),把塊的狀態改回來。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.