二维码

[基础语法] ABAP MODIFY语句如何高性能修改内表中多条数据  

Twilight发表于 2015-06-24 15:34peter_tree 最后回复于 2024-03-04 13:44 [复制链接] 33872 75

1、修改内表一行数据,这是MODIFY的常见用法
  1. MODIFY itab [FROM wa] [INDEX idx] [TRANSPORTING f1 f2 ...].
复制代码
工作区域wa在语句操作过程中起到双重作用:
  • 其一是根据其关键字段的值来确定需要替换的内表的行
  • 其二是根据其他非关键字段的值来替换内表行中相应字段的数据

如果只希望更新部分字段的值,可以使用TRANSPORTING选项

2、修改内表多行数据
我们常见的用法的用LOOP循环MODIFY记录,这是低性能的方法;我们可以参考一下用法:
  1. MODIFY itab FROM wa TRANSPORTING f1 f2 ... WHERE condition.
复制代码
语句解析:
游客,如果您要查看本帖隐藏内容请回复

再配合PA中的图片解释,一目了然了吧
modify where.jpg

该种方法在项目中的常见用法:
  1.   MODIFY zmdt033 FROM TABLE gt_zmdt033[].
  2.   IF sy-subrc NE 0.
  3.     ROLLBACK WORK.
  4.     gs_zmdifs107-process_stat = '04'.
  5.     gs_zmdifs107-notes = 'DATABASE UPDATE ERROR'.
  6.     MODIFY gt_zmdifs107 FROM gs_zmdifs107 TRANSPORTING process_stat notes WHERE cust_code NE space.
  7.   ELSE.
  8.     COMMIT WORK AND WAIT.
  9.   ENDIF.
复制代码
MODIFY失败的情况下修改内表gt_zmdt033[]的所有记录的状态及消息

回复

使用道具 举报

z3765295
代码还可以简化一下
MODIFY mara FROM TABLE gt_mara[].
  IF sy-subrc NE 0.
    ROLLBACK WORK.
  ELSE.
    COMMIT WORK AND WAIT.
  ENDIF.
回复 支持 反对

使用道具 举报

ratg0626
学习了  谢谢分享
回复 支持 反对

使用道具 举报

teyun2222
感謝無私分享,學習了!!
回复 支持 反对

使用道具 举报

qshiou
楼主棒棒哒,学习学习学习
回复 支持 反对

使用道具 举报

jianpano

好贴啊   非常高兴
回复 支持 反对

使用道具 举报

浪子洪城
modify语句的具体使用方法
回复 支持 反对

使用道具 举报

hanyating123
学习一下,以后会用到
回复 支持 反对

使用道具 举报

Rey
ABAP MODIFY语句如何高性能修改内表中多条数据
回复 支持 反对

使用道具 举报

tougegelol
学习!
回复

使用道具 举报

aa775128101
http://www.sapclub.cc/portal.phpjj
回复 支持 反对

使用道具 举报

晓月之影
多多学习,感谢分享
回复 支持 反对

使用道具 举报

巽呆沐
谢谢,学习了
回复 支持 反对

使用道具 举报

Jacky
好棒啊!!!
回复

使用道具 举报

资明
很想看看很想看看很想看看很想看看很想看看很想看看很想看看很想看看很想看看
回复 支持 反对

使用道具 举报

Anda
let me see see
回复 支持 反对

使用道具 举报

cwyhhbx
嗯,语句确实要注意适用场合
回复 支持 反对

使用道具 举报

scofield1106
hello world!!!
回复 支持 反对

使用道具 举报

mckz8888
好久没来顾问圈了 good good study
回复 支持 反对

使用道具 举报

meijoy
不错了 谢谢
回复 支持 反对

使用道具 举报

BP小白
谢谢楼主,马上学习
回复 支持 反对

使用道具 举报

1234下一页

快速回帖

本版积分规则
您需要登录后才可以回帖 登录 | 注册有礼

快速回复 返回顶部 返回列表