1 字段表达式
2 data carrid type scarr-carrid value 'LH'.
3 select from scar
4 fields carrid,
5 carrname
6 into table @data(lt_carriers).
7 select from spfli
8 fields '*' as mark,
9 @carrid as id,
10 @( lt_carriers[ carrid = carrid ]-carrname ) as carrier,
11 connid
12 into table @data(lt_result).
13 cl_demo_output=>display( lt_result ).
14
15 数学运算
16 data(offset) = 100.
17
18 select id,
19 num1,
20 num2,
21 dec2,
22 @offset as offset,
23 num1 * num2 as mul,
24 @offset + abs( num1 - num2 ) as sum,“绝对值
25 cast( num1 as fltp ) / cast( num2 as fltp ) as div,”cast强转
26 div( num1, num2 ) as div_f,”相除取整数
27 ceil( cast( dec2 as quan( 13,3 ) ) ) as ceil,"向上取整
28 floor( cast( dec2 as curr( 13,3 ) ) ) as floor,"向下取整
29 round( dec2, 2 ) as round,"四舍五入
30 division( num1, num2, 2 ) as division,
31 mod( num1, num2 ) as mod“取余数
32 from demo_expressions
33 order by sum descending
34 into table @data(lt_results).
35
36
37 字符串处理
38 select single
39 char1 as text1,
40 char2 as text2,
41 char1 && '-' && char2 as concat_by_line,"符号拼接
42 concat( char1,char2 ) as concat, "函数拼接
43 concat_with_space( char1,char2, 3 ) as concat_space,"中间添加3个空格
44 instr( char1,' 0' ) as instr, "获取目标‘0’之后的单个字符
45 left( char1,3 ) as left,"返回左数前3位子字符串
46 right( char1,3 ) as right,"返回右数前3位子字符串
47 length( char1 ) as length,"字符串长度
48 lpad( char1,10,'0' ) as lpad,"左侧补位字符‘x’至长度10
49 rpad( char1,10,'0' ) as rpad,"右侧补位字符'x'至长度10
50 ltrim( char1,' ' ) as ltrim,"判断左侧第一位字符是否等于目标字符,等于则删除该字符
51 rtrim( char1,'3' ) as rtrim,"判断右侧第一位字符是否等于目标字符,等于则删除该字符
52 replace( char1,'12','__' ) as replace,"字符串替换
53 substring( char1,3,3 ) as substring,"获取子字符串
54 lower( char2 ) as lower,"小写转换
55 upper( char2 ) as upper"大写转换
56 from demo_expressions
57 into @data(lt_result).
58
59 CAST强制转换
60 get time stamp field data(timestamp).
61 delete from demo_expressions.
62 insert demo_expressions from @(
63 value #( id = 'X' timestamp1 = timestamp ) ).
64
65 select single
66 from demo_expressions
67 fields cast( cast( div( timestamp1 , 1000000 )
68 as char )
69 as dats ) as date,
70 cast( substring( cast( timestamp1
71 as char ), 9, 6 )
72 as tims ) as time
73 into @data(wa).
74
75 cl_demo_output=>display( wa ).
76
77 日期时间函数
78 delete from demo_expressions.
79 insert demo_expressions from @(
80 value #( id = 'X' dats1 = sy-datum dats2 = sy-datum + 100 ) ).
81
82 select single dats1, dats2,
83 dats_is_valid( dats1 ) as valid,“日期是否有效
84 dats_days_between( dats1, dats2 ) as days_between, “相差多少天
85 dats_add_days( dats1,100 ) as add_days,“添加100天后的日期
86 dats_add_months( dats1,-1 ) as add_month”减一个月后的日期
87 from demo_expressions
88 into @data(lt_result).
89
90 cl_demo_output=>display( lt_result ).
91
92
93
94
95 CASE-Complex case distinction语法
96 select from spfli
97 fields carrid,
98 connid,
99 cityfrom,
100 cityto,
101 fltime,
102 case when fltime < 5000 then 'short'
103 when fltime between 5000 and 9999 then 'medium'
104 else 'long'
105 end as fltype
106 order by carrid, connid
107 into table @data(result).
108 合并(coalesce) 用于指定特定的值代替outer join中出现的null值
109 select aufk~aufnr,
110 resb~rsnum,
111 resb~rspos,
112 coalesce( resb~rsnum , '9999' ) as rsnum_c,
113 coalesce( resb~rspos, '99' ) as rspos_c
114 from aufk
115 left outer join resb
116 on aufk~aufnr eq resb~aufnr
117 into table @data(lt_aufk)
118 up to 99 rows.