ABAP新语法(2)
(2022-09-03 14:01:44)
标签:
abapalvf4liumengsap |
分类: 偶尔会用到的东西 |
我自己多多少少有点怀旧,不太使用新语法。
但是这个项目,周边小孩都比我小十来岁,人家还是很喜欢研究新东西的,而且项目里很多代码,确实都是用的新语法。
不用也得能看懂吧。索性也鼓捣鼓捣。
内表 filter
REPORT ZLM_FILTER.
TYPES: BEGIN OF TY_FILTER,
CITYFROM TYPE SPFLI-CITYFROM,
CITYTO TYPE SPFLI-CITYTO,
END OF TY_FILTER,
*& 需要是排序表或者哈希表
* TY_FILTER_TAB TYPE SORTED TABLE OF TY_FILTER WITH UNIQUE KEY CITYFROM CITYTO.
TY_FILTER_TAB TYPE HASHED TABLE OF TY_FILTER WITH UNIQUE KEY CITYFROM CITYTO.
*& 查询所有数据
SELECT * FROM SPFLI INTO TABLE @DATA(LT_SPLFI).
SORT LT_SPLFI by CITYFROM.
*筛选数据
DATA(LT_FILTER) = VALUE TY_FILTER_TAB(
( CITYFROM = 'NEW YORK' CITYTO ='SAN FRANCISCO' )
( CITYFROM = 'FRANKFURT' CITYTO = 'NEW YORK' ) ).
DATA(LT_RESULT) = FILTER #( LT_SPLFI IN LT_FILTER
WHERE CITYFROM = CITYFROM
AND CITYTO = CITYTO ).
*排除
DATA(LT_EXCEPT) = FILTER #( LT_SPLFI EXCEPT IN LT_FILTER
WHERE CITYFROM = CITYFROM
AND CITYTO = CITYTO ).
CL_DEMO_OUTPUT=>WRITE( LT_SPLFI ).
CL_DEMO_OUTPUT=>WRITE( LT_RESULT ).
CL_DEMO_OUTPUT=>WRITE( LT_EXCEPT ).
CL_DEMO_OUTPUT=>DISPLAY( ).
*版权声明:本文为CSDN博主「尤其是十月的风」的原创文章,遵循CC
4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 *原文链接:https://blog.csdn.net/qq_34060435/article/details/117109771
*---------------------------------------------------------------------*
* LET关键字可以使用在VALUE,SWITCH,COND等语句中;
* 与 FOR 语句类似,LET 语句中定义的临时变量同样只能在当前语句中使用,
* 在其他语句中使用时会检查出语法错误
*---------------------------------------------------------------------*
TYPES: BEGIN OF TY_DATA,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
MATKL TYPE MARA-MATKL,
TEXT1 TYPE CHAR50,
END OF TY_DATA.
DATA LT_DATA TYPE TABLE OF TY_DATA.
LT_DATA = VALUE #(
( MATNR = 'MATRIAL-001'
MTART = 'WATR'
MATKL = '1020'
TEXT1 = 'FIRST material' )
( MATNR = 'MATRIAL-002'
MTART = 'FOOD'
MATKL = '1030'
TEXT1 = 'SECOND material' )
( MATNR = 'MATRIAL-003'
MTART = 'WATR'
MATKL = '1040'
TEXT1 = 'THIRD material' )
).
DATA(LW_LINE) = VALUE TY_DATA( LET
LW_DATA = VALUE #( LT_DATA[ MATNR = 'MATRIAL-001' ] OPTIONAL )
LV_STR = 'Date:' && SY-DATUM
IN
MATNR = LW_DATA-MATNR
MTART = LW_DATA-MTART
MATKL = LW_DATA-MATKL
TEXT1 = LV_STR
).
CALL METHOD CL_DEMO_OUTPUT=>DISPLAY( LW_LINE ).
Group by
DATA LT_TMP TYPE TABLE OF SFLIGHT.
START-OF-SELECTION.
SELECT * FROM SFLIGHT INTO TABLE @DATA(LT_SFLIGHT)
WHERE PLANETYPE = 'A340-600'.
LOOP AT LT_SFLIGHT INTO DATA(LS_SFLIGHT)
GROUP BY (
CARRID = LS_SFLIGHT-CARRID
CONNID = LS_SFLIGHT-CONNID
)
ASCENDING INTO DATA(LT_GROUP)
. LOOP AT GROUP LT_GROUP INTO DATA(LS_GROUP).
APPEND LS_GROUP TO LT_TMP.
ENDLOOP.
CL_DEMO_OUTPUT=>WRITE( LT_TMP ). CLEAR LT_TMP[].
ENDLOOP. CL_DEMO_OUTPUT=>DISPLAY( ).
SQL语句:这个有点意思,原来这种截取取数还挺麻烦的。
SELECT * FROM spfli
WHERE LEFT( CARRID , 1 ) = 'A'
INTO TABLE @DATA(gt_data).
CL_DEMO_OUTPUT=>WRITE( gt_data ).
SELECT * FROM spfli
WHERE RIGHT( CARRID , 1 ) = 'Z'
INTO TABLE @DATA(gt_data2).
CL_DEMO_OUTPUT=>WRITE( gt_data2 ).
SELECT * FROM spfli
WHERE SUBSTRING( CARRID , 1,1 ) = 'A'
INTO TABLE @DATA(gt_data3).
CL_DEMO_OUTPUT=>WRITE( gt_data3 ).
SELECT * FROM spfli
WHERE SUBSTRING( CARRID , 2,1 ) = 'Z'
INTO TABLE @DATA(gt_data4).
CL_DEMO_OUTPUT=>WRITE( gt_data4 ).
CL_DEMO_OUTPUT=>display( ).
先整理这些吧,别的我回头查查继续补充。
最后附上网上的一张图:
参考资料(不完全统计哈,可能随手给关了)
https://www.cnblogs.com/learnning/p/10647174.html
https://blog.csdn.net/zhongguomao/article/details/104544092
https://blog.csdn.net/Qunending/article/details/124927276?spm=1001.2101.3001.6650.6&utm_medium=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-6-124927276-blog-104544092.pc_relevant_multi_platform_featuressortv2removedup&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~BlogCommendFromBaidu~Rate-6-124927276-blog-104544092.pc_relevant_multi_platform_featuressortv2removedup&utm_relevant_index=1