使用“替换”在“COND”内陈述

发布于 2025-01-10 07:15:10 字数 587 浏览 0 评论 0原文

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

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

I am trying to replace a substring in a string based on certain condtions using COND #. But not sure where to incorporate REPLACE in the syntax.

Normal code:

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.

I am trying to achieve the same using ABAP 7.5 syntax.

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 ).

What is the correct syntax to get the desired results?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

青芜 2025-01-17 07:15:10

根据 文档THEN 操作数 必须是通用表达式位置,其定义为

还可以指定构造函数表达式、表表达式、计算表达式、内置函数、功能方法或方法链接(以及合适的数据对象)的读取位置。

这意味着 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 )
).

As per documentation, the THEN operand must be a a general expression position, which is defined as

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.

That means REPLACE is not available, but you can use built-in string function 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 )
).
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文