如何在ABAP CDS 7.40中模拟LEFT和RIGHT函数?

问题描述 投票:0回答:1

Eclipse(2023 年 6 月版)在下面的 SAP CDS 视图上显示语法错误,我无法在我们的 SAP ECC 系统中保存/激活它,但完全相同的代码在另一个 SAP 系统中保存/激活正常,但是这是一个 S/4HANA 系统。

我看到的错误红色标记位于以下 CASE 语句中的 LEFT 和 RIGHT 语法中:

留下了意想不到的词

意想不到的词对

如果我删除整个 CASE 语句,那么它可以正常保存并激活。请告诉我们如何在 SAP ECC 系统中实现相同的目标?谢谢。

@AbapCatalog.sqlViewName: 'YSD_SHP'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #NOT_REQUIRED
@EndUserText.label: 'SHP data extract'
define view ZSD_SHP_EXTRACT as select from prps
    inner join proj as proj on proj.pspnr = prps.psphi
{
    key prps.pspnr as pspnr,
        prps.objnr as OBJNR,
    case left( prps.objnr, 2 )
     when 'PR' then right( prps.objnr, 8 )
     else ''
     end as WBS,
     prps.prart as prart,
     prps.psphi as psphi,
     proj.pspid as pspid
}
abap cds
1个回答
0
投票

该消息来自ABAP CDS编译器,因此这不是Eclipse版本的问题,而是ABAP版本的问题,这在两个ABAP系统之间显然是不同的。

LEFT
RIGHT
已添加到 ABAP 7.50 中的 CDS 视图中(请参阅修改 3)。

解决方案非常简单:使用函数

SUBSTRING
,该函数自 ABAP 7.40 中的 CDS Views 开始就存在。

© www.soinside.com 2019 - 2024. All rights reserved.