abap如何把工作区的内容从内表里删除
时间: 2023-07-13 07:22:44 浏览: 41
在 ABAP 中,可以使用 `DELETE` 语句从内表中删除指定的工作区内容。例如,假设有一个内表 `itab`,其中包含一些工作区内容,你可以使用以下代码删除特定的工作区内容:
```
DELETE itab WHERE field1 = wa-field1 AND field2 = wa-field2.
```
其中 `field1` 和 `field2` 是内表中的某些字段名,`wa` 是指定的工作区内容。这个语句将删除内表 `itab` 中所有满足条件的行。
如果你只想删除单个工作区内容,可以将工作区内容赋值给一个结构体,然后使用 `DELETE` 语句删除该结构体:
```
DATA: wa TYPE my_struct.
wa-field1 = 'ABC'.
wa-field2 = 'DEF'.
DELETE itab WHERE field1 = wa-field1 AND field2 = wa-field2.
```
这个语句将删除内表 `itab` 中与 `wa` 相同的行。
相关问题
Abap如何删除内边里和工作区里重复的数据
要删除内表和工作区中的重复数据,可以使用 ABAP 内置函数 `DELETE ADJACENT DUPLICATES`。该函数可以删除相邻且重复的行,只保留其中的一行。
以下是一个示例代码:
```
TYPES: BEGIN OF ty_data,
field1 TYPE string,
field2 TYPE string,
END OF ty_data.
DATA: itab TYPE STANDARD TABLE OF ty_data WITH DEFAULT KEY,
wa TYPE ty_data.
" 填充内表
wa-field1 = 'A'.
wa-field2 = 'B'.
APPEND wa TO itab.
wa-field1 = 'A'.
wa-field2 = 'C'.
APPEND wa TO itab.
wa-field1 = 'B'.
wa-field2 = 'C'.
APPEND wa TO itab.
" 删除内表和工作区中的重复行
DELETE ADJACENT DUPLICATES FROM itab.
" 输出结果
LOOP AT itab INTO wa.
WRITE: / wa-field1, wa-field2.
ENDLOOP.
```
在这个示例中,我们填充了一个内表 `itab`,其中有两行数据是重复的。然后,我们使用 `DELETE ADJACENT DUPLICATES` 函数删除了这些重复行。最后,我们使用 `LOOP AT` 语句输出结果。
运行该代码后,你会发现重复的行已经被删除了。注意,`DELETE ADJACENT DUPLICATES` 函数只删除相邻的重复行,如果有不相邻但内容相同的行,需要另外处理。
如果需要将内表里所有与工作区一样的数据都删除呢?
如果需要删除内表中所有与工作区一样的数据,可以使用 ABAP 内置函数 `DELETE`。该函数可以删除内表中所有符合条件的行。
以下是一个示例代码:
```
TYPES: BEGIN OF ty_data,
field1 TYPE string,
field2 TYPE string,
END OF ty_data.
DATA: itab TYPE STANDARD TABLE OF ty_data WITH DEFAULT KEY,
wa TYPE ty_data.
" 填充内表
wa-field1 = 'A'.
wa-field2 = 'B'.
APPEND wa TO itab.
wa-field1 = 'A'.
wa-field2 = 'C'.
APPEND wa TO itab.
wa-field1 = 'B'.
wa-field2 = 'C'.
APPEND wa TO itab.
" 删除内表中所有与工作区一样的数据
DELETE itab WHERE field1 = wa-field1 AND field2 = wa-field2.
" 输出结果
LOOP AT itab INTO wa.
WRITE: / wa-field1, wa-field2.
ENDLOOP.
```
在这个示例中,我们填充了一个内表 `itab`,然后定义了一个工作区 `wa`,其中 `wa` 的字段值与内表中的一些行相同。然后,我们使用 `DELETE` 函数删除了内表中所有与工作区一样的数据。最后,我们使用 `LOOP AT` 语句输出结果。
运行该代码后,你会发现所有与工作区一样的数据都已经被删除了。注意,`DELETE` 函数会删除内表中所有符合条件的行,如果只需要删除第一次出现的行,可以使用 `DELETE ADJACENT DUPLICATES` 函数。