本文主要是介绍ABAP开发示例:使用 ASSIGN加速 LOOP循环,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
根据下面的程序的运行对比,发现使用ASSIGN 的程序比另一个快了大约 25%。
使用 "LOOP AT itab ASSIGNING ." 而不是使用工作区(无论是显式的还是通过表头行的),可以避免数据在工作区的传输。字段符号是一个指针,指向(!)表中的行,所以可以直接修改表中的行而不需要使用 MODIFY ,从而避免另一次数据传输。示例程序如下:
Report Y1.
TYPES: BEGIN OF rec_type,count TYPE i,string(1024) TYPE c,END OF rec_type.
TYPES tab_type TYPE rec_type OCCURS 0.
DATA: itab TYPE tab_type,wa TYPE rec_type.
DO 100000 TIMES.APPEND wa TO itab.
ENDDO.
LOOP AT itab INTO wa.wa-count = sy-tabix.wa-string = 'x'.MODIFY itab FROM wa. "修改内表
ENDLOOP.
使用 assign 的代码:
Report Y2.
TYPES: BEGIN OF rec_type,count TYPE i,string(1024) TYPE c,END OF rec_type.
TYPES tab_type TYPE rec_type OCCURS 0.
DATA: itab TYPE tab_type,wa TYPE rec_type.
FIELD-SYMBOLS <fs> TYPE rec_type.
DO 100000 TIMES.APPEND wa TO itab.
ENDDO.
LOOP AT itab ASSIGNING. " pointer<fs>-count = sy-tabix. " 修改内表 itab<fs>-string = 'x'. " 不需要用 MODIFYENDLOOP.
这篇关于ABAP开发示例:使用 ASSIGN加速 LOOP循环的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!