日积月累
曾经迷恋于Delphi的优雅,但Borland已经离我很遥远了。
如日中天的Java,怎么混杂着数不清的括号、纠缠不清的Checked Exception和叫人不胜其烦的XML配置文件。
开发语言的新贵Ruby和Rails,会是Web快速开发领域的王冠吗?
稍嫌笨拙的ABAP,又是如何支撑起SAP这个巨型的企业应用系统?
-
从内部表中抽取唯一记录的方法测试
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.随机文章:
关于DDIC_TYPE_INCONSISTENCY类DUMP的说明 2009-04-01考虑双字节的截取字符串处理 2008-12-24在ABAP程序中调用逻辑数据库 2008-12-13ECC6中报表传输后修改的选择屏幕不生效的解决方法 2008-12-02
收藏到:Del.icio.us


