'、' 和 |有什么区别,何时应该使用它们?

  • 本文关键字:何时应 区别 abap
  • 更新时间 :
  • 英文 :


我见过这样写的字符串:

lv_str  = 'test'
lv_str2 = `test`
lv_str3 = |test|

到目前为止,我唯一注意到的是" 有时会修剪空格,而 ' 保留它们。
我最近才发现 |- 还不太了解。

有人可以解释一下,或者在这里发布一个好的链接,什么时候哪种方式最好,如果还有更多方法?

|...| 表示 ABAP 字符串模板。使用字符串模板,我们可以使用文本、嵌入式表达式和控制字符创建字符串。

  • ABAP文档
  • 例子

使用 ' 定义字符类型的文字和非整数:

CONSTANTS some_chars TYPE char30 VALUE 'ABC'.
CONSTANTS some_number TYPE fltp VALUE '0.78'.

使用 ` 定义字符串类型文本:

CONSTANTS some_constant TYPE string VALUE `ABC`.

使用|组合文本:

DATA(message) = |Received HTTP code { status_code } with message { text }|.

这是 ABAP 允许您定义字符序列的方式的详尽列表。

要回答问题的"何时应该使用它们"部分:

如果需要尾随空格,`|很有用(它们被忽略',请参阅此博客文章以获取更多信息,请注意SCN今天将引号呈现得很糟糕,因此帖子令人困惑):

DATA(arrival) = `Hello ` && `world`.
DATA(departure) = |Good | && |bye|.

使用字符串模板(|)而不是`&&的组合,以便于阅读(它仍然非常主观,我倾向于|;使用我的键盘,|也更容易获得):

DATA(arrival) = `Dear ` && mother_name && `, thank you!`. 
DATA(departure) = |Bye { mother_name }, thank you!|.

有时您没有选择:如果 String 数据对象需要在给定位置使用,则必须使用 `| 。还有许多其他情况。

在所有其他情况下,我更喜欢使用'(可能是因为我用键盘比|更容易获得它)。

尽管其他答案很有帮助,但它们没有提到'`之间最重要的区别。

用单引号定义的字符链将被定义为具有链长度的 C 类型,甚至在字符序列的开头和结尾包括空格。

所以这个'TEST'将得到C LENGTH 4的类型。

无论在哪里,这样的构造`TEST`将始终计算为键入string

例如,在这种情况下

,这非常重要。

REPORT zutest3.
DATA i TYPE i VALUE 2.
DATA(l_test1) = COND #( WHEN i = 1 THEN 'ACT3' ELSE 'ACTA4').
DATA(l_test2) = COND #( WHEN i = 1 THEN `ACT3` ELSE `ACTA4`).
WRITE l_test1.
WRITE l_test2.

相关内容

  • 没有找到相关文章

最新更新