Created by Jerry Wang, last modified on May 07, 2014 Go to start of metadata

需求:internal table A和B 里分别包含了若干product ID,对于table A,如果其product ID 不在 table B里,则需要从table A中删除。
solution1: 遍历table A,对于每一行再分别到table B 中检测,如果line product ID在table B中不存在,则删除当前行
solution2: 直接使用ABAP keyword DELETE WHERE product_id NOT IN .
使用如下report 比较性能:

REPORT ZDELETE_COMPARE.PARAMETERS: num type i OBLIGATORY DEFAULT 100.
types: begin of ty_product,id type comm_product-product_id,text type string,end of ty_product.data: lt_product type STANDARD TABLE OF ty_product,lt_product1 LIKE lt_product,lt_compare type STANDARD TABLE OF comm_product-product_id,lt_range type RANGE OF comm_product-product_id,lv_start TYPE i,lv_end TYPE i.FIELD-SYMBOLS: <product> TYPE ty_product,<range> LIKE LINE OF lt_range.START-OF-SELECTION.PERFORM generate_main_tab.PERFORM solution1.PERFORM solution2.ASSERT lt_product = lt_product1.FORM generate_main_tab.DO num TIMES.APPEND INITIAL LINE TO lt_product ASSIGNING <product>.<product>-id = sy-index.<product>-text = sy-index.APPEND INITIAL LINE TO lt_product1 ASSIGNING <product>.<product>-id = sy-index.<product>-text = sy-index.IF ( sy-index MOD 2 = 0 ).APPEND sy-index TO lt_compare.ENDIF.ENDDO.
ENDFORM.FORM solution1.GET RUN TIME FIELD lv_start.LOOP AT lt_product ASSIGNING FIELD-SYMBOL(<product1>).READ TABLE lt_compare WITH KEY table_line = <product1>-id TRANSPORTING NO FIELDS.IF sy-subrc <> 0.DELETE TABLE lt_product FROM <product1>.ENDIF.ENDLOOP.GET RUN TIME FIELD lv_end.lv_end = lv_end - lv_start.WRITE: / 'Solution1: ' , lv_end COLOR COL_NEGATIVE.
ENDFORM.FORM solution2.GET RUN TIME FIELD lv_start.LOOP AT lt_compare ASSIGNING FIELD-SYMBOL(<valid>).APPEND INITIAL LINE TO lt_range ASSIGNING <range>.<range>-low = <valid>.<range>-option = 'EQ'.<range>-sign = 'I'.ENDLOOP.DELETE lt_product1 WHERE id NOT IN lt_range.GET RUN TIME FIELD lv_end.lv_end = lv_end - lv_start.WRITE: / 'Solution2: ' , lv_end COLOR COL_NEGATIVE.
ENDFORM.

在internal table 的个数非常庞大的时候,直接使用ABAP keyword的solution具有更好的性能。

两种删除internal table entry的性能比较相关推荐

  1. PDF文件中的图片如何删除?分享两种删除方法

    我们怎么把PDF文件中的图片给删除掉呢?大家在日常使用PDF文件的过程中,难免会对文件有编辑需求,有时候需要编辑文字,有时候需要对文件中的图片进行删除处理.遇到这种只需要删除PDF文件里的图片的时候, ...

  2. calico的两种网络模式BGP和IP-IP性能分析

    目前使用较多的网络插件有 flannel,calico,canel等,但是如果对比以上几种网络插件的性能,还是calico最受欢迎 一.calico概述 二.性能评测指标 三.物理机性能评测 四.物理 ...

  3. 两种删除WORD文档页眉横线方法的对比

    关于删除WORD文档页眉横线,网上搜索均可查找到2种常见的方法,即:1.将页眉样式改为正文样式:2.清除格式. 两种方式虽然均可以达到清除横线的目的,但效果却相差很大. 1.使用之后将页眉样式改为正文 ...

  4. 两种不同字符串比较方法的性能对比

    最近比较关注C#书写出来的代码性能问题,越研究就越觉得很有意思. 在日常的编程过程总,由于编程需要,我们经常会比较两个字符串是否相等,然后再做相应的处理.代码书写起来是觉得很爽,不是吗?if (a== ...

  5. Java SE 第四十八,九,五十讲 Map深入详解及遍历Map的两种实现手段 Map.Entry详解与作业要求,作业讲解...

    1.Map接口:Map的实现类:HashMap类 Map没有add()方法,但是有put()方法. put()将指定的值关联到map中的特定key. 2.HashMap类: 3.vice versa: ...

  6. 2019.最新Activiti6.0删除部署流程表(两种删除方式)

    删除部署信息,但这种方式只能删除未启动流程实例的部署表,这种方式开开源删除部署的三张表 act_re_deployment.act_re_procdef.act_ge_bytearray /*** 删 ...

  7. oracle 删除原有的数据,oracle数据库删除数据的两种方式

    当表中的数据不需要是,则应该删除该数据,并释放所占用的空间; 删除表中的数据有delete和truncate两种方式,下面分别介绍: 一.delete语句 (1)有条件删除 语法格式:delete [ ...

  8. 怎么把PDF页面删除?教你两种方法

    怎么把PDF文件的页面给删除一页呢?PDF文件大家都知道它不是轻易就能修改的,这也就造成我们有很多需求很难得到解决.比如当我们在浏览一份PDF文件时,发现其中一页出现了错误或者是多余的内容,影响文件的 ...

  9. 两种方法删除IE7浏览历史记录

    两种方法删除IE7浏览历史记录 我们在上网的时候,一般会在机器上留下浏览记录等一些涉及个人隐私的敏感信息,存在安全隐患.与 IE6 相比,IE 7在清除这些敏感信息.保护我们的个人隐私方面,做了改进和 ...

最新文章

  1. Tomcat V6 Examples移植到Apusic V5.1
  2. mysql内置含糊_mysql内置函数
  3. LeedCode: 计算器专场
  4. Acwing第 42 场周赛【完结】
  5. Oracle 12c   归档模式更改
  6. 剑指-顺时针打印矩阵
  7. python循环经典例题_python练习题:循环打印嵌套列表
  8. “10 倍工程师”引争议,程序员再被妖魔化?
  9. VScode安装离线插件
  10. 网页游戏开发基础——网页基础知识
  11. mysql maxscale mha_maxscale配合MHA搭建读写分离的高可用架构(基于GTID replication主从架构,mysql5.6)...
  12. 收集整理的一些windows好用的工具(持续更新)
  13. app商城开发要多少钱_价格透明_讲讲行业收费套路_OctShop
  14. OrCAD学习笔记1
  15. NEON技术粗浅认识
  16. 电力系统短路计算MATLAB
  17. 机房气体灭火防护改造
  18. 哈工大计组大作业-RISC处理器设计
  19. springboot 导入excel(数据批量导入)
  20. Mac中 wps如何将自定义模板添加到模板库中

热门文章

  1. 【android】java.net.ConnectException: localhost/127.0.0.1:8080 - Connection refused
  2. 查看Infinicon的HCA卡上的网络流量的方法
  3. 走向.NET架构设计—第五章—业务层模式,原则,实践(中篇)
  4. 20应用统计考研复试要点(part21)--概率论与数理统计
  5. python与正则表达式(part1)--元字符
  6. GIT项目管理工具(part10)--分支管理
  7. sqlplus 修改system密码_华为交换机console密码忘了如何解决 华为交换机console密码忘了解决方法【介绍】...
  8. 时隔500天后,对比Excel系列又一新书发布
  9. 什么是 SAP Commerce Cloud 的 catalog
  10. 在 SAP HANA database Explorer 里添加 HDI 容器