Abap 对于通过空itab的所有条目,从DB中选择所有记录
我有一个查询,其中我对所有条目使用Abap 对于通过空itab的所有条目,从DB中选择所有记录,abap,opensql,Abap,Opensql,我有一个查询,其中我对所有条目使用。内部表lt\u customer没有记录 SELECT * FROM bsid INTO CORRESPONDING FIELDS OF TABLE lt_customer2 FOR ALL ENTRIES IN lt_customer WHERE bukrs EQ p_bukrs AND belnr EQ lt_customer-belnr AND gjahr EQ lt_customer-gjahr.
。内部表lt\u customer
没有记录
SELECT *
FROM bsid
INTO CORRESPONDING FIELDS OF TABLE lt_customer2
FOR ALL ENTRIES IN lt_customer
WHERE bukrs EQ p_bukrs
AND belnr EQ lt_customer-belnr
AND gjahr EQ lt_customer-gjahr.
现在,由于lt\u customer
没有记录,我希望这里有一个转储。但事实证明,它正在将所有记录从bsid
选择到lt\u customer2
。我不明白为什么或者如何。请开导我。谢谢 所有条目的工作方式与运算符中的类似。如果itab为空,则忽略此条件。您需要进行手动检查或向lt_customer添加虚拟记录。这是标准行为,如ABAP帮助中所述:
如果内部表itab为空,则忽略整个WHERE条件
在选择前检查表是否为空:
IF lt_customer IS NOT INITIAL.
SELECT ...
...
FOR ALL ENTRIES IN lt_customer
...
ENDIF.
谢谢,由于数据量很大,它会抛出内存分配的转储bc。再次感谢@Kjarlvi这是一个非常常见的陷阱,即使是经验丰富的ABAP程序员也会时不时地陷入其中。