今天和大佬探討了一個為啥
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。
綜上,我們可以更合理的使用這三個符號,從而讓我們的程序變得更加規范和美觀。