abap - 在 'REPLACE' 语句中使用 'COND'

标签 abap

我正在尝试使用 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 ).

获得所需结果的正确语法是什么?

最佳答案

根据 documentationTHEN操作数必须是一个通用表达式位置,定义为

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 不可用,但您可以使用内置字符串函数 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 )
).

关于abap - 在 'REPLACE' 语句中使用 'COND',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71256466/

相关文章:

char - 在ABAP中的常量字符末尾添加空格

abap - 当你有 "char"类型时,为什么 ABAP 中有这么多 "string"类型?

abap - 如何将F4帮助的所有值放入内表中?

abap - 内表中的嵌套分组

ide - ABAP IDE 中双击的键盘快捷键

if-statement - 逻辑表达式不正确 : Comparison/SELECT-OPTION can only be followed by "AND" ,"OR" or ")"

abap - OpenSQL 中 GROUP BY 子句中的通配符?

json - 反序列化匿名 JSON 数组?

abap - ABAP中的功能模块是否允许内联数据声明

printing - 在事务 NACE 中,如果我知道 Smartform 的名称,是否可以找到打印程序和表单例程?