Loops 选择所有条目与在ABAP中循环选择单个条目
我正在比较所有条目的Loops 选择所有条目与在ABAP中循环选择单个条目,loops,select,abap,opensql,Loops,Select,Abap,Opensql,我正在比较所有条目的SELECT与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~
SELECT
与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.
选择所有条目
返回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 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.
循环选择单个
返回7.336条记录
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 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.
表
EKBE
的键字段比EBELN
和EBELP
多,因此对于唯一的EBELN
/EBELP
对,可以有更多的条目。使用选择SINGLE
您将不会获得这些额外的条目,而使用为所有条目获得这些额外条目。根据您的需要,其中只有一个将为您提供正确的数据集。只需添加。
在循环中选择SINGLE
是一个非常糟糕的主意。
如果您需要ebeln
+ebelp
从ekpo
中选择这两个到附加表lt_ekpo
(不要忘记DISTINCT
),并将其用于所有条目
您的意思是运行时的差异,或者在T_ekbe表中的实际结果中?T_ekpo是一个排序表吗?他还需要小心,因为如果T_ekpo恰好为空,“FOR ALL ENTRIES”不会像您预期的那样选择任何记录,而是选择所有记录(符合WHERE子句)。