我想在我的CDS视图中创建一个新字段,并带有以下CASE条件
case
when usage = 0 then '1'
when usage < '10' or usage_6m > '0' then '2'
when usage < '250' or usage_6m > '10' then '3'
else '0'
end as usage
问题在于,NUMC10字段的类型为“使用情况”,因此eclipse引发错误:“数据类型冲突”。因此,我想将字段强制转换为abap.int4,但这无法正常工作,因为不支持CAST--表达式:
case
when cast( usage as abap.int4 ) = 0 then '1'
...
专家请告知我该如何解决这个问题,为什么我不能在CASE表达式内强制转换字段。
问候,乌玛尔·阿卜杜拉
您还可以直接比较NUMC值。帮助文章“ ABAP CDS-cond_expr,可比较类型”说,如果字段和文字的长度完全相同,则可以使用关系运算符>,
意味着您需要将NUMC(10)更改为:
case
when usage = '0000000000' then '1'
when usage < '0000000010' or usage_6m > '0' then '2'
when usage < '0000000250' or usage_6m > '10' then '3'
else '0'
end as usage
在下面建立第二个CDS视图:
define view <lower_view> as select from <table> {
cast( usage as abap.int4 ) as usage;
cast( usage_6m as abap.int4 ) as usage_6m;
}
define view <upper_view> as select from <lower_view> {
case
when usage = 0 then '1'
when usage < 10 or usage_6m > 0 then '2'
when usage < 250 or usage_6m > 10 then '3'
else '0'
end as usage
}
usage
是保留字。编译器将拒绝为这样的列命名。