在 CDS 视图中连接 space

Concatenating a space in CDS views

As of ABAP 7.40 SP5 我可以使用 CONCAT 函数在我的 CDS 视图 select 列表中组合两个字段。它仅限于两个参数,但我可以通过链接此函数来组合多个字段或构建更大的字符串来解决这个问题。我不能用这种方式做的是用space分隔两个字段。当我这样做时:

define view Z... 
as select from but000 as bp
{
    concat( concat( bp.name_first, ' '), bp.name_last )
}

space ' ' 会从生成的字符串中静默修剪。 如何用 space 分隔字段?

ABAP 7.50

ABAP 7.50 will include the CONCAT_WITH_SPACE function 解决了这个问题。使用该函数,上面的示例可以简单地写为:

CONCAT_WITH_SPACE( bp.name_first, bp.name_last, 1 )

其中 1 指的是要在两个参数之间插入的 space 的数量。

7.50 also introduces other string functions like INSTR, LEFT, LENGTH, LTRIM, RIGHT, RPAD and RTRIM. 7.51 looks set to add LOWERUPPER 到该列表。


ABAP 7.40

在此版本中没有干净的方法来完成相同的任务。唯一的方法似乎是将两个字段与一个虚拟字符串连接起来,该虚拟字符串将 space 括在一个字符组中,该字符组不会出现在正在选择的字段中。合并后,您可以从结果中删除这些字符,只留下 space。我在 the SAP forums.

上采用了 Christian Seitel 的这种方法
REPLACE(CONCAT( CONCAT( bp.name_first, '|-| |-|'), bp.name_last),'|-|', '')

这是可行的,因为它将按如下方式处理此字符串:

name_first|-| |-|
name_first|-| |-|name_last
name_first name_last

如果您还在为 <7.50 版本而苦恼。你可以试试:

concat(concat("first_string",(' ')), "second_string")

希望对您有所帮助。