【ABAP系列】SAP ABAP 取两个内表的交集 比较两个内表的不同
前言部分
大家可以关注我的公众号,公众号里的排版更好,阅读更舒适。
正文部分
SAP自带的函数:
CTVB_COMPARE_TABLES和BKK_COMPARE_TABLES;
似乎可以比较两个内表,得出第二个内表不同于第一个内表的部分(新增/删除了那些部分)
但是,具体的使用,还请有经验的朋友不吝赐教啊!
因为,我在测试数据时,发现这两个函数的效果不那么简单。
如果上述函数确实可以,提取两个内表不同部分,则我可以据此做两次比较,得到两个内表的交集。
所以,我先用另外一种方式解决了-自己写了一个提取两个内表交集的函数,供大家检阅:
*" IMPORTING
*" VALUE(ITAB1) TYPE INDEX TABLE
*" VALUE(ITAB2) TYPE INDEX TABLE
*" EXPORTING
*" VALUE(ITABSAME) TYPE INDEX TABLE
*"----------------------------------------------------------------------
field-symbols:
<S1>,
<S2>.
data:
L1 type i,
L2 type i.
assign local copy of initial line of:
ITAB1 to <S1>,
ITAB2 to <S2>.
describe: table ITAB1 lines L1,
table ITAB2 lines L2.
"对记录行数少的内表,执行第一层循环;
"在第二层循环中,找到对应记录,即可追加到结果内表;
"同时退出第二层循环,继续执行第一层循环的下一行
IF L1 <= L2.
LOOP AT ITAB1 INTO <S1>.
LOOP AT ITAB2 INTO <S2>.
IF <S1> EQ <S2>.
APPEND <S1> TO ITABSAME.
EXIT.
ENDIF.
ENDLOOP.
ENDLOOP.
ELSE.
LOOP AT ITAB2 INTO <S2>.
LOOP AT ITAB1 INTO <S1>.
IF <S1> EQ <S2>.
APPEND <S2> TO ITABSAME.
EXIT.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDIF.
ENDFUNCTION.
另一个问题,想请教大家,在上面代码里,第二层循环是为了找出,第一层循环的当前记录,在第二个内表里是否存在;
所以,如果ABAP自带了,判断一个内表中,是否存在某个记录的函数的话,那第二层循环就可以省去,则上述函数执行效率也会成倍提升了。
以下转自华亭博客:感谢华亭的分享:
函数模块:CTVB_COMPARE_TABLES
这个函数模块比较两个内表,将被删除、增加和修改的内表行分别分组输出。
输入参数:
TABLE_OLD:旧表
TABLE_NEW:新表
KEY_LENGTH:键长度,指定内表中的前若干个字节(在 Unicode 系统中为字符,因此指定长度内不能存在数值类型的字段)为主键,做为内表行是否为增加的判断条件。
IF_SORTED:排序标记,如果已排序,在比较时可以提高效率。
输出参数:
TABLE_DEL:被删除的行
TABLE_ADD:被增加的行
TABLE_MOD:被修改的行
NO_CHANGES:表没有被修改的标记,如果这个标记为 “X”,就不必去读前面三个内表了。
转载于:https://www.cnblogs.com/SAPmatinal/p/11176482.html
【ABAP系列】SAP ABAP 取两个内表的交集 比较两个内表的不同相关推荐
- 【SAP Abap】SAP ABAP 三元运算的实现与使用注意事项
SAP ABAP 三元运算的实现与使用注意事项 ABAP的三元运算 使用注意事项 演示 ABAP的三元运算 三元运算符是软件编程中的一个固定格式,语法是"条件表达式?表达式1:表达式2&qu ...
- SAP ABAP Development Tool 提高开发效率的十个小技巧
这是 Jerry 2021 年的第 46 篇文章,也是汪子熙公众号总共第 323 篇原创文章. Jerry 已经有很长一阵子没有打开工作电脑上的 SAP ABAP Development Tool 了 ...
- SAP ABAP一组关键字 IS BOUND, IS NOT INITIAL和IS ASSIGNED的用法辨析
ABAP里的IS BOUND, IS NOT INITIAL和IS ASSIGNED这组关键字,如果平时不留心,很容易理解地似是而非.今天我们就来说一说它们的区别. 先把SAP帮助文档抄过来: IS ...
- 什么是 SAP ABAP? 类型、ABAP 完整形式和含义
转载地址:https://www.guru99.com/what-is-abap.html ABAP 是一种由 SAP 创建的高级编程语言,可帮助大型企业定制 SAP ERP. ABAP 可以帮助定制 ...
- 每日一个 ChatGPT 使用小技巧系列之2 - 用 ChatGPT 研读 SAP ABAP BAPI 的实现源代码
本系列之前的文章: 与其整天担心 AI 会取代程序员,不如先让 AI 帮助自己变得更强大 每日一个 ChatGPT 使用小技巧系列之1 - 给出提纲或者素材,让 ChatGPT 帮你写作 正好昨天有朋 ...
- 【ABAP系列】SAP ABAP中关于commit的一点解释
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP中关于commi ...
- 【ABAP系列】SAP ABAP SY-SUBRC的含义解析
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP SY-SUBR ...
- 【ABAP系列】SAP 读取生产订单 记入文档的货物移动明细
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 读取生产订单 记入文档的 ...
- SAP abap内表分类与增删改查操作
SAP abap内表分类与增删改查操作 1.内表的分类 1.1.标准表 (standard table ) 系统为该表每一行生成一个院级索引.填表是可以将数据附加在现有行之后,也可以插入到指定的位置, ...
最新文章
- Windows Performance Toolkit
- winform控件大小改变是防止背景重绘导致的闪烁
- 第四天:规划范围管理
- php 不等于 的函数吗,PHP不常见的函数整理
- 动手造轮子:写一个日志框架
- mysql sysbench_详解MySQL基准测试和sysbench工具
- linux分区方案 arv,Linux运维 第三阶段 (九)NFS
- 【codevs1116】四色问题
- 屋子里有1到100号100盏关闭的灯
- asp.net oracle odbc,ADO.NET 连接数据库字符串小结(Oracle、SqlServer、Access、ODBC)
- Matlab-杆单元整体刚度矩阵组装(有限元基础-曾攀)
- php将word转化成html,phpword转html
- 数字电路实验 03 - | 数据选择器及其应用
- 连点脚本java,按键精灵键盘连点脚本日常
- 基于STM32F429,Cubemx的SAI音频播放实验
- STM32F103C8核心板原理图
- matlab获得模型切面,基于MATLAB的STL模型切片分层算法
- ios wifi 定位_iOS最新跳转手机设置WIFI定位等界面方法适配iOS11
- 各大银行ATM跨行取款收费一览表
- ListView分页下载
热门文章
- 华为手机卡在升级界面_你的华为手机变卡了,1分钟调整这3个功能,让手机再战3年...
- 【Linux系列】mac终端与服务器连接
- 虚拟化技术--桌面虚拟化(VDI)
- 程序员需培养企业家式的能力
- 重构《一》-- 提取方法
- java 转为Calendar_在Java中将String转换为Calendar对象
- ios用的什么编译器编译_您最喜欢什么编译器?
- wtf是转换ttf_WTF入门,它是终端的仪表板
- linux bash技巧_Bash提示技巧和窍门
- github开源项目_GitHub项目分析,3D打印义肢和更多开源新闻