0
点赞
收藏
分享

微信扫一扫

关于 FOR ALL ENTRIES IN 去重

Resin_Wu 2022-09-30 阅读 256

货铺QQ群号:834508274

下面开始干货:


做运维的时候,发现一个问题。

只有特定情况下出现了错误。

debug的时候发现是一条SQL语句取数没取全。

原因就是使用了 FOR ALL ENTRIES IN。

直接看demo:

SPFLI表数据

关于 FOR ALL ENTRIES IN  去重_微信

代码

关于 FOR ALL ENTRIES IN  去重_数据_02

首先在 1处打断点

关于 FOR ALL ENTRIES IN  去重_数据_03

只取出来4条

关于 FOR ALL ENTRIES IN  去重_微信_04

自动去重了

再到断点2

关于 FOR ALL ENTRIES IN  去重_微信_05

9条,数据是全的

关于 FOR ALL ENTRIES IN  去重_微信_06

所以以后使用 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. 



举报

相关推荐

0 条评论