FOR ALL ENTRIES IN 与 INNER JOIN 内表
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 内表的更多相关文章
- FOR ALL ENTRIES IN 与 INNER JOIN 写在一个SQL上影响效率
SELECT likp~vbeln likp~lfart lips~werks likp~kunnr INTO CORRESPONDING FIELDS OF TABLE it_likps FROM ...
- SAP内表查询速度优化实例-OPEN SQL
一.FOR ALL ENTRIES IN 案例 今天碰到工单报工统计分析表查询速度特别慢 经查看源代码: SELECT afpo~dwerk afko~aufnr afpo~matnr AS plnb ...
- JOIN关联表中ON,WHERE后面跟条件的区别
select * from td left join (select case_id as sup_case_id , count(*) supervise_number from td_kcdc ...
- SAP ABAP将大数据量排序后输入到内表
要向内表读入3百50万条数据,如果一次读入就会产生运行错误,错误提示为,没有内存对于扩展 内表. 我考虑使用SELECT...INTO TABLE...PACKAGE SIZE 和ENDSELECT来 ...
- ABAP 内表的行列转换-发货通知单-打印到Excel里-NEW-(以运单号为单位显示ALV然后保存输出)
*********************************************************************** * Title : ZSDF003 ...
- ABAP 内表的行列转换-发货通知单-打印到Excel里-NEW
*********************************************************************** * Title : ZSDF002 ...
- ABAP 内表的行列转换-发货通知单-打印到Excel里
需要传入数据到Excel里的模板如上图所示 ********************** * 设计主要逻辑与原理说明 ...
- ABAP 内表的行列转换-发货通知单2
*&---------------------------------------------------------------------* *& Report Z_TEST_C ...
- ABAP 内表的行列转换-发货通知单-SLIS
REPORT Z_TEST_COL_TO_ROW. TYPE-POOLS: slis. TABLES: VTTP,LIPS,LIKP,KNA1 ,VTTK. DATA: gd_fieldcat TYP ...
- 【Spark调优】小表join大表数据倾斜解决方案
[使用场景] 对RDD使用join类操作,或者是在Spark SQL中使用join语句时,而且join操作中的一个RDD或表的数据量比较小(例如几百MB或者1~2GB),比较适用此方案. [解决方案] ...
随机推荐
- 用强数据类型保护你的表单数据-基于antd表单的类型约束
概述 接口数据类型与表单提交数据类型,在大多数情况下,大部分属性的类型是相同的,但很少能做到完全统一. 我在之前的工作中经常为了方便,直接将接口数据类型复用为表单内数据类型,在遇到属性类型不一致的情况 ...
- 谷歌浏览器和火狐浏览器如何查看HTTP协议?
按F12
- 前端学习-html-1
html常用标签 h1-h6:标题 p:段落 strong/em: 对文本进行设置 strong--加粗,强调作用 比如:商品价格 em--斜体,对文本内容修饰成斜体 hr/br: hr ...
- Redis本地安装以及使用(详细教程)
Redis 安装 Windows 下载安装 Redis默认端口:6379 整个过程如下: 1.下载连接 https://github.com/tporadowski/redis/releases Re ...
- 《深入理解 FFmpeg》第一章彩色插图汇总
layout: post title: "<深入理解 FFmpeg>第一章彩色插图" tags: - "FFmpeg" 这是<深入理解 FFm ...
- Excel对比两张表的某一列,匹配上则进行数据copy
VLOOKUP(参数1,参数2,参数3,参数4) 参数1: 查找值 参数2:指定查找数据源的范围 参数3:返回查找区域的第几列数据 参数4:精确查找输入参数"0"or"f ...
- Kernel Memory 入门系列:文档预处理
Kernel Memory 入门系列:文档预处理 Embedding为我们提供了问题理解和文档检索的方法,但是面对大量的文档,如果在用于提问的时候再进行文档的Embedding的话,那这个过程是非常耗 ...
- 信创选国产,Solon v2.6.3 发布
Solon 是什么框架? Java 新的"生态级"应用开发框架.从零开始构建,有自己的标准规范与开放生态(历时六年,具备全球第二级别的生态规模). 相对于 Spring,有什么特点 ...
- java,类、实例化、构造方法、this关键字、方法重载
编写类的步骤: 1.定义类名 2.编写类的属性 3.编写类的方法 public 访问修饰符,表示在整个项目中都可以调用,也可以用其他词 使用class关键字来定义类,如下,定义一个Cat类 给了属性 ...
- ASR项目实战-产品分析
分析Google.讯飞.百度.阿里.QQ.搜狗等大厂的ASR服务,可以罗列出一款ASR服务所需要具备的能力. 产品分类 ASR云服务产品,从用户体验.时效性.音频时长,可以划分为如下几类: 实时短音频 ...