我正在比较SELECT FOR ALL ENTRIES
与LOOP SELECT SINGLE
,我的结果之间存在很大差异。
有人可以帮我这个吗?有什么区别?
SELECT ekko~ebeln
ekpo~ebelp
ekko~bstyp
ekko~bsart
ekko~lifnr
ekko~ekgrp
ekko~aedat
ekko~knumv
ekko~zterm
ekko~zbd1t
ekpo~matnr
ekpo~txz01
ekpo~menge
ekpo~meins
ekpo~netpr
ekpo~peinh
ekpo~knttp
ekpo~afnam
ekpo~wepos
INTO TABLE t_ekpo
FROM ekko
INNER JOIN ekpo ON
ekpo~ebeln EQ ekko~ebeln
WHERE ekko~lifnr IN s_lifnr
AND ekko~ekgrp IN s_ekgrp
AND ekko~ebeln IN s_ebeln
AND ekko~aedat IN s_aedat
AND ekko~bsart IN s_bsart
AND ekko~bstyp EQ 'F'
AND ekko~loekz EQ space
AND ekpo~matnr IN s_matnr
AND ekpo~ebelp IN s_ebelp
AND ekpo~loekz EQ space.
SELECT FOR ALL ENTRIES
会返回9.528条记录
SELECT ebeln
ebelp
zekkn
vgabe
gjahr
belnr
buzei
budat
menge
shkzg
FROM ekbe
INTO TABLE t_ekbe
FOR ALL ENTRIES IN t_ekpo
WHERE ebeln EQ t_ekpo-ebeln
AND ebelp EQ t_ekpo-ebelp
AND vgabe IN ('1','2').
LOOP SELECT SINGLE
返回7.336记录
LOOP AT t_ekpo INTO gs_ekpo.
CLEAR gs_ekbe.
SELECT SINGLE ebeln
ebelp
zekkn
vgabe
gjahr
belnr
buzei
budat
menge
shkzg
FROM ekbe
INTO gs_ekbe
WHERE ebeln EQ gs_ekpo-ebeln
AND ebelp EQ gs_ekpo-ebelp
AND vgabe IN ('1','2').
APPEND gs_ekbe TO T_ekbe.
ENDLOOP.
答案 0 :(得分:9)
表EKBE
包含的关键字段多于EBELN
和EBELP
,因此唯一EBELN
/ EBELP
对可以有更多条目。使用SELECT SINGLE
,您将无法获得这些额外的条目,而您使用的是FOR ALL ENTRIES
。根据您的需要,只有其中一个能为您提供正确的数据集。
答案 1 :(得分:2)
只想添加。
SELECT SINGLE
内的LOOP
非常糟糕。
如果您需要来自ebeln
的{{1}} + ebelp
,只需将此两个选择到另一个表ekpo
中(不要忘记此选择中的lt_ekpo
)并将其用于{ {1}}。