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 }|.

&spm=1001.2101.3001.5002&articleId=157022019&d=1&t=3&u=1800f629ac1b4b588cca97487b7b8780)
1311

被折叠的 条评论
为什么被折叠?



