【MM 小數位】SAP系統中的小數位


 

在SAP系統中,所有的數據系統默認是2位小數,但是針對不同的業務需求,對小數位有不同要求:

一、Currencies 

 T-code:OY04  Path:Global settings-->currencies-->set decimal places for currencies 

 這個操作時跨client的,會影響到這個服務器上的整個Client,系統會給提示:

“在您繼續之前,請仔細閱讀以下內容。
如果不留意此注釋,您可能會用事務對系統造成不可挽回的損壞。
在 R/3 系統表中,貨幣字段作為小數存儲,其小數位可以改變。小數位不存儲在
數據庫的字段中。每個貨幣字段對應一個貨幣碼字段。在此事務中,您分配唯一的
小數位數給貨幣碼。
樣例: 如果您已設置貨幣 USD 為兩個小數位並過帳 100 USD 的金額,10000 USD
的數額存儲在數據庫的貨幣字段中。除非此數量被進一步處理或輸出,系統將使用
參考字段的貨幣碼通過此表來決定小數位數。用這種方法,表的容量梢員徽返
解釋,以進行進一步的處理或格式化帶標點的輸出。
如果在過帳后更改 USD 的小數位數,例如,改為 3,現有字段內容 10000 將在進
一步處理或輸出時被解釋為 10 USD (10.000)。這使系統中表的容量對於所有包含
USD 數量的貨幣字段,被錯誤解釋為原來的 10%。您必須轉換系統中所有包含貨
幣字段的表以保持數據完整性。但是,這樣不能在生產系統中同時用於組織原因和
運行時方面。”

系統進入后為:

需要新增的,可以點擊新增,然后指定小數位即可。USD是有2位小數的貨幣單位,顯示的金額和表中存儲的值是一樣的。而像JPY這樣的貨幣單位是沒有小數的,1000 JPY保存在表中的值是10(比如系統下單:1000個 150JPY,MIGO收貨了8251個,自動產生的會計憑證會自動取整)。若系統中已經存在了小數位設置,再改動小數位,會造成數據大大的差異。保存數值與顯示的金額之間的關系是:

保存數值=顯示金額*10^(x-2) 其中x是該貨幣單位的小數位數。

 SAP貨幣轉換

  1. 如果某貨幣的小數位不是2位,則需要通過OY04設置其小數位數。
  1. 系統中的數據表存放的日元JPY、俄盧布RUR等貨幣比前台輸入的金額小100倍。

系統根據OY04Talbe:TCURX)中定義的貨幣小數位將原金額轉換成含小位小數的金額后存儲(據說根據ISO的什么標准),如日元為0位小數,120日元轉換后變成1.20,縮小100.如為TJLP5位小數,12.01230則轉換成12012.30,擴大1000倍。

SAP在數據存儲時必須要有小數位,再次查資料,發現SAP有所謂的external及internal的數據格式,不是存透明表取出的數都是external的,所以要解決此問題應在調用CONVERT_TO_LOCAL_CURRENCY 函數前,先調用一個 BAPI_CURRENCY_CONV_TO_INTERNAL 函數,就行了。

與之對應的FUNCTIONBAPI_CURRENCY_CONV_TO_EXTERNAL

二、定義度量單位小數

T-code:CUNI   path: Global settings-->check unit of measurement(decimal pl.rounding)

三、匯率的改動 

T-code:OB08 

一般記帳exchange rate type 是M . 比如local currency本位幣是USD  M :  8.70000             CNY = 1 USD CNYdocument currency . 
Cny 1000    local cur.(USD)  114.94 更改匯率: 
M:8.72560  CNY = 1USD .  CNY document currency 記帳 
CNY 1000 :  local cur. (USD) 114.61 
更該匯率是系統是可行的,我想這樣在使用外幣記帳時,如果currencies的小數定為兩位,樓上的混淆了這兩概念, 產生匯兌損益易的機會會少些.  JPY的小數問題. 
寫一個關於稅務的報表,就是從material doc, FI doc和PO抓些字段. material doc.和FI doc的對應如下: 
mat doc tables :Mkpf( header), MSeg(item) FI doc  tables :Bkpf( Header), BSeg( Item) 
BKPF-AWKEY(Mat. doc no+公司+fiscal year或mat. no+fiscal year) 

對應到MSEG-mblnr(mat. doc. no) 
MSEG-ZEILE(itemno)*2-1對應到FI doc item的bseg-buzei(item no) 需要從BSEG帶出bseg-waers document curerncy.  bseg-wrbtr (doc currency amount) bseg-dmbtr (local currency amount) 比如JPY為doc currency. Dr:12345 Cr:12345 
可bseg-wrbtr為123.45, 這樣出來的報表就發生錯誤. 
Why?我想SAP默認的所有的currencies的小數都是2位, 這樣在record一document時, 不管三七二一,一定將你輸入的數字弄兩個小數點. 1.USD 2位或OY04沒任何動作 Dr: 12345 Cr: 12345    
在SAP中bseg-wrbtr為12345.00 Dr: 123.45 Cr:123.45 
在SAP中bseg-wrbtr為123.45 顯示出來不做任何動作 
2. JPY ,OY04定義小數0表示無小數 Dr : 12345   JPY Cr : 12345   JPY 
在SAP中bseg-wrbtr為123.45 Dr : 123.45   JPY Cr : 123.45   JPY  
你不可能做出這樣的document 顯示出來的數據*100 
3.比如TND OY04定義小數為3. Dr 123456 cr 123456 
在SAP中bseg-wrbtr為1234560.00 Dr:123.456 Cr:123.456 
在SAP中bseg-wrbtr為1234.56 顯示出來的數據/10 .  
就是所SAP保存數據和顯示數據是不同的,保存在數據庫中總保留兩位小數,所以在做report時間要小心, 
顯示數據時根據TCURX(就是OY04)里面定義的小數位進行一定計算, (自己未測試,先記錄下來)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM