货铺QQ群号:834508274
下面开始干货:
做运维的时候,发现一个问题。
只有特定情况下出现了错误。
debug的时候发现是一条SQL语句取数没取全。
原因就是使用了 FOR ALL ENTRIES IN。
直接看demo:
SPFLI表数据
代码
首先在 1处打断点
只取出来4条
自动去重了
再到断点2
9条,数据是全的
所以以后使用 FOR ALL ENTRIES IN 的时候,select的字段要斟酌好,最好把所有主键都取出来,防止自动去重的时候丢数据
demo代码
*&---------------------------------------------------------------------*
*& Report ZLM_TEST02
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zlm_test02.
DATA:lt_spfli1 TYPE TABLE OF spfli.
DATA:lt_spfli2 TYPE TABLE OF spfli.
SELECT * FROM spfli INTO TABLE lt_spfli1
WHERE cityfrom = 'FRANKFURT'.
CHECK sy-subrc = 0.
SELECT
cityfrom
airpfrom
cityto
FROM spfli
INTO CORRESPONDING FIELDS OF TABLE lt_spfli2
FOR ALL ENTRIES IN lt_spfli1
WHERE cityfrom = lt_spfli1-cityfrom
AND airpfrom = lt_spfli1-airpfrom.
IF 1 = 2.
ENDIF.
SELECT
cityfrom
airpfrom
cityto
FROM spfli
INTO CORRESPONDING FIELDS OF TABLE lt_spfli2
WHERE cityfrom = 'FRANKFURT'
AND airpfrom = 'FRA' .
IF 1 = 2.
ENDIF.