先给出结论:CO/CA/CN等运算符号左边的变量,其类型会对执行结果有影响。一般要确保左边的变量是STRING类型。
代码:
REPORT zqztest012.
START-OF-SELECTION.
DATA:lv_str TYPE string VALUE '72'.
DATA:lv_char20 TYPE char20 VALUE '72'.
DATA:lv_char2(2) TYPE c VALUE '72'.
IF lv_char2 CO '1234567890'.
WRITE:/ '“char2” CO “1234567890” is TURE.'.
ELSE.
WRITE:/ '“char2” CO “1234567890” is FALSE.'.
ENDIF.
IF lv_char20 CO '1234567890'.
WRITE:/ '“char20” CO “1234567890” is TURE.'.
ELSE.
WRITE:/ '“char20” CO “1234567890” is FALSE.'.
ENDIF.
IF lv_str CO '1234567890'.
WRITE:/ '“STRING” CO “1234567890” is TURE.'.
ELSE.
WRITE:/ '“STRING” CO “1234567890” is FALSE.'.
ENDIF.
执行结果:

此处需要注意的是:lv_str、lv_char20、lv_char2的值同样都是 '72',但lv_char20的输出结果却和其他两个变量不一样,考虑是变量类型的原因(可能是定义的长度过长,被系统当作空格来处理了?)。
2020.05.11更新
关键字CS不会出现上文提到的CO/CN/CA的变量数据类型问题。
如 '12345' CS '123' 为真。
探讨在ABAP编程中,不同类型的变量(如STRING, CHAR20, CHAR2)使用运算符CO进行比较时,变量类型如何影响运算结果。通过实例说明,当变量值相同但类型不同时,运算结果可能不同。
5204

被折叠的 条评论
为什么被折叠?



