Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Abap 对于通过空itab的所有条目,从DB中选择所有记录_Abap_Opensql - Fatal编程技术网

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程序员也会时不时地陷入其中。