技术开发 频道

ABAP性能实例七例

    14.3.Intersection of internal tables

    数据源表 ITAB1 和ITAB2都是STANDARD TABLES,假定ITAB1比ITAB2包含更多的记录。 否则,需要使用 "DESCRIBE TABLE ... LINES ..."语句计算内表包含的记录数。假定2个内表中的记录都遵从主键K唯一。

    算法在计算中需要使用一个有唯一主键K的临时 内表,该内表是ITAB1数据的复制,匹配的数据被复制到ITAB3,以下两个示例的区别在于临时内表分别为SORTED TABLE和HASHED TABLE,对于LOOP中的READ语句,HASHED TABLE比SORTED TABLE更快。

    STAB1 = ITAB1.

    REFRESH ITAB3.

    LOOP AT ITAB2 ASSIGNING
<WA>.

      READ TABLE STAB1 FROM
<WA>

                       TRANSPORTING NO FIELDS.

      IF SY
-SUBRC = 0.

        APPEND
<WA> TO ITAB3.

      ENDIF.

    ENDLOOP.

    FREE STAB1.

    
<Using a sorted table temporarily >

    

    HTAB1
= ITAB1.

    REFRESH ITAB3.

    LOOP AT ITAB2 ASSIGNING
<WA>.

      READ TABLE HTAB1 FROM
<WA>

                       TRANSPORTING NO FIELDS.

      IF SY
-SUBRC = 0.

        APPEND
<WA> TO ITAB3.

      ENDIF.

    ENDLOOP.

    FREE HTAB1.

    
<Using a hashed table temporarily>
0
相关文章