i, Developer!

搜索

最新日志

  • 取日期所在周数的方法
  • Fuction groups中TOP程序的数据为什么可以在不同的Function Module中共享?
  • VBA中Dictionary对象的遍历
  • 关于DDIC_TYPE_INCONSISTENCY类DUMP的说明
  • 安装 CE7.1 of SDN_Preview_SR_5
  • My resolutions in the new year of 2009
  • 奥巴马2008年竞选成功的演讲摘抄
  • 考虑双字节的截取字符串处理
  • 有感于这个Blog:终止“SAP BI/SAP BW项目流程和经验培训”的培训课程
  • 在ABAP程序中调用逻辑数据库
全部日志>>

最新评论

  • kevin.Xu:哈哈 我刚刚想到可以用winscp来自动上传本地文件 ...
  • Lynn:Inside Web Dynpro for Java (...
  • Lynn:我有这本书的影印版,请QQ:359596219联系。...
  • joe001:abap便宜化是应该的,什么领域编码的都在底端...
  • joe001:sap教育博士化 ,高端化,高贵化...
  • Zen:有个古文版的,翻译得很好...
  • jasson:很好的示例
  • 不用这么麻烦:在sheet1写这样一段代码就可以了 Sub SetV...
  • xingyangyang:你好,很意外的看到了你的另一面,给我全新的感觉,觉得有必...
  • xeric:其实我很佩服jdon的勇气。。。。。 再用java的眼...
  • 访问统计:
  • 什么是RSS?
  • Powered by BlogBus.com

日积月累

曾经迷恋于Delphi的优雅,但Borland已经离我很遥远了。 如日中天的Java,怎么混杂着数不清的括号、纠缠不清的Checked Exception和叫人不胜其烦的XML配置文件。 开发语言的新贵Ruby和Rails,会是Web快速开发领域的王冠吗? 稍嫌笨拙的ABAP,又是如何支撑起SAP这个巨型的企业应用系统?
    <<  使用FOR ALL ENTRIES的注意事项 | 首页 | 对于MODIFY itab TRANSPORTING f1 ... fn 语句一个有趣的测试  >>
  • 从内部表中抽取唯一记录的方法测试

    2006-06-21

    三种方法简单介绍:

    方法一: 内部表循环赋值,使用COLLECT语句追加记录

    方法二: 内部表循环赋值,使用AT NEW和APPEND语句追加记录

    方法三: 整个内部表赋值,使用DELETE ADJACENT DUPLICATES语句删除重复记录

    运行10次结果如下:

    方法一 方法二方法三
    48,139 68,657 8,830
    45,230 68,474 8,789
    44,751 68,553 8,779
    44,771 68,523 8,777
    44,775 68,441 8,761
    44,777 68,525 8,780
    45,422 69,461 9,318
    45,367 68,404 8,773
    44,743 68,389 8,771
    44,871 68,400 9,183

    运行结果分析:

    数据说明一切,我就不多说了.

    程序代码

    REPORT z_xam_temp3 .
    
    DATA: t1 TYPE i,
          t2 TYPE i,
          times TYPE i.
    
    TABLES: marc.
    
    DATA: BEGIN OF it_marc OCCURS 0,
            matnr LIKE marc-matnr,
            werks LIKE marc-werks,
          END OF it_marc.
    
    DATA: BEGIN OF it_mara OCCURS 0,
            matnr LIKE mara-matnr,
          END OF it_mara.
    
    SELECT matnr werks
    INTO TABLE it_marc
    FROM marc
    WHERE werks = '1005'.
    
    DO 10 TIMES.
      REFRESH it_mara.
    
    * METHOD 1
      GET RUN TIME FIELD t1.
      LOOP AT it_marc.
        CLEAR it_mara.
        it_mara-matnr = it_marc-matnr.
        COLLECT it_mara.
      ENDLOOP.
      GET RUN TIME FIELD t2.
      times = t2 - t1.
      WRITE: AT /1 times.
    
    * METHOD 2
      GET RUN TIME FIELD t1.
    *  SORT it_mara BY matnr.
      LOOP AT it_marc.
        AT NEW matnr.
          CLEAR it_mara.
          it_mara-matnr = it_marc-matnr.
          APPEND it_mara.
        ENDAT.
      ENDLOOP.
      GET RUN TIME FIELD t2.
      times = t2 - t1.
      WRITE: times.
    
    * METHOD 3:
      GET RUN TIME FIELD t1.
      it_mara[] = it_marc[].
    *  SORT it_mara BY matnr.
      DELETE ADJACENT DUPLICATES FROM it_mara
        COMPARING matnr.
    
      GET RUN TIME FIELD t2.
      times = t2 - t1.
      WRITE: times.
    
      NEW-LINE.
    ENDDO.

    随机文章:

    Fuction groups中TOP程序的数据为什么可以在不同的Function Module中共享? 2009-05-11
    关于DDIC_TYPE_INCONSISTENCY类DUMP的说明 2009-04-01
    考虑双字节的截取字符串处理 2008-12-24
    在ABAP程序中调用逻辑数据库 2008-12-13
    ECC6中报表传输后修改的选择屏幕不生效的解决方法 2008-12-02

    收藏到:Del.icio.us




    Tag:ABAP
    引用地址:
    ai2ming 发表于09:11:47 | 编辑 | 继续话题 | 转发 | 分享 0
Copyright © 2002-2007 BlogBus.com, All Rights Reserved.