ABAP--新语法--Data Processing--第一天--String Template 字符串模板

本文介绍了SAP中字符串模板的使用,包括在|...|之间的定义、变量的使用和格式控制。通过示例展示了如何处理字符串连接、格式转换以及日期格式化,并解释了特殊字符的转义规则。此外,还提供了错误处理和实际输出效果,帮助理解模板字符串的运行机制。
摘要由CSDN通过智能技术生成

String Template 字符串模板

新语法引入了字符串模板,用于处理字符串连接以及格式转换

字符串模板在 | ... | 之间定义,主要分为两部分,固定文本和变量

其中,变量只能在 { ... } 内使用,大括号之外的所有字符均作为固定文本使用,空格始终不会被忽略,见例1

在使用变量时,可以通过控制语句来指定数据的显示格式,如例2,将日期用系统格式输出

在固定文本中,如果出现 |{ } 或 \ 等特殊字符时,需要使用转义符 \,如例3

例1:

1DATA(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|.

测试结果:
在这里插入图片描述

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值