ABAP 内表操作性能相关

本文介绍了如何优化SAP ABAP中的内表操作,包括使用排序、二分查找、MODIFY语句的高效用法以及LOOP AT的优化。建议避免线性查询,而采用SORTEDTABLE或二分法,以及使用LOOP AT...WHERE代替LOOP AT/CHECK,以提高代码执行效率。此外,更新内表时使用TRANSPORTING关键字,以及利用LOOP...ASSIGNING直接存取内表行,能显著提升性能。
摘要由CSDN通过智能技术生成
  1. 如果内表的记录条数很多(>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.
  1. 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.
  1. 使用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.
  1. 使用"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.
  1. 如果要将一个表的记录追加到另一个表中,请使用"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. 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值