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.
相关推荐
陳10303 分钟前
Linux:进程间切换与调度
linux·运维·服务器
SilentSamsara2 小时前
TCP 三次握手:连接建立失败的那些坑
运维·服务器·网络·网络协议·tcp/ip
code tsunami3 小时前
如何在车辆数据自动化中解决Cloudflare Turnstile
运维·microsoft·自动化
翼龙云_cloud4 小时前
亚马逊云代理商:CloudWatch Agent 全解析 5 步实现服务器监控
运维·服务器·云计算·aws·云服务器
Cyber4K5 小时前
【Nginx专项】基础入门篇:状态页、微更新、内容替换、读取、压缩及防盗链
linux·运维·服务器·nginx·github
Bruce_Liuxiaowei6 小时前
顺藤摸瓜:一次从防火墙告警到设备实物的溯源实战
运维·网络·网络协议·安全
IpdataCloud7 小时前
效果广告中点击IP与转化IP不一致?用IP查询怎么做归因分析?
运维·服务器·网络
SPC的存折7 小时前
2、Docker命令与镜像、容器管理
linux·运维·服务器·docker·容器·eureka
D4c-lovetrain7 小时前
Linux个人心得26 (redis主从复制全流程,详细版)
linux·运维·服务器
Bert.Cai7 小时前
Linux whoami命令详解
linux·运维