在 'COND' 语句中使用 'REPLACE'
Using 'REPLACE' within 'COND' statement
我正在尝试使用 COND #
根据特定条件替换字符串中的子字符串。但不确定在语法中将 REPLACE
合并到何处。
普通代码:
DATA(v_string) = 'My string &1 &2'.
IF v_string CA '&1'.
REPLACE '&1' WITH 'sub1' in v_string.
ELSEIF v_string CA '&2'.
REPLACE '&2' WITH 'sub2' in v_string.
ENDIF.
我正在尝试使用 ABAP 7.5 语法实现相同的目标。
v_string = COND #( WHEN v_string CA '&1' THEN REPLACE '&1' WITH 'sub1' in v_string
WHEN v_string CA '&2' THEN REPLACE '&2' WITH 'sub2' in v_string ).
获得所需结果的正确语法是什么?
根据documentation,THEN operand
必须是a general expression position
,定义为
Reading position in which (alongside a suitable data object) a constructor expression, a table expression, a calculation expression, a built-in function, a functional method, or a method chaining can also be specified.
这意味着 REPLACE
不可用,但您可以使用 built-in 字符串函数 replace.
v_string = COND #(
WHEN contains( val = v_string sub = '&1' )
THEN replace( val = v_string sub = '&1' with = 'sub1' occ = 1 )
WHEN contains( val = v_string sub = '&2' )
THEN replace( val = v_string sub = '&2' with = 'sub2' occ = 1 )
).
我正在尝试使用 COND #
根据特定条件替换字符串中的子字符串。但不确定在语法中将 REPLACE
合并到何处。
普通代码:
DATA(v_string) = 'My string &1 &2'.
IF v_string CA '&1'.
REPLACE '&1' WITH 'sub1' in v_string.
ELSEIF v_string CA '&2'.
REPLACE '&2' WITH 'sub2' in v_string.
ENDIF.
我正在尝试使用 ABAP 7.5 语法实现相同的目标。
v_string = COND #( WHEN v_string CA '&1' THEN REPLACE '&1' WITH 'sub1' in v_string
WHEN v_string CA '&2' THEN REPLACE '&2' WITH 'sub2' in v_string ).
获得所需结果的正确语法是什么?
根据documentation,THEN operand
必须是a general expression position
,定义为
Reading position in which (alongside a suitable data object) a constructor expression, a table expression, a calculation expression, a built-in function, a functional method, or a method chaining can also be specified.
这意味着 REPLACE
不可用,但您可以使用 built-in 字符串函数 replace.
v_string = COND #(
WHEN contains( val = v_string sub = '&1' )
THEN replace( val = v_string sub = '&1' with = 'sub1' occ = 1 )
WHEN contains( val = v_string sub = '&2' )
THEN replace( val = v_string sub = '&2' with = 'sub2' occ = 1 )
).