DATA ts TYPE TABLE OF string.
ts = VALUE #( ( 'A' ) ).
写法会报错的问题,报错为类型冲突。
从而重新理解了char以及string,字符串操作的几个符号。
首先,abap对string的定义为:a text string literal,这是个deep的结构。 char类型的定义为A text field literal,是个常规结构。
我们先分析'' ``的区别,从abap关键字文档查询可知:
| Syntax | Name | Possible Characters |
| '...' | Text field literal | String of any alphanumeric characters. The data type is c with the length of the enclosed characters (including trailing blanks). |
| `...` | Text string literal | String of any alphanumeric characters. The data type is string. A text string literal can have a maximum of 255 characters. |
由上可知,' '的本意为创建一个c类型,所以我们常用的string = ' '.其实都是不规范的,这是创建了一个C类型强行赋值给了string,正规的写法应该是string = ``.
当然了,我们对abap程序的要求向来都是能用就行...
接下来是||,测试可知,||用来创建也是不会错的,那||是个什么东西呢?
最初我只是用||来拼接字符串(很好用),用来替代&,从未考虑过深层次的东西。
这回我认真查了一发。看到了这么一句话:new syntax form of string template |{}|
从string template我们可知,这东西的目的就是构造一个string
The purpose of a string template is to create a new character string out of literal texts and embedded expressions.
简单翻译就是,这玩意就是用文本加内嵌的表达式({变量})创建一个新的string。
综上,我们可以更合理的使用这三个符号,从而让我们的程序变得更加规范和美观。
ABAP中的字符串操作:理解char与string及符号用法
文章讨论了在ABAP中遇到的类型冲突问题,特别是关于字符串的定义和使用。与`之间的区别在于前者创建的是c类型,而后者是string类型。||用于字符串拼接,属于新的字符串模板形式,可用于构建包含表达式的字符字符串。建议使用更规范的符号以提升代码质量。
1591

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



