String Template 字符串模板
新语法引入了字符串模板,用于处理字符串连接以及格式转换
字符串模板在 | ... | 之间定义,主要分为两部分,固定文本和变量
其中,变量只能在 { ... } 内使用,大括号之外的所有字符均作为固定文本使用,空格始终不会被忽略,见例1
在使用变量时,可以通过控制语句来指定数据的显示格式,如例2,将日期用系统格式输出
在固定文本中,如果出现 | ,{ } 或 \ 等特殊字符时,需要使用转义符 \,如例3
例1:
(1)
DATA(lv_vbeln) = CONV vbeln( '123456' ). "CONV转换字符格式,将lv_vbeln转换为vbeln的格式:char10
lv_vbeln = |{ lv_vbeln ALPHA = IN }|. "ALPHA = IN 增加前导0,ALPHA = Out 删除前导0
lv_vbeln = | { lv_vbeln ALPHA = IN }|. "对lv_vbeln重新赋值,第一个|与第一个{之间增加了空格,作为固定文本占据一个字符位置
测试结果:
注:在第二次赋值时,因为空格已经占据了第一位字符,导致最后一位字符被截断
系统输出时,前导0不显示
(2)当增加固定文本
data(lv_vbeln1) = conv vbeln('123456').
lv_vbeln1 = |0{ lv_vbeln1 }7|.
测试结果:
(3)当增加固定文本和前导0
data(lv_vbeln1) = conv vbeln('123456').
lv_vbeln1 = |0{ lv_vbeln1 ALPHA = in }7|.
测试结果:
例2:
(1)将日期转换为系统格式
这里date= environment是用来格式化日期的,将日期转换成系统格式。
DATA(lv_string) = |Today is { sy-datum DATE = ENVIRONMENT }|.
测试结果:
(2)对日期进行加减
表达式里必须有日期类型d才能使用DATE = environment,对日期进行加减时还需conv
sy-datlo 用于获取当前时间,输出格式:20210524
(1)
TYPES t_date_tab TYPE table of string with empty key.
DATA(date_tab) = VALUE t_date_tab(
( | { conv d( sy-datlo - 1 ) DATE = environment } | ) "当天日期前一天
( | { sy-datlo DATE = environment } | ) "当天日期
( | { conv d( sy-datlo + 1 ) DATE = environment } | ) ). "当天日期后一天
cl_demo_output=>DISPLAY( date_tab ).
测试结果:
(2)若是直接用数值取代sy-datlo,无法进行日期计算
TYPES t_date_tab1 TYPE table of string with empty key.
DATA(date_tab1) = VALUE t_date_tab1(
( | { conv d( 20210501 - 1 ) DATE = environment } | ) " 00.00.0000
( | { conv d( 20210501 + 1 ) DATE = environment } | ) " 00.00.0000
( | { conv d( 20210501 ) DATE = environment } | ) " 00.00.0000
( | { conv d( 20210531 - 1 ) DATE = environment } | ) )." 00.00.0000
cl_demo_output=>DISPLAY( date_tab1 ).
测试结果:
例3:
当有特殊符号时,在前面增加“\”,如:| 、{ } 或 \
data(lv_vbeln1) = conv vbeln('123').
lv_vbeln1 = |\\\|{ lv_vbeln1 }\}7|.
测试结果: