SAP货币转换因子-金额显示扩大或缩小问题

在SAP系统中,不同币种的金额处理方式有所不同,如日元和韩元没有小数位。系统通过币种转换因子来处理这些币种,存储时会进行乘以10的(n-2)次方的转换。文章通过示例展示了如何使用函数模块CURRENCY_CONVERTING_FACTOR和CURRENCY_AMOUNT_SAP_TO_DISPLAY进行金额转换。
摘要由CSDN通过智能技术生成

在SAP中各种币种的金额都是默认2位小数,比如人民币、美元,但是有些币种是不存在小数位的,如日元、韩元,于是SAP中增加了一个币种转换因子的概念,透明表存储数据时是按实际金额*10的(n-2)次方存储,有条目但未维护小数位的默认小数位为0,小数位维护的值为1-5,配置路径如下:

以日元JPY和越南盾VND做测试凭证为例:F-02做凭证时按照10000金额录入,FB03显示金额为10000,透明表BSEG中JPY存储的金额为100000,VND存储金额为100,

程序中金额转换的几种方式:

  1. 使用function module CURRENCY_CONVERTING_FACTOR进行转换
    DATA:lv_wrbtr TYPE bseg-wrbtr.
    DATA:lv_factor TYPE p DECIMALS 3.
    
    SELECT SINGLE wrbtr INTO lv_wrbtr FROM bseg WHERE bukrs = '1210' AND belnr = '0100000006'.
    
    WRITE:/'JPY转换前:',lv_wrbtr.
    
    CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR'
      EXPORTING
        currency                = 'JPY'
     IMPORTING
       factor                  = lv_factor
     EXCEPTIONS
       too_many_decimals       = 1
       OTHERS                  = 2
              .
    IF sy-subrc = 0.
      lv_wrbtr = lv_wrbtr * lv_factor.
      WRITE:/'JPY转换后:',lv_wrbtr.
    ENDIF.

2.使用function module CURRENCY_AMOUNT_SAP_TO_DISPLAY或CURRENCY_AMOUNT_DISPLAY_TO_SAP进行转换

DATA:lv_amount TYPE wmto_s-amount.

SELECT SINGLE wrbtr INTO lv_amount FROM bseg WHERE bukrs = '1210' AND belnr = '0100000006'.

WRITE:/'JPY转换前:',lv_amount.

CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_DISPLAY'
  EXPORTING
    currency              = 'JPY'
    amount_internal       = lv_amount
  IMPORTING
    amount_display        = lv_amount
  EXCEPTIONS
    internal_error        = 1
    OTHERS                = 2.
IF sy-subrc = 0.
WRITE:/'JPY转换后:',lv_amount.
ENDIF.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值