从ABAP 7.40 SP5开始,我可以使用CONCAT
函数组合CDS视图选择列表中的两个字段。它仅限于两个参数,但我可以通过链接此函数来组合多个字段或构建更大的字符串来解决此问题。我不能这样做的是将两个字段与分隔它们的空格组合在一起。当我这样做时:
define view Z...
as select from but000 as bp
{
concat( concat( bp.name_first, ' '), bp.name_last )
}
空格' '
从生成的字符串中以静默方式修剪。如何用空格分隔字段?
ABAP 7.50
ABAP 7.50 将包括解决此问题的CONCAT_WITH_SPACE
函数。使用该函数,上面的示例可以简单地编写为:
CONCAT_WITH_SPACE( bp.name_first, bp.name_last, 1 )
1 表示要在两个参数之间插入的空格数。
7.50还引入了其他字符串函数,如INSTR
、LEFT
、LENGTH
、LTRIM
、RIGHT
、RPAD
和RTRIM
。 7.51看起来将LOWER
和UPPER
添加到该列表中。
ABAP 7.40
在此版本中,没有干净的方法可以完成相同的操作。唯一的方法似乎是用一个虚拟字符串连接这两个字段,该虚拟字符串将空格包含在一个字符组中,该字符组不会出现在正在选择的字段中。合并后,您可以从结果中删除这些字符,只留下空格。我在SAP论坛上采用了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")
我希望它有所帮助。
对我来说,它适用于这个函数:
CONCAT_WITH_SPACE( arg1, arg2, spaces )