SAP的金额通常以源货币存储在数据库中。显示不同的货币价值,需要进行换算。
我们可以使用SAP内置函数“ currency_conversion”来实现此目的
Currency_Conversion(p1 => al,p2 => a2,…)
- 返回abap.curr类型的结果
- 将原始货币金额转换为目标货币金额
- 根据目标日期的有效汇率
- 规则维护在事务OB08中,并存储在数据库表TCUR中
此函数的转换,是基于标准事务码OB08中配置的货币转换,也就是标准货币转换

函数说明:
- 使用运算符“ =>”进行参数分配
- 逗号分隔的参数
- 可选参数error_handling,默认值为“ FAIL_ON_ERROR”
- 其他选项:“ SET_TO_NULL”和“ KEEP_UNCONVERTED”
- 结果可能取决于数据库(不同的舍入规则)
此功能函数利用在标准事务OB08中维护并存储在(与客户端相关)表中的转换规则。
ABAP CDS允许您将转换从ABAP堆栈移至数据库级别。有两个内置函数可用于在DDL Source中实现转换。
注意:
尽管内置函数使用与相应的ABAP功能模块相同的规则和逻辑,但是您一定不能期望得到完全相同的结果。当考虑到不同的舍入规则可能适用于数据库上的计算和ABAP中的计算时,这是显而易见的。

透明表SFLIGHT包含一个PRICE字段,其中存储了每个航班的标准机票价格。相应的货币代码位于字段CURRENCY中。
在上面的CDS视图定义中,表字段PRICE中的值由于默认货币(字段CURRENCY值)转换为美元(“ USD”),并作为视图字段PRICE返回。文字“ USD”作为视图字段CURRENCY返回。
在上面的示例中,我们将目标货币硬编码为USD,但是我们可以使用参数动态地将其转换为美元,请参见以下示例。

此例子中,定义了一个CDS的传入参数p_displaycurrency,当使用此CDS时会提示输入此参数值。
执行此视图将提示输入参数。

