【整理】SAP货币汇率转换

货币汇率转换Demo

 

一、说明

汇率维护在ERP中可以使用事务代码OB07或者OB08,每次不同币别的汇率更改在正式生产系统中都会新创建一条记录,保存之后会存储在表TCURR中,可以通过函数CONVERT_TO_LOCAL_CURRENCY转换获取(注意函数Exporting中各个参数一定不能用常量,要用变量),函数自动会把当前最近的时间的汇率作为转化的汇率。

这里需要注意有一些货币比较特殊,比如日元JPY,它是没有小数点的,系统内存储的和你查询看到的不同,这是因为有转换因子的缘故,存入表之前SAP会先将金额除以这个因子后再存入。可以调用如下函数进行相互转换:

  • BAPI_CURRENCY_CONV_TO_INTERNAL:转换成数据库中内部存储金额
  • BAPI_CURRENCY_CONV_TO_EXTERNAL:转换成外部实际金额

 

二、汇率维护

汇率分为直接汇率(Direct quotation)和间接汇率(Indirect quotation)两种。

直接汇率:1外币=XX本位币

间接汇率:XX外币=1本位币

比如,公司代码本位币为人民币,那么1USD=6.5CNY为直接汇率,0.15385USD=1人民币为间接汇率。中国采用直接标价法,即美元/人民币报价。

 

 

三、转换实例

*&---------------------------------------------------------------------*
*& Report  ZTEST_CONVERT_CURR
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZTEST_CONVERT_CURR.

DATA: GV_AMOUNT LIKE BSEG-WRBTR,
      GV_INTER  LIKE BSEG-WRBTR,
      GV_FROM   TYPE CHAR20,
      GV_TO     TYPE CHAR20.

************************************
* selection screen
************************************
PARAMETERS : P_FC TYPE TCURC-WAERS DEFAULT 'JPY',
             P_TC TYPE TCURC-WAERS DEFAULT 'CNY',
             P_DATE LIKE SY-DATUM DEFAULT SY-DATUM,
             P_CURR TYPE BAPICURR-BAPICURR,
             P_KURST TYPE TCURR-KURST DEFAULT 'M'.

************************************
* start- of -selection
************************************
START-OF-SELECTION.
*** Conversion of Currency Amounts into Internal Data Format
  CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL'
    EXPORTING
      CURRENCY             = P_FC
      AMOUNT_EXTERNAL      = P_CURR
      MAX_NUMBER_OF_DIGITS = 13
    IMPORTING
      AMOUNT_INTERNAL      = GV_INTER.

*** Translate foreign currency amount to local currency
  CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
    EXPORTING
      DATE             = P_DATE
      FOREIGN_AMOUNT   = GV_INTER
      FOREIGN_CURRENCY = P_FC
      LOCAL_CURRENCY   = P_TC
      TYPE_OF_RATE     = P_KURST
    IMPORTING
      LOCAL_AMOUNT     = GV_AMOUNT
    EXCEPTIONS
      NO_RATE_FOUND    = 1
      OTHERS           = 2.

************************************
*  end - of - selection
************************************
END-OF-SELECTION.
  MOVE P_CURR TO GV_FROM.
  MOVE GV_AMOUNT TO GV_TO.
  CONDENSE GV_FROM NO-GAPS.
  CONDENSE GV_TO NO-GAPS.

  WRITE : / P_FC,'→',P_TC.
  WRITE : / GV_FROM ,'→',GV_TO.

 

### SAP 汇率表中的比率含义解释 在SAP系统中,汇率表用于存储不同货币之间的兑换关系。这些汇率对于确保跨国交易的准确性至关重要。具体来说,在SAP系统的汇率表里,“比率”的定义如下: - **比率类型 (Rate Type)**:这是指特定条件下使用的汇率种类。例如,M表示月平均汇率,通常用于财务结算;其他常见的还有D(日汇率)、E(期末汇率)等[^2]。 - **直接比率 (Direct Rate)** 和 **间接比率 (Indirect Rate)**: - 直接比率是指当一种货币相对于另一种货币的价值被指定时所采用的形式。比如,1单位外币等于多少本位币。 - 间接比率则是相反的情况,即1单位本位币可以换取多少外币。这两种形式的选择取决于公司的偏好以及具体的业务场景需求[^3]。 - **有效日期 (Valid-from Date)**:每条记录都有一个起始的有效时间戳记,表明该汇率适用的时间范围。这有助于处理历史数据查询和未来预测等问题[^4]。 为了更好地理解如何操作这些参数,下面是一个简单的Python脚本来展示如何计算两种货币间的转换值: ```python def convert_currency(amount, from_rate, to_rate): """Convert an amount between two currencies based on their rates.""" converted_amount = amount * (to_rate / from_rate) return round(converted_amount, 2) # Example usage with hypothetical direct rates for demonstration purposes only print(f"CNY 100 is approximately SGD {convert_currency(100, 5.5, 1):.2f}") ``` 此代码片段展示了基于给定的直接比率来实现两个不同国家货币之间金额的简单转换逻辑。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SAP剑客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值