ABAP开发示例:使用 ASSIGN加速 LOOP循环

根据下面的程序的运行对比,发现使用ASSIGN 的程序比另一个快了大约 25%。

使用 "LOOP AT itab ASSIGNING ." 而不是使用工作区(无论是显式的还是通过表头行的),可以避免数据在工作区的传输。字段符号是一个指针,指向(!)表中的行,所以可以直接修改表中的行而不需要使用 MODIFY ,从而避免另一次数据传输。示例程序如下:

sql 复制代码
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'. " 不需要用 MODIFY

ENDLOOP.
相关推荐
Y_cheng_21 小时前
LVS知识梳理
运维·服务器·lvs
X1A0RAN21 小时前
容器化部署 Jenkins 教程
运维·docker·jenkins
HiDev_21 小时前
【非标自动化】2、认识元器件(电动缸)
运维·自动化
青皮桔1 天前
Redis AOF 文件损坏修复记录
运维·数据库·redis
卡兹墨1 天前
彩笔运维勇闯机器学习--决策树
运维·决策树·机器学习
A15362551 天前
三方仓储管理系统推荐 多货主计费与大促稳定选型参考
大数据·运维·人工智能
BullSmall1 天前
jenkins 全局工具变更后,构建的任务为什么没有刷新过来
运维·jenkins
wbs_scy1 天前
仿 muduo 高并发服务器项目:实现 HttpServer、静态资源与正则路由
运维·服务器
量子罐头1 天前
信创替代进入冲刺阶段,服务器网卡国产化选型该如何落地?
运维·服务器
肥胖小羊1 天前
企业微信审批流状态变更监听与业务系统自动化对接
运维·自动化·企业微信