内表过滤代替LOOP where 循环:FILTER关键字用法
方式一:
DATA:LT_MARA_ALL TYPE TABLE OF MARA,
LT_MARA_8010 TYPE TABLE OF MARA.
SELECT * INTO TABLE @LT_MARA_ALL FROM MARA WHERE ERSDA BETWEEN '20240101' AND '20241231'.
LOOP AT LT_MARA_ALL INTO DATA(LS_MARA_ALL) WHERE MTART = '8010'.
APPEND LS_MARA_ALL TO LT_MARA_8010.
CLEAR:LS_MARA_ALL.
ENDLOOP.
方式二:
DATA:LT_MARA_ALL TYPE STANDARD TABLE OF MARA WITH NON-UNIQUE SORTED KEY MTART COMPONENTS MTART,
LT_MARA_8010 TYPE TABLE OF MARA.
SELECT * INTO TABLE @LT_MARA_ALL FROM MARA WHERE ERSDA BETWEEN '20240101' AND '20241231'.
IF SY-SUBRC EQ 0.
LT_MARA_8010 = FILTER #( LT_MARA_ALL USING KEY MTART WHERE MTART = '8010' ).
ENDIF.
方式三:
DATA:LT_MARA_ALL TYPE STANDARD TABLE OF MARA WITH NON-UNIQUE SORTED KEY MTART COMPONENTS MTART,
LT_MARA_FINAL TYPE TABLE OF MARA.
SELECT * INTO TABLE @LT_MARA_ALL FROM MARA WHERE ERSDA BETWEEN '20240101' AND '20241231'.
DATA FILTER_TABLE TYPE SORTED TABLE OF MARA-MTART WITH UNIQUE KEY TABLE_LINE.
FILTER_TABLE = VALUE #( ( '8010' ) ( '8070' ) ).
LT_MARA_FINAL = FILTER #( LT_MARA_ALL IN FILTER_TABLE WHERE MTART = TABLE_LINE ).

浙公网安备 33010602011771号