1、区别

FOR ALL ENTRIES IN 与 INNER JOIN 内表,目的都是通过内表找数据库表与之对应的数据,但是有区别。

1.1、写法

FOR ALL ENTRIES IN

"--------------------@斌将军--------------------
IF gt_acd IS NOT INITIAL.
SELECT
acdoca~rldnr,"总账会计中的分类账
acdoca~rbukrs,"公司代码
acdoca~gjahr,"会计年度
acdoca~belnr,"会计凭证号码
acdoca~docln"分类账 6 字符过账项目
FROM acdoca
FOR ALL ENTRIES IN @gt_acd
WHERE acdoca~gjahr = @gt_acd-gjahr AND acdoca~docln = @gt_acd-docln
INTO TABLE @DATA(lt_data2).
ENDIF.
"--------------------@斌将军--------------------

INNER JOIN 内表

"--------------------@斌将军--------------------
SELECT
acdoca~rldnr,"总账会计中的分类账
acdoca~rbukrs,"公司代码
acdoca~gjahr,"会计年度
acdoca~belnr,"会计凭证号码
acdoca~docln"分类账 6 字符过账项目
FROM acdoca
INNER JOIN @gt_acd AS acd ON acdoca~gjahr = acd~gjahr AND acdoca~docln = acd~docln
INTO TABLE @DATA(lt_data)."赋值放在最后一行
"--------------------@斌将军--------------------

1.2、用法

FOR ALL ENTRIES IN:不能使用聚合函数;关联字段的类型和长度必须一致;内表为空,则全表查询;

INNER JOIN:可以使用聚合函数;关联的字段类型长度可以不一致;内表为空,查询无果;

1.3、去重

现有数据如下:

查询内表:

内表为两条相同的物料号,作为查询条件

"--------------------@斌将军--------------------
ls_marc-matnr = '000000000000001000'.
APPEND ls_marc TO lt_marc.
ls_marc-matnr = '000000000000001000'.
APPEND ls_marc TO lt_marc.
"--------------------@斌将军--------------------

FOR ALL ENTRIES IN:会根据查询的字段,将最终结果去重

INNER JOIN 内表:相同的查询条件,会将数据全部查出

所以使用INNER JOIN 内表需要做去重,可以通过两种办法:

去重方法一:DISTINCT查询去重

在去重方面,FOR ALL ENTRIES IN 等价于 INNER JOIN 内表+DISTINCT,当查询的字段不是所有关键字时,会出现数据丢失的情况

去重方法二:查询条件去重再查询

去掉重复的查询条件,然后再查询数据库表

"--------------------@斌将军--------------------
SORT lt_marc BY matnr.
DELETE ADJACENT DUPLICATES FROM lt_marc COMPARING matnr.
"--------------------@斌将军--------------------

结果不重复

且查询的字段不是所有关键字时,数据仍然不会丢失

1.4、效率

用4万行数据的内表,作为查询条件,测试新老语法,并使用唯一键的排序表与新语法相结合

"--------------------@斌将军--------------------
TYPES:BEGIN OF ty_acd,
gjahr TYPE acdoca-gjahr,
docln TYPE acdoca-docln,
rbukrs TYPE acdoca-rbukrs,
END OF ty_acd. DATA:lt_acd_sort TYPE SORTED TABLE OF ty_acd WITH UNIQUE KEY gjahr docln. ... GET TIME STAMP FIELD lv_current1.
MOVE-CORRESPONDING gt_acd TO lt_acd_sort.
SELECT
acdoca~rldnr,"总账会计中的分类账
acdoca~rbukrs,"公司代码
acdoca~gjahr,"会计年度
acdoca~belnr,"会计凭证号码
acdoca~docln"分类账 6 字符过账项目
FROM acdoca
INNER JOIN @lt_acd_sort AS acd ON acdoca~gjahr = acd~gjahr AND acdoca~docln = acd~docln
INTO TABLE @DATA(lt_data4).
GET TIME STAMP FIELD lv_current2.
"--------------------@斌将军--------------------

结果:

定期更文,欢迎关注

FOR ALL ENTRIES IN 与 INNER JOIN 内表的更多相关文章

  1. FOR ALL ENTRIES IN 与 INNER JOIN 写在一个SQL上影响效率

    SELECT likp~vbeln likp~lfart lips~werks likp~kunnr INTO CORRESPONDING FIELDS OF TABLE it_likps FROM ...

  2. SAP内表查询速度优化实例-OPEN SQL

    一.FOR ALL ENTRIES IN 案例 今天碰到工单报工统计分析表查询速度特别慢 经查看源代码: SELECT afpo~dwerk afko~aufnr afpo~matnr AS plnb ...

  3. JOIN关联表中ON,WHERE后面跟条件的区别

    select * from td  left join (select case_id as sup_case_id , count(*) supervise_number from  td_kcdc ...

  4. SAP ABAP将大数据量排序后输入到内表

    要向内表读入3百50万条数据,如果一次读入就会产生运行错误,错误提示为,没有内存对于扩展 内表. 我考虑使用SELECT...INTO TABLE...PACKAGE SIZE 和ENDSELECT来 ...

  5. ABAP 内表的行列转换-发货通知单-打印到Excel里-NEW-(以运单号为单位显示ALV然后保存输出)

    *********************************************************************** * Title           : ZSDF003  ...

  6. ABAP 内表的行列转换-发货通知单-打印到Excel里-NEW

    *********************************************************************** * Title           : ZSDF002  ...

  7. ABAP 内表的行列转换-发货通知单-打印到Excel里

    需要传入数据到Excel里的模板如上图所示 ********************** *           设计主要逻辑与原理说明                                 ...

  8. ABAP 内表的行列转换-发货通知单2

    *&---------------------------------------------------------------------* *& Report  Z_TEST_C ...

  9. ABAP 内表的行列转换-发货通知单-SLIS

    REPORT Z_TEST_COL_TO_ROW. TYPE-POOLS: slis. TABLES: VTTP,LIPS,LIKP,KNA1 ,VTTK. DATA: gd_fieldcat TYP ...

  10. 【Spark调优】小表join大表数据倾斜解决方案

    [使用场景] 对RDD使用join类操作,或者是在Spark SQL中使用join语句时,而且join操作中的一个RDD或表的数据量比较小(例如几百MB或者1~2GB),比较适用此方案. [解决方案] ...

随机推荐

  1. 用强数据类型保护你的表单数据-基于antd表单的类型约束

    概述 接口数据类型与表单提交数据类型,在大多数情况下,大部分属性的类型是相同的,但很少能做到完全统一. 我在之前的工作中经常为了方便,直接将接口数据类型复用为表单内数据类型,在遇到属性类型不一致的情况 ...

  2. 谷歌浏览器和火狐浏览器如何查看HTTP协议?

    按F12

  3. 前端学习-html-1

    html常用标签 h1-h6:标题 p:段落 strong/em: 对文本进行设置    strong--加粗,强调作用  比如:商品价格    em--斜体,对文本内容修饰成斜体 hr/br: hr ...

  4. Redis本地安装以及使用(详细教程)

    Redis 安装 Windows 下载安装 Redis默认端口:6379 整个过程如下: 1.下载连接 https://github.com/tporadowski/redis/releases Re ...

  5. 《深入理解 FFmpeg》第一章彩色插图汇总

    layout: post title: "<深入理解 FFmpeg>第一章彩色插图" tags: - "FFmpeg" 这是<深入理解 FFm ...

  6. Excel对比两张表的某一列,匹配上则进行数据copy

    VLOOKUP(参数1,参数2,参数3,参数4) 参数1: 查找值 参数2:指定查找数据源的范围 参数3:返回查找区域的第几列数据 参数4:精确查找输入参数"0"or"f ...

  7. Kernel Memory 入门系列:文档预处理

    Kernel Memory 入门系列:文档预处理 Embedding为我们提供了问题理解和文档检索的方法,但是面对大量的文档,如果在用于提问的时候再进行文档的Embedding的话,那这个过程是非常耗 ...

  8. 信创选国产,Solon v2.6.3 发布

    Solon 是什么框架? Java 新的"生态级"应用开发框架.从零开始构建,有自己的标准规范与开放生态(历时六年,具备全球第二级别的生态规模). 相对于 Spring,有什么特点 ...

  9. java,类、实例化、构造方法、this关键字、方法重载

    编写类的步骤: 1.定义类名 2.编写类的属性 3.编写类的方法 public  访问修饰符,表示在整个项目中都可以调用,也可以用其他词 使用class关键字来定义类,如下,定义一个Cat类 给了属性 ...

  10. ASR项目实战-产品分析

    分析Google.讯飞.百度.阿里.QQ.搜狗等大厂的ASR服务,可以罗列出一款ASR服务所需要具备的能力. 产品分类 ASR云服务产品,从用户体验.时效性.音频时长,可以划分为如下几类: 实时短音频 ...