- 如果内表的记录条数很多(>20),那么对全表进行线性查询是非常费时的。应该尽量使内表排序,并使用二分法搜索,或者使用SORTED TABLE。假如内表含有n条记录,线性搜索执行时间为O( n ) ,而二分法执行时间仅为O( log2( n ) )
不推荐使用
READ TABLE ITAB INTO WA WITH KEY K = 'X'.
推荐使用
SORT LT_TAB BY K ASCENDING.
READ TABLE ITAB INTO WA WITH KEY K = 'X' BINARY SEARCH.
- LOOP … WHERE比LOOP/CHECK性能更好,因为LOOP … WHERE由内部来判断指定的条件。同所有的逻辑表达式一样,如果操作数的类型相同,则性能会更好。 可能的情况下,使用FROM i1且(或者)TO i2可以进一步提高性能。
不推荐使用
LOOP AT ITAB INTO WA.
CHECK WA-K = 'X'.
" 代码块
ENDLOOP
推荐使用
LOOP AT ITAB INTO WA WHERE K = 'X'.
" 代码块
ENDLOOP.
- 使用MODIFY语句更新内表时,使用" TRANSPORTING f1 f2 …"可以提高执行的效率;特别是表行越长越明显。
不推荐使用
WA-DATE = SY-DATUM.
MODIFY ITAB FROM WA INDEX 1.
推荐使用
WA-DATE = SY-DATUM.
MODIFY ITAB FROM WA INDEX 1 TRANSPORTING DATE.
- 使用"LOOP … ASSIGNING … "直接存取内表行,可以大大提高内表记录的更新速度。
不推荐使用
LOOP AT ITAB INTO WA.
I = SY-TABIX MOD 2.
IF I = 0.
WA-FLAG = 'X'.
MODIFY ITAB FROM WA.
ENDIF.
ENDLOOP.
推荐使用
LOOP AT ITAB ASSIGNING <WA>.
I = SY-TABIX MOD 2.
IF I = 0.
<WA>-FLAG = 'X'.
ENDIF.
ENDLOOP.
- 如果要将一个表的记录追加到另一个表中,请使用"APPEND LINES OF itab1 TO itab2" .
不推荐使用
LOOP AT LT_TAB2 INTO LS_TAB.
APPEND LS_TAB TO LT_TAB2.
ENDLOOP.
推荐使用
APPEND LINES OF LT_TAB1 TO LT_TAB2.