[點晴模切ERP]SAP系統重要細節之小數位,如何避免數據出現差錯
當前位置:點晴教程→點晴ERP企業管理信息系統
→『 經驗分享&操作答疑 』
在SAP系統中,所有的數據系統默認是2位小數,但是針對不同的業務需求,對小數位有不同要求,所以我們就有需要對不同業務的不同設置。我們來看一下具體設置的步驟。 貨幣 路徑:SAP NetWeaver - 一般設置 - 貨幣 - 為貨幣設置小數位數 事務碼:OY04 這個操作是跨客戶端的,所以會影響到整個服務器上的所有客戶端,系統會給出提示: “在您繼續之前,請仔細閱讀以下內容。如果不留意此注釋,您可能會用事務對系統造成不可挽回的損壞。 在 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是該貨幣單位的小數位數。 貨幣轉換 如果某貨幣的小數位不是2位,則需要通過OY04設置其小數位數。 系統中的數據表存放的日元JPY、俄盧布RUR等貨幣比前臺輸入的金額小100倍。 系統根據OY04(Talbe:TCURX)中定義的貨幣小數位將原金額轉換成含小位小數的金額后存儲(據說根據ISO的什么標準),如日元為0位小數,120日元轉換后變成1.20,縮小100倍.如為TJLP5位小數,12.01230則轉換成12012.30,擴大1000倍。 SAP在數據存儲時必須要有小數位,再次查資料,發現SAP有所謂的外部和內部的數據格式,不是存透明表取出的數都是external的,所以要解決此問題需要在調用CONVERT_TO_LOCAL_CURRENCY 函數之前,先調用一個函數用于內外部轉換的 BAPI_CURRENCY_CONV_TO_INTERNAL 函數就行了。 與之對應的函數是:BAPI_CURRENCY_CONV_TO_EXTERNAL 定義度量單位小數 路徑:SAP NetWeaver - 一般設置 - 檢查計量單位 事務碼:CUNI 具體如下圖所示: 匯率的改動 事務碼: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的小數問題. 寫一個關于稅務的報表,就是從物料憑證,財務憑證和采購訂單獲取一些字段,物料憑證和財務憑證的對應如下: 物料憑證表:MKPF和MSEG 財務憑證表:BKPF和BSEG BKPF-AWKEY(物料憑證號+公司+會計年度或物料憑證號+會計年度) ,對應到MSEG-MBLNR(物料憑證號) MSEG-ZEILE(行項目號)*2-1對應到財務憑證行項目的BSEG-BUZEI(行項目號) 需要從BSEG帶出BSEG-WAERS(憑證貨幣),BSEG-WRBTR (憑證貨幣金額)BSEG-DMBTR (本位幣金額) 比如JPY為憑證貨幣 Dr:12345 Cr:12345 ,可是BSEG-WRBTR為123.45,這樣出來的報表就發生錯誤。 我想SAP默認的所有的貨幣的小數都是2位, 這樣在記錄憑證時, 一定將你輸入的數字弄兩個小數點。 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 你不可能做出這樣的憑證顯示出來的數據*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保存數據和顯示數據是不同的,保存在數據庫中總保留兩位小數,所以在做報表時要注意這一點。 顯示數據時根據TCURX(就是OY04)里面定義的小數位進行一定計算。 閱讀原文:原文鏈接 點晴模切ERP更多信息:http://moqie.clicksun.cn,聯系電話:4001861886 該文章在 2025/4/24 10:04:16 編輯過 |
關鍵字查詢
相關文章
正在查詢... |