今天是2020年5月2日,五一国际劳动节小长假的第二天。让我们继续劳动起来。
使用ABAP strlen函数计算下列这4个字符和字符串变量中包含的字符个数。
大家先别急着滑动屏幕,先试着自己计算一下,看和标准答案是否有出入。也许大家觉得这些小的知识点没什么用,但Jerry马上会分享一个我实际处理过的客户incident,正是由于类似这种看似不起眼的小知识点没有留意,最后影响了项目进展。
正确答案,依次是:
2
1
19
17
逐一解释。
strlen( lv_s ) = 2
整型变量的值,整数1,赋给字符串变量lv_s, 这里发生一个隐式类型转换。
SAP帮助文档里声明,整型变量赋给字符串变量时,如果整数为负数,则字符串变量末尾为"-";如果整数为正数,则字符串变量末尾为空白字符。换言之,当整型变量到字符串变量的隐式类型转换发生时,字符串变量末尾会多出一位,代表赋值源头的整型数的符号位。
lv_s多出来的这个空白字符在调试器里看得很清楚,2000正是空白字符的16进制编码。同时调试器里也能看到lv_s的字符串个数为2.
strlen( lv_s2 ) = 1
和前一例相比,lv_s2的复制操作没有出现隐式类型转换,而是直接被赋以了一个字符常量,故字符个数为1.
strlen( lv_ss) = 19
lv_ss的类型为SSTRING,实际就是一个CHAR20: