转载学习一下,正好用到,谢谢。
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。
综上,我们可以更合理的使用这三个符号,从而让我们的程序变得更加规范和美观。