1、当where条件中某一个参数有多个值时
错误做法:
View Code
"包装材料
SELECT SINGLE * FROM kotp001 WHERE kappl = 'PO'
AND kschl = 'SHIP'
AND matnr in p_matnr .
" AND datab <= p_erdat
"AND datbi >= p_erdat.
IF sy-subrc = 0.
CLEAR lt_packpo[].
SELECT
packpo~packnr
packpo~paitemtype
packpo~matnr
packpo~trgqty
packpo~unitqty
packkp~POBJID
INTO CORRESPONDING FIELDS OF TABLE lt_packpo FROM packpo
INNER JOIN kondp ON packpo~packnr = kondp~packnr"包装对象 KBvbEBiG2X3X0800hAWA
INNER JOIN packkp on packpo~packnr = packkp~packnr
WHERE kondp~knumh = kotp001-knumh. "条件记录号0000056149
SELECT SINGLE * FROM kotp001 WHERE kappl = 'PO'
AND kschl = 'SHIP'
AND matnr in p_matnr .
" AND datab <= p_erdat
"AND datbi >= p_erdat.
IF sy-subrc = 0.
CLEAR lt_packpo[].
SELECT
packpo~packnr
packpo~paitemtype
packpo~matnr
packpo~trgqty
packpo~unitqty
packkp~POBJID
INTO CORRESPONDING FIELDS OF TABLE lt_packpo FROM packpo
INNER JOIN kondp ON packpo~packnr = kondp~packnr"包装对象 KBvbEBiG2X3X0800hAWA
INNER JOIN packkp on packpo~packnr = packkp~packnr
WHERE kondp~knumh = kotp001-knumh. "条件记录号0000056149
正确做法:
View Code
"包装材料
SELECT *
into CORRESPONDING FIELDS OF table lt_kotp001
FROM kotp001
WHERE kappl = 'PO' AND kschl = 'SHIP'
AND matnr in p_matnr . " '000000101100001566'. "
IF sy-subrc = 0.
CLEAR lt_packpo[].
SELECT
packpo~packnr
packpo~paitemtype
packpo~matnr
packpo~trgqty
packpo~unitqty
packkp~POBJID
FROM packpo
INNER JOIN kondp ON packpo~packnr = kondp~packnr"包装对象 KBvbEBiG2X3X0800hAWA
INNER JOIN packkp on packpo~packnr = packkp~packnr
INTO CORRESPONDING FIELDS OF TABLE lt_packpo
FOR ALL ENTRIES IN lt_kotp001 "用于where条件有多个值*******
WHERE kondp~knumh = lt_kotp001-knumh. "条件记录号0000056149
SELECT *
into CORRESPONDING FIELDS OF table lt_kotp001
FROM kotp001
WHERE kappl = 'PO' AND kschl = 'SHIP'
AND matnr in p_matnr . " '000000101100001566'. "
IF sy-subrc = 0.
CLEAR lt_packpo[].
SELECT
packpo~packnr
packpo~paitemtype
packpo~matnr
packpo~trgqty
packpo~unitqty
packkp~POBJID
FROM packpo
INNER JOIN kondp ON packpo~packnr = kondp~packnr"包装对象 KBvbEBiG2X3X0800hAWA
INNER JOIN packkp on packpo~packnr = packkp~packnr
INTO CORRESPONDING FIELDS OF TABLE lt_packpo
FOR ALL ENTRIES IN lt_kotp001 "用于where条件有多个值*******
WHERE kondp~knumh = lt_kotp001-knumh. "条件记录号0000056149
2.将一个内表数据导入到另一个内表中,但有前提条件(lt_packpo导入到lt_pack )
View Code
SELECT
packkp~POBJID
"packpo~packnr
packpo~paitemtype
packpo~matnr
packpo~trgqty
packpo~unitqty
FROM packpo
INNER JOIN kondp ON packpo~packnr = kondp~packnr"包装对象 KBvbEBiG2X3X0800hAWA
INNER JOIN packkp on packpo~packnr = packkp~packnr
INTO CORRESPONDING FIELDS OF TABLE lt_packpo
FOR ALL ENTRIES IN lt_kotp001 "用于where条件有多个值*******
WHERE kondp~knumh = lt_kotp001-knumh. "条件记录号0000056149
"将成品数据全部导入内表lt_pack (将纸盒与成品合并成一条语句)
LOOP AT lt_packpo into wa_packpo WHERE paitemtype = 'I'."成品
IF sy-subrc = 0.
wa_pack-POBJID = wa_packpo-POBJID.
wa_pack-paitemtype = wa_packpo-paitemtype.
wa_pack-matnr = wa_packpo-matnr.
wa_pack-trgqty = wa_packpo-trgqty.
wa_pack-unitqty = wa_packpo-unitqty.
APPEND wa_pack TO lt_pack.
ENDIF.
ENDLOOP.
packkp~POBJID
"packpo~packnr
packpo~paitemtype
packpo~matnr
packpo~trgqty
packpo~unitqty
FROM packpo
INNER JOIN kondp ON packpo~packnr = kondp~packnr"包装对象 KBvbEBiG2X3X0800hAWA
INNER JOIN packkp on packpo~packnr = packkp~packnr
INTO CORRESPONDING FIELDS OF TABLE lt_packpo
FOR ALL ENTRIES IN lt_kotp001 "用于where条件有多个值*******
WHERE kondp~knumh = lt_kotp001-knumh. "条件记录号0000056149
"将成品数据全部导入内表lt_pack (将纸盒与成品合并成一条语句)
LOOP AT lt_packpo into wa_packpo WHERE paitemtype = 'I'."成品
IF sy-subrc = 0.
wa_pack-POBJID = wa_packpo-POBJID.
wa_pack-paitemtype = wa_packpo-paitemtype.
wa_pack-matnr = wa_packpo-matnr.
wa_pack-trgqty = wa_packpo-trgqty.
wa_pack-unitqty = wa_packpo-unitqty.
APPEND wa_pack TO lt_pack.
ENDIF.
ENDLOOP.