我们知道,数量都是有单位的,当说采购订单,销售单数量时,都要带着单位,并且当需要用不同单位换算时,在ABAP中可以调用MD_CONVERT_MATERIAL_UNIT等进行商品单位数量转换,在CDS中,可以使用Unit_Conversion来进行转换,相关的单换算,可以使用标准事务码:CUNI进地查看。下面为在CDS中的使用说明,
1.Unit_Conversion(p1 => a1,p2 => a2,…)
- 返回abap.quan类型的结果
- 将源单位的数量转换为目标单位的值
- 规则在事务码CUNI中修改,并存储在数据库表TO06中;
- CDS中函数使用运算符“ =>”进行参数分配
- 逗号分隔参数
- 可选参数error_handling,默认值为“ FAIL_ON_ERROR”
- 其他选项:“ SET_TO_NULL”和“ KEEP_UNCONVERTED”
- 结果可能取决于数据库表(不同的舍入规则)
注:此UNIT_CONVERSION在SAP GUI中SE37中也是存在的,但此函数仔细查看,与CDS中的这个函数名,应该不具有相同的意义,最直接的就是参数不相同,所以也就输出设备的结果应该也是不相同的。
以下在CDS中进行单位换算的一个例子,例子中,把当前数据的长度单位转换为米(M单位)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
@AbapCatalog.sqlViewName: 'ZTEST_I_01V' @AbapCatalog.compiler.compareFilter: true @AbapCatalog.preserveKey: true @AccessControl.authorizationCheck: #CHECK @EndUserText.label: 'UNIT TEST' define view ZTEST_I_01 as select from spfli as a { key a.carrid, key a.connid, distance, distid, @Semantics.quantity.unitOfMeasure: 'target_distid' unit_conversion(quantity => distance, source_unit => distid, target_unit => cast('M' as abap.unit)) as target_tance, cast('M' as abap.unit) as target_distid } |
输出结果如图。