【问题标题】:ABAP: Use if-condition in string templateABAP:在字符串模板中使用 if 条件
【发布时间】:2020-09-11 17:58:14
【问题描述】:

我的问题是将 if 语句集成到字符串模板中。

TYPES: BEGIN OF ty_field,
         name   TYPE string,
         label  TYPE string,
         result TYPE string,
       END OF ty_field.
DATA: mt_fields TYPE TABLE OF ty_field.

mt_fields = VALUE #(
        ( name = 'HI'      label = 'Greeting' )
        ( name = 'PERSON'  label = 'Who' )
        ( name = 'RESULT'  label = 'Sentence'  result = |Say \{HI\} to \{PERSON\}.| ) ).

不幸的是,mt_fields 的第 3 行将result 设置为Say {HI} to {PERSON},但我希望Say Greeting to Who。

更重要的是,我想得到什么: 有时PERSON 没有数据。在这种情况下,结果变量将获得字符串'Say hello to .'(如果'hello' 是HI 的值)。

我不想拥有这个。如果没有人,我想得到一个空字符串作为结果。所以我必须先过滤,PERSON 是否有一些价值。我需要在字符串赋值中加入一个 if 条件。

在 Python 中我会写类似的东西

( name = 'RESULT'  label = 'Sentence'  result = 'Say {HI} to {PERSON}.' IF PERSON != '' ELSE '' )

但是如何在 ABAP 中做到这一点?

非常感谢!

【问题讨论】:

  • 我认为 COND 语句是你所需要的 help.sap.com/doc/abapdocu_752_index_htm/7.52/en-us/…
  • 您的 ABAP 代码无法编译,因此不会生成 Say Greeting to Who。即使我理解您想要实现的目标,我也无法提供任何更正,因为没有有效的原始代码可以更正。请提供minimal reproducible example,请声明变量等。
  • @SandraRossi:我的问题不是关于那个例子。一般来说:如何将 if 条件集成到字符串赋值中?在 Python 中,我会写 variable = "abc" if condition else "xyz"。这就是我对 ABAP 所需要的。

标签: string list if-statement structure abap


【解决方案1】:

如果我理解正确你想要做什么:

    TYPES: BEGIN OF ty_field,
             name   TYPE string,
             label  TYPE string,
             result TYPE string,
           END OF ty_field.
    DATA: mt_fields TYPE TABLE OF ty_field.

    mt_fields = VALUE #( let salutation = 'Greeting' pers = cond string( when salutation = 'Hello' then '' else 'Who' ) IN
                          ( name = 'HI'      label = salutation )
                          ( name = 'PERSON'  label = pers )
                          ( name = 'RESULT'  label = 'Sentence'  result = |Say { salutation } to { pers }.| ) ).

【讨论】:

    猜你喜欢
    • 2011-07-03
    • 1970-01-01
    • 2017-10-01
    • 2019-04-19
    • 1970-01-01
    • 2015-09-23
    • 2017-06-07
    • 2016-08-29
    • 2013-04-29
    相关资源
    最近更新 更多