CDS视图中的货币换算

SAP的金额通常以源货币存储在数据库中。显示不同的货币价值,需要进行换算。

我们可以使用SAP内置函数“ currency_conversion”来实现此目的

Currency_Conversion(p1 => al,p2 => a2,…)

  • 返回abap.curr类型的结果
  • 将原始货币金额转换为目标货币金额
  • 根据目标日期的有效汇率
  • 规则维护在事务OB08中,并存储在数据库表TCUR中

此函数的转换,是基于标准事务码OB08中配置的货币转换,也就是标准货币转换

CDS视图中的货币换算 - 第1张  | 优通SAP
OB8B汇率维护

函数说明:

  • 使用运算符“ =>”进行参数分配
  • 逗号分隔的参数
  • 可选参数error_handling,默认值为“ FAIL_ON_ERROR”
  • 其他选项:“ SET_TO_NULL”和“ KEEP_UNCONVERTED”
  • 结果可能取决于数据库(不同的舍入规则)

此功能函数利用在标准事务OB08中维护并存储在(与客户端相关)表中的转换规则。

ABAP CDS允许您将转换从ABAP堆栈移至数据库级别。有两个内置函数可用于在DDL Source中实现转换。

注意:

尽管内置函数使用与相应的ABAP功能模块相同的规则和逻辑,但是您一定不能期望得到完全相同的结果。当考虑到不同的舍入规则可能适用于数据库上的计算和ABAP中的计算时,这是显而易见的。

CDS视图中的货币换算 - 第2张  | 优通SAP
货币换算示例

透明表SFLIGHT包含一个PRICE字段,其中存储了每个航班的标准机票价格。相应的货币代码位于字段CURRENCY中。

在上面的CDS视图定义中,表字段PRICE中的值由于默认货币(字段CURRENCY值)转换为美元(“ USD”),并作为视图字段PRICE返回。文字“ USD”作为视图字段CURRENCY返回。

在上面的示例中,我们将目标货币硬编码为USD,但是我们可以使用参数动态地将其转换为美元,请参见以下示例。

CDS视图中的货币换算 - 第3张  | 优通SAP
动态货币换算

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

执行此视图将提示输入参数。

CDS视图中的货币换算 - 第4张  | 优通SAP
输入货币参数
CDS视图中的货币换算 - 第5张  | 优通SAP
执行后的结果