Built-In Functions
Built-In Functions
Num
常见的数值表达式如下:
- ABS:获取绝对值
- CEIL:向上取整
- FLOOR:向下取整
- DIV:除法计算,取整数位
- DIVISION:除法计算,保留 N 位小数
- MOD:除法计算,取余数
- ROUND:计算舍入值
DATA(lv_dec) = CONV zdec_3_demo( '-123.456' ).
abs( lv_dec )
ceil( lv_dec )
floor( lv_dec )
div( -4 , -3 )
division( -4 , -3 , 2 )
mod( -4 , -3 )
round( lv_dec , 2 )
round( lv_dec , -2 )
String
- CONCAT:连接字符串,参数固定为2个,各个表达式之间可以嵌套使用,CONCAT内部也可以使用 &&
- &&:连接字符串,参数没有个数限制,但不能将其他内嵌表达式当作参数使用,仅作为操作符使用,在非SELECT语句中也可以被使用
- CONCAT_WITH_SPACE:连接字符串,并用 N 个空格分隔,该表达式结果不能超过1333个字符
- INSTR:遍历字符串,查找指定字符 s1 并返回第一次出现的位置,没有查到则返回0
- LEFT/RIGHT:从字符串左/右侧开始取出 N 位字符,忽略前导/尾部的空格
- LENGTH:计算字符串长度
concat( carrid , currcode )
carrid && currcode
concat_with_space( carrid , currcode , 1 )
instr( carrid , 'BA' )
left( carrname , 4 )
right( carrname , 4 )
length( carrname )
Date/Time
- DATS_IS_VALID/TIMS_IS_VALID:校验日期/时间有效性,有效时返回 1,否则返回 0
- DATS_DAYS_BETWEEN:计算日期d1和d2相隔的天数
- DATS_ADD_DAYS:为指定日期加上N天
- DATS_ADD_MONTHS:为指定日期加上N月
DATA(lv_date) = CONV datum( '20181022' ).
dats_is_valid( fldate )
tims_is_valid( @sy-uzeit )
dats_days_between( fldate , @lv_date )
dats_add_days( fldate , 10 )
dats_add_months( fldate , 3 )
Time Stamp
- TSTMP_IS_VALID:校验时间戳有效性,有效时返回 1,否则返回 0
- TSTMP_CURRENT_UTCTIMESTAMP:返回当前时间戳
- TSTMP_SECONDS_BETWEEN:计算时间戳 t1 和 t2 相隔的秒数,需要用赋值语句进行传参,可以添加相应的错误处理
- TSTMP_ADD_SECONDS:为指定时间戳加上 N 秒,N 必须为 timestamp 类型
DATA(lv_stamp_now) = CONV timestamp( '20190603133559' ).
DATA(lv_stamp_past) = CONV timestamp( '20190602161408' ).
tstmp_is_valid( @lv_stamp_now )
tstmp_current_utctimestamp( )
tstmp_seconds_between( tstmp1 = @lv_stamp_past,
tstmp2 = @lv_stamp_now,
on_error = @sql_tstmp_seconds_between=>set_to_null )
tstmp_add_seconds( tstmp = @lv_stamp_now,
seconds = @( CONV timestamp( 999 ) ),
on_error = @sql_tstmp_add_seconds=>set_to_null )
Time Zone
- ABAP_USER_TIMEZONE:获取用户时区,不传参时默认获取当前用户当前 Client 的时区
- ABAP_SYSTEM_TIMEZONE:获取系统时区,不传参时默认获取当前 Client 的时区
abap_user_timezone( user = @( CONV uname( 'JIANGRE' ) ), client = '130',
on_error = @sql_abap_user_timezone=>set_to_null )
abap_system_timezone( client = '130', on_error = @sql_abap_system_timezone=>set_to_null )
Date/Time Conversion
- TSTMP_TO_DATS:将时间戳转换成对应时区的日期
- TSTMP_TO_TIMS:将时间戳转换成对应时区的时间
- TSTMP_TO_DST:根据时间戳获取对应时区的夏令时标识
- DATS_TIMS_TO_TSTMP:将日期和时间根据时区转换成时间戳
DATA(lv_stamp) = CONV timestamp( '20190603133559' ).
tstmp_to_dats( tstmp = @lv_stamp, tzone = @( CONV tznzone( 'CET' ) ) )
tstmp_to_tims( tstmp = @lv_stamp, tzone = @( CONV tznzone( 'CET' ) ) )
tstmp_to_dst( tstmp = @lv_stamp, tzone = @( CONV tznzone( 'CET' ) ) )
dats_tims_to_tstmp( date = @sy-datum, time = @sy-uzeit, tzone = @( CONV tznzone( 'CET' ) ) )
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hblog!