DATA: lt_1 TYPE TABLE OF zspfli_tc .
DATA: ls_1 TYPE zspfli_tc.
TYPES: BEGIN OF lt_bkpf ,
bukrs TYPE bkpf-bukrs,
belnr TYPE bkpf-belnr,
gjahr TYPE bkpf-gjahr,
stblg TYPE bkpf-stblg,
END OF lt_bkpf.
DATA: lt_2 TYPE TABLE OF lt_bkpf,
ls_2 TYPE lt_bkpf.
FIELD-SYMBOLS: <ls_1> TYPE zspfli_tc,
<ls_2> TYPE lt_bkpf.
SELECT carrid
connid
fldate
price
currency
belnr1
belnr2
budat1
budat2
FROM zspfli_tc
INTO CORRESPONDING FIELDS OF TABLE lt_1.
SORT lt_1 BY carrid connid fldate.
IF lt_1 IS NOT INITIAL.
SELECT bukrs
belnr
gjahr
stblg
FROM bkpf
INTO CORRESPONDING FIELDS OF TABLE lt_2
FOR ALL ENTRIES IN lt_1
WHERE ( bukrs = '1710'
AND belnr = lt_1-belnr1
AND gjahr = lt_1-budat1+0(4) )
OR ( bukrs = '1710'
AND belnr = lt_1-belnr2
AND gjahr = lt_1-budat2+0(4) ).
ENDIF.
SORT lt_2 by belnr gjahr.
LOOP AT lt_1 ASSIGNING <ls_1>.
READ TABLE lt_2 ASSIGNING <ls_2> WITH KEY belnr = <ls_1>-belnr1
gjahr = <ls_1>-budat1+0(4)
BINARY SEARCH.
IF sy-subrc = 0.
IF <ls_2>-stblg <> ''.
DELETE TABLE lt_1 FROM <ls_1>.
CONTINUE.
ENDIF.
ENDIF.
READ TABLE lt_2 ASSIGNING <ls_2> WITH KEY belnr = <ls_1>-belnr2
gjahr = <ls_1>-budat2+0(4).
IF sy-subrc = 0.
IF <ls_2>-stblg <> ''.
DELETE TABLE lt_1 FROM <ls_1>.
ENDIF.
ENDIF.
ENDLOOP.
Test 1
于 2023-12-17 19:25:52 首次发布