MODIFYITABFROMWAWHERE11

作者:ABAP三叔 约 3 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, SD, 开发, 数据工程, 销售分销
MODIFYITABFROMWAWHERE11 - 封面图
MODIFYITABFROMWAWHERE11 - 封面图

前言

更新内表中所有行的某个字段值,比如全选标记字段,有时候很想用

WHERE 1 = 1 ,ABAP中报错该如何处理?

下面介绍两种方式

方法一

REPORT ztest.TYPES: BEGIN OF ty_item, id TYPE i, sel TYPE abap_bool, END OF ty_item.DATA: lt_data TYPE STANDARD TABLE OF ty_item, ls_data TYPE ty_item. DO 10 TIMES. INSERT VALUE #( id = sy-index ) INTO lt_data INDEX sy-index.ENDDO.ls_data-sel = abap_true.MODIFY lt_data FROM ls_data TRANSPORTING sel WHERE id IS NOT INITIAL.cl_demo_output=>display( lt_data ).
MODIFYITABFROMWAWHERE11 - 封面图
MODIFYITABFROMWAWHERE11 - 封面图

方法二

REPORT ztest.TYPES: BEGIN OF ty_item, id TYPE i, sel TYPE abap_bool, END OF ty_item.DATA: lt_data TYPE STANDARD TABLE OF ty_item, ls_data TYPE ty_item. DO 10 TIMES. INSERT VALUE #( id = sy-index ) INTO lt_data INDEX sy-index.ENDDO.ls_data-sel = abap_true.MODIFY lt_data FROM ls_data TRANSPORTING sel WHERE ('').cl_demo_output=>display( lt_data ).

注意看第13行的不同点,展示 结果跟方法一是一样的.

解释: where 后面括号内括起来的是一个动态的where条件,当为空的时候,相当于不加限制即1 = 1,所以会更新到所有行。

ABAP三叔

关于作者:ABAP三叔

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「MODIFYITABFROMWAWHERE11.md」整理生成,仅用于内部技术分享与学习交流。