ABAP S4 新语法记录(如+with、select内表、range、过滤器filter、分组loop…group、字符串拼接含空格)

1.EXSTS

注意:where后面 添加需要判断的字段
在这里插入图片描述

2. +with

注意:with 后面的 +内表名 可以有多个 ,但是后面只能紧接一个sql;需要用到多次可以使用union关键字 连接
在这里插入图片描述

3.case…

需要as 别名
在这里插入图片描述

4.select内表

**注意:**内表名前 需要@, 且需要as 别名

         定义或参考结构,不能是@data定义的

在这里插入图片描述

5.CONCAT(字符串拼接)、Substring用法(字符串截取)

字符串拼接
在这里插入图片描述

SELECT-OPTIONS: s_spmon FOR mcs1-spmon DEFAULT sy-datum+0(6) ." 期间

SELECT kalnr_mat,bdatj,poper,lbkum,salk3,estprd,estkdm,mstprd
   FROM fcml_rep_ddl
    FOR ALL ENTRIES IN @lt_ckmlhd
  WHERE kalnr_mat = @lt_ckmlhd-kalnr
    AND categ = 'ZU'
    AND curtp = '10'
    AND concat( bdatj ,substring( poper,2,2 ) ) IN @s_spmon
   INTO TABLE @DATA(lt_fcml_ddl).
 SORT lt_fcml_ddl BY kalnr_mat bdatj poper.

时间戳拼接

在这里插入图片描述

6.过滤器

1.内表定义需指定:WITH NON-UNIQUE SORTED KEY……COMPONENTS……
过滤器的条件字段都需要再COMPONENTS之后定义,不然会报错;

2.类型转换的问题
提示类型不兼容,可以使用 #CONV语法强制转换;

DATA: gt_itab TYPE STANDARD TABLE OF marc WITH NON-UNIQUE SORTED KEY itab_key COMPONENTS werks matnr.

DATA: gt_sort TYPE SORTED TABLE OF marc WITH NON-UNIQUE KEY matnr.

DATA: lv_werks TYPE werks_d VALUE '2110'.
DATA: lv_matnr TYPE matnr.

START-OF-SELECTION.

  SELECT * INTO TABLE gt_itab FROM marc.

  DATA(gt_fil) = FILTER #( gt_itab USING KEY itab_key WHERE werks = lv_werks AND matnr = CONV #( 'DE10000003' ) ).
  gt_sort = FILTER #( gt_itab USING KEY itab_key WHERE werks = lv_werks ).

  DO 7 TIMES.

  ENDDO.

7.LOOP…GROUP…

基础使用

TYPES: BEGIN OF ty_test,
         matnr TYPE matnr,
         werks TYPE werks,
         bdmng TYPE bdmng,
         sum   TYPE bdmng,
       END OF ty_test.

DATA: gt_itab TYPE TABLE OF ty_test.

START-OF-SELECTION.

  gt_itab = VALUE #(
  ( matnr = 'M001' werks = '1000' bdmng = 11 )
  ( matnr = 'M001' werks = '1006' bdmng = 7 )
  ( matnr = 'M003' werks = '1000' bdmng = 1 )
  ( matnr = 'M003' werks = '1006' bdmng = 4 )
  ( matnr = 'M001' werks = '2000' bdmng = 5 )
  ( matnr = 'M003' werks = '2000' bdmng = 6 )
  ).

  "loop ... group ...用法
  "group size:指分组总条目数;

  LOOP AT gt_itab INTO DATA(gs_itab) GROUP BY ( werks = gs_itab-werks size = GROUP SIZE ) INTO DATA(ls_key).
    WRITE: / '组:', ls_key-werks, ls_key-size.

    "1.可以通过分组关键值 ls_key-werks对内表进行更新

    "2. 这里的ls_key就是分组关键值得数据了
    LOOP AT GROUP ls_key INTO DATA(ls_itab).
      WRITE: / ls_itab-matnr, ls_itab-werks, ls_itab-bdmng.
    ENDLOOP.
  ENDLOOP.

8.字符串拼接

 DATA(lv_cnt) = ls_btci-fnam+17(2).
 lv_cnt = lv_cnt + 2.
 fnam = |MSICHTAUSW-KZSEL({ lv_cnt })|.

9.REDUCE–符合条件的计数

  DATA(lv_sum) = REDUCE #(
        INIT count = 0
        FOR ls_table IN gt_out2
        WHERE ( sel = 'X' )
        NEXT count = count + 1 ).

10.type range of

DATA: r_werks TYPE RANGE OF matdoc-werks.

 r_werks  = VALUE #(
           	 BASE r_werks
    		( sign = 'I' option = 'EQ' low = <fs_config>-werks )
   		    ).

11.字符串拼接(空格)

DATA(result) = |{ sy-datum } { sy-uzeit }|.
DATA(result2) = |{ sy-datum }你好{ sy-uzeit }|.

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值