技术开发 频道

ABAP性能实例七例

    7.Building unique standard tables(如何建立有唯一主键的标准内表)

    如果内表的记录数量较少(<20),或者在填充内表的同时你需要访问它,那么使用Read/Insert比较合适。但是,如果你内表数据量很大,并且你只需要读取已经填充的内表,那么使用后面三步法。

    REFRESH ITAB2.

    LOOP AT ITAB1 INTO WA.

      READ TABLE ITAB2 WITH KEY K = WA-K

                       BINARY SEARCH

                       TRANSPORTING NO FIELDS.

      IF SY-SUBRC <> 0.

        INSERT WA INTO ITAB2

                  INDEX SY-TABIX.

      ENDIF.

    ENDLOOP.
   

    ITAB2[] = ITAB1[].

    SORT ITAB2 BY K.

    DELETE ADJACENT DUPLICATES FROM ITAB2

                               COMPARING K.

    

    8.Building unique sorted/hashed tables

    9.Modifying single lines

    使用"MODIFY itab ... TRANSPORTING f1 f2 ..."语句更新一个内表的行可以提高效率,内表的table line越长,那么效率提高越多。该语句对于拥有复杂行类型的内表效率提升最明显。

    WA-DATE = SY-DATUM.

    MODIFY ITAB FROM WA INDEX 1.
    

    WA-DATE = SY-DATUM.

    MODIFY ITAB FROM WA INDEX 1 TRANSPORTING DATE.

    10.Using the Assigning Comand

    10.1.Modifying a set of lines directly(批量修改内表数据)

    使用"LOOP ... ASSIGNING ..."可以直接修改内表中的数据,而不需要先将内表数据复制到相应工作区,然后再更新回去。

    LOOP AT ITAB INTO WA.

      I = SY-TABIX MOD 2.

      IF I = 0.

        WA-FLAG = 'X'.

        MODIFY ITAB FROM WA.

      ENDIF.

    ENDLOOP.

    

    Field-Symboles:<WA> like ITAB.

    LOOP AT ITAB ASSIGNING <WA>.

      I = SY-TABIX MOD 2.

      IF I = 0.

        <WA>-FLAG = 'X'.

      ENDIF.

    ENDLOOP.

0
相关文章