Chinaunix首页 | 论坛 | 博客
  • 博客访问: 369367
  • 博文数量: 68
  • 博客积分: 1435
  • 博客等级: 上尉
  • 技术积分: 690
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-06 22:35
文章分类

全部博文(68)

文章存档

2013年(1)

2012年(1)

2011年(4)

2010年(62)

我的朋友

分类: WINDOWS

2010-06-02 22:00:24

ABAP功能模組整理-顯示金額與實際儲存金額的轉換
1. FM名稱: CURRENCY_AMOUNT_SAP_TO_DISPLAY
2.FM用途說明: 將SAP內部儲存的金額數字, 轉成顯示的金額
3.輸入參數
CURRENCY : 幣別
AMOUNT_INTERNAL : SAP內部儲存的金額數字
4.輸出參數
AMOUNT_DISPLAY : 顯示的金額
-----------------------------------------------------------
與前一個剛好相反
1. FM名稱: CURRENCY_AMOUNT_DISPLAY_TO_SAP
2.FM用途說明: 將顯示的金額轉成SAP內部儲存的金額數字
3.輸入參數
CURRENCY : 幣別
AMOUNT_ DISPLAY : 顯示的金額
4.輸出參數
AMOUNT_ INTERNAL : SAP內部儲存的金額數字
----------------------------------------------------------
另外, IDOC金額與實際儲存金額的轉換,也有兩個功能模組
CURRENCY_AMOUNT_SAP_TO_IDOC與CURRENCY_AMOUNT_SAP_TO_DISPLAY類似
CURRENCY_AMOUNT_IDOC_TO_SAP與CURRENCY_AMOUNT_DISPLAY_TO_SAP類似
 
 

SAP在顯示金額及儲存金額時會透過一個Table(TCURX)及特定的計算公式產生其結果


SAP在顯示金額及儲存金額時會透過一個Table(TCURX)及特定的計算公式產生其結果

具体代码的写法如下:
A. 显示存储的金額DATA: SHIFT TYPE I.
CLEAR SHIFT.
SELECT SINGLE * FROM TCURX WHERE CURRKEY = (货币类型).
IF SY-SUBRC = 0.
SHIFT = 2 - TCURX-CURRDEC.
ENDIF.
(显示金額) = (存储金額) * 10 ** SHIFT.

B. 存储输入的金額(至CURR type的数据表的字段)
DATA: SHIFT TYPE I.
CLEAR SHIFT.
SELECT SINGLE * FROM TCURX WHERE CURRKEY = (货币类型).
IF SY-SUBRC = 0.
SHIFT = TCURX-CURRDEC – 2.
ENDIF.
(存储金額) = (显示金額) * 10 ** SHIFT.

由上面公式您可以了解为何TWD显示100為何存储值为1
在TCURX中CURRKEY = ‘TWD’ 其CURRDEC = 0, 因此显示金额会乘十的负二次方才是存储的結果

C:利用现成的Function modules:
CURRENCY_AMOUNT_ SAP _TO_ DISPLAY : 显示存储的金額
CURRENCY_AMOUNT_DISPLAY_TO_SAP : 存储输入的金額(至CURR type的数据表的字段)

阅读(2981) | 评论(0) | 转发(0) |
0

上一篇:IDOC学习

下一篇:用户出口

给主人留下些什么吧!~~