ABAP-字段表达式/数学运算/字符串处理/CAST强制转换/日期时间函数/CASE-Complex case distinction语法/合并(coalesce) 用于指定特定的值代替outer join中出现的null值

  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.

 

posted @ 2023-03-07 10:42  ABAP-武汉  阅读(827)  评论(0)    收藏  举报