SAP ABAP——内表(八)【修改内表数据】

简介: 本文主要介绍一下SAP ABAP中内表的增删查改语句中的修改内表数据的相关语句,包括利用关键字修改数据,利用索引修改数据,利用WHERE语句修改数据

本文主要介绍一下SAP ABAP中内表的增删查改语句中的修改内表数据的相关语句,包括利用关键字修改数据,利用索引修改数据,利用WHERE语句修改数据


利用关键字修改数据

MODIFY TABLE itab FTOM wa [TRANSPORTING f1 f2...].

案例代码演示

DATA:GT_SFLIGHT TYPE TABLE OF SFLIGHT WITH NON-UNIQUE KEY CARRID,
     GS_SFLIGHT TYPE SFLIGHT.
GS_SFLIGHT-CARRID = 'AC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200716'.
GS_SFLIGHT-PRICE = 1500.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
WRITE:'内表修改前数据'.
LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
  WRITE:/ GS_SFLIGHT-CARRID,GS_SFLIGHT-CONNID,GS_SFLIGHT-FLDATE,GS_SFLIGHT-PRICE.
ENDLOOP.
GS_SFLIGHT-CARRID = 'AC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200717'.
GS_SFLIGHT-PRICE = 1600.
MODIFY TABLE GT_SFLIGHT FROM GS_SFLIGHT.
ULINE.
WRITE:'内表修改后数据(不指定修改字段)'.
LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
  WRITE:/ GS_SFLIGHT-CARRID,GS_SFLIGHT-CONNID,GS_SFLIGHT-FLDATE,GS_SFLIGHT-PRICE.
ENDLOOP.
GS_SFLIGHT-CARRID = 'AC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200715'.
GS_SFLIGHT-PRICE = 1700.   
MODIFY TABLE GT_SFLIGHT FROM GS_SFLIGHT TRANSPORTING PRICE.
ULINE.
WRITE:'内表修改后数据(指定修改PRICE字段,故FLDATE字段没有修改)'.
LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
  WRITE:/ GS_SFLIGHT-CARRID,GS_SFLIGHT-CONNID,GS_SFLIGHT-FLDATE,GS_SFLIGHT-PRICE.
ENDLOOP.

效果演示

6df5d6e055d5968030c82b34b66836f.png


利用索引修改数据

MODIFY itab INDEX n [TRANSPORTING f1 f2...].

PS:

1) 在LOOP循环中,MODIFY后不需要加INDEX,系统自动将数据更新到当前所在索引行

2) 使用索引修改数据只适用于标准表和排序表,不适用于哈希表


案例代码演示

DATA:GT_SFLIGHT TYPE TABLE OF SFLIGHT WITH NON-UNIQUE KEY CARRID,
     GS_SFLIGHT TYPE SFLIGHT.
GS_SFLIGHT-CARRID = 'AC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200716'.
GS_SFLIGHT-PRICE = 1500.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
GS_SFLIGHT-CARRID = 'AC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200717'.
GS_SFLIGHT-PRICE = 1600.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
GS_SFLIGHT-CARRID = 'AC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '202007174'.
GS_SFLIGHT-PRICE = 1800.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
WRITE:'内表修改前数据'.
LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
  WRITE:/ GS_SFLIGHT-CARRID,GS_SFLIGHT-CONNID,GS_SFLIGHT-FLDATE,GS_SFLIGHT-PRICE.
ENDLOOP.
GS_SFLIGHT-CARRID = 'AC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200715'.
GS_SFLIGHT-PRICE = 1700.
MODIFY  GT_SFLIGHT FROM GS_SFLIGHT INDEX 2.
ULINE.
WRITE:'内表修改后数据(不指定修改字段)'.
LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
  WRITE:/ GS_SFLIGHT-CARRID,GS_SFLIGHT-CONNID,GS_SFLIGHT-FLDATE,GS_SFLIGHT-PRICE.
ENDLOOP.
GS_SFLIGHT-CARRID = 'AC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200721'.
GS_SFLIGHT-PRICE = 1900.
MODIFY  GT_SFLIGHT FROM GS_SFLIGHT INDEX 1 TRANSPORTING PRICE.
ULINE.
WRITE:'内表修改后数据(指定修改PRICE字段,故FLDATE字段没有修改)'.
LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
  WRITE:/ GS_SFLIGHT-CARRID,GS_SFLIGHT-CONNID,GS_SFLIGHT-FLDATE,GS_SFLIGHT-PRICE.
ENDLOOP.

效果演示

2dde66febdec554103cff3f40d88569.png


利用WHERE语句修改数据

MODIFY itab FROM wa TRANSPORTING f1 f2... WHERE condition.

案例代码演示

DATA:GT_SFLIGHT TYPE TABLE OF SFLIGHT WITH NON-UNIQUE KEY CARRID,
      GS_SFLIGHT TYPE SFLIGHT.
GS_SFLIGHT-CARRID = 'AC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200716'.
GS_SFLIGHT-PRICE = 1500.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
GS_SFLIGHT-CARRID = 'AC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200717'.
GS_SFLIGHT-PRICE = 1600.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
GS_SFLIGHT-CARRID = 'BC'.
GS_SFLIGHT-CONNID = 0820.
GS_SFLIGHT-FLDATE = '20200718'.
GS_SFLIGHT-PRICE = 1700.
APPEND GS_SFLIGHT TO GT_SFLIGHT.
WRITE:'内表数据修改前:'.
LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
  WRITE:/ GS_SFLIGHT-CARRID,GS_SFLIGHT-CONNID,GS_SFLIGHT-FLDATE,GS_SFLIGHT-PRICE.
ENDLOOP.
GS_SFLIGHT-PRICE = 2000.
MODIFY  GT_SFLIGHT FROM GS_SFLIGHT TRANSPORTING PRICE WHERE CARRID = 'AC'.
ULINE.
WRITE:'内表数据修改后:'.
LOOP AT GT_SFLIGHT INTO GS_SFLIGHT.
  WRITE:/ GS_SFLIGHT-CARRID,GS_SFLIGHT-CONNID,GS_SFLIGHT-FLDATE,GS_SFLIGHT-PRICE.
ENDLOOP.

效果演示

81e207fd38fd26ae869c7326b4e9a37.png

目录
相关文章
|
28天前
|
开发者 供应链 BI
SAP ABAP CALL SUBSCREEN 代码解析
SAP ABAP CALL SUBSCREEN 代码解析
34 0
|
24天前
|
存储
使用 ABAP 代码打印出 SAP CRM 系统里所有维护了 Sales Area 的 business partner id
使用 ABAP 代码打印出 SAP CRM 系统里所有维护了 Sales Area 的 business partner id
21 0
|
24天前
关于 SAP ABAP OData 服务如何实现 Deep Insert 场景 - SAP 应用的标准行为试读版
关于 SAP ABAP OData 服务如何实现 Deep Insert 场景 - SAP 应用的标准行为试读版
16 1
|
24天前
|
人工智能
Suno AI 生成 SAP ABAP 顾问之歌
Suno AI 生成 SAP ABAP 顾问之歌
19 1
|
24天前
|
存储 安全 数据库
SAP ABAP 中数据类型 xstring 的使用介绍
SAP ABAP 中数据类型 xstring 的使用介绍
20 0
|
27天前
|
数据处理 自然语言处理 BI
ABAP 源代码如何创建嵌套的内表,即内表列数据结构又是内表
ABAP 源代码如何创建嵌套的内表,即内表列数据结构又是内表
24 1
|
27天前
什么是 SAP ABAP 里的 Subscreen
什么是 SAP ABAP 里的 Subscreen
16 1
什么是 SAP ABAP 里的 Subscreen
|
27天前
SAP ABAP 里 CALL SUBSCREEN 语句的使用介绍
SAP ABAP 里 CALL SUBSCREEN 语句的使用介绍
12 1
SAP ABAP 里 CALL SUBSCREEN 语句的使用介绍
|
2月前
|
前端开发 搜索推荐 开发者
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
SAP UI5 sap.m.Column 控件的 minScreenWidth 属性介绍
29 0
|
2月前
|
JavaScript 前端开发 开发者
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
SAP UI5 控件 sap.m.ListBase 的 inset 属性的作用介绍
17 0