加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ABAP新语法(2)

(2022-09-03 14:01:44)
标签:

abap

alv

f4

liumeng

sap

分类: 偶尔会用到的东西

我自己多多少少有点怀旧,不太使用新语法。

但是这个项目,周边小孩都比我小十来岁,人家还是很喜欢研究新东西的,而且项目里很多代码,确实都是用的新语法。

不用也得能看懂吧。索性也鼓捣鼓捣。

内表 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




0

阅读 收藏 喜欢 打印举报/Report
后一篇:ABAP连连看
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有