DELETE ADJACENT DUPLICATES FROM ITAB. SKIP TO LINE 3.
LOOP AT ITAB INTO LINE.
WRITE: /42 LINE-COL1, LINE-COL2. ENDLOOP.
删除选定行
REPORT:ZDZ.
DATA: BEGIN OF LINE, COL1 TYPE I, COL2 TYPE I, END OF LINE.
DATA ITAB LIKE LINE OCCURS 10. DO 40 TIMES.
LINE-COL1 = SY-INDEX.
LINE-COL2 = SY-INDEX ** 2. APPEND LINE TO ITAB. ENDDO.
DELETE ITAB FROM 3 TO 38 WHERE COL2 > 20. LOOP AT ITAB INTO LINE.
WRITE: / LINE-COL1, LINE-COL2. ENDLOOP.
内表排序
“内表的表关键字在访问内表和内表排序中起着相当重要的作用,在内表定义语句中,使用WITH key指定内表关键字,该项为可选项,如果不指定,则系统会使用默认(标准)关键字,如果程序员指定,则有以下形式:
1.
如果内表行是结构体,则可以指定结构体中的某几个字段作为内表关键字,该字段不能是内表或者引用类型,但是可以是嵌套的结构体。
REPORT demo_structure.
types: BEGIN OF name,
title(5) TYPE c, first_name(10) TYPE c, last_name(10) TYPE c, END OF name.
types: BEGIN OF mylist,
client TYPE name, number TYPE i, END OF mylist.
DATA :list type table of mylist with non-unique key number with header line.
2. 如果内表的整行都是由基本类型字段组成,则可以将内表的整个行定义为表关键
字。如果内表字段本身是结构化类型,则不宜指定整行作为关键字段。所以下边的做法是不好的。
REPORT demo_structure.
types: BEGIN OF name,
title(5) TYPE c, first_name(10) TYPE c, last_name(10) TYPE c, END OF name.
types: BEGIN OF mylist,
client TYPE name, number TYPE i, END OF mylist.
DATA :list type table of mylist with non-unique key table line with header line.
3.如果不指定任何关键字,则系统会默认的选择关键字段。(扁平结构内表的默认
关键字段为非数字和非内表的组件字段)如果内表行是由单个基本类型组成,则默认关键字为整个行。如果内表行中包含有内表类型字段,则没有默认关键字。
4.关键UNIQUE KEY (不可以出现关键字相同的数据行)/ NON-UNIQUE KEY(可以出现关键字相同的数据行)是决定了内表中具有相同关键字的数据行是否可以重复出现,在标准内表中不能用UNIQUE KEY,而且不需要特别指定NON-UNIQUE KEY。所以
这个关键字在标准内表中一般都不需要写。
REPORT:ZDZ.
DATA: BEGIN OF ITAB OCCURS 10, LAND(3) TYPE C, NAME(10) TYPE C, AGE TYPE I,
WEIGHT TYPE P DECIMALS 2, END OF ITAB.
ITAB-LAND = 'USA'. ITAB-NAME = 'Nancy'. ITAB-AGE = 35. ITAB-WEIGHT = '45.00'. APPEND ITAB.
ITAB-LAND = 'USA'. ITAB-NAME = 'Howard'. ITAB-AGE = 40. ITAB-WEIGHT = '95.00'. APPEND ITAB.
ITAB-LAND = 'GB'. ITAB-NAME = 'Jenny'. ITAB-AGE = 18. ITAB-WEIGHT = '50.00'. APPEND ITAB.
ITAB-LAND = 'F'. ITAB-NAME = 'Michele'. ITAB-AGE = 30. ITAB-WEIGHT = '60.00'. APPEND ITAB.
ITAB-LAND = 'G'. ITAB-NAME = 'Karl'. ITAB-AGE = 60. ITAB-WEIGHT = '75.00'. APPEND ITAB. SORT ITAB. LOOP AT ITAB.
WRITE: / ITAB-LAND, ITAB-NAME, ITAB-AGE, ITAB-WEIGHT. ENDLOOP. SKIP.
SORT ITAB DESCENDING BY LAND WEIGHT ASCENDING. LOOP AT ITAB.
WRITE: / ITAB-LAND, ITAB-NAME, ITAB-AGE, ITAB-WEIGHT. ENDLOOP.
在此创建有 表头行的内 表 ITAB 并用 5 行对其进行 填充。首先 根据其标准 关键字(LAND 和 NAME) 进行排序。 然后根据定 义为 LAND 和 WEIGHT 的排序关键 字进行排序 。一般排序 顺序定义为 降序,但对 于 WEIGHT, 定义为升序 。这就是为 什么在第二 个 SORT 语句之后包 含 NAME 字段“NANCY” 的行在包含 NAME 字段“HOWARD” 的行之前输 出。
比较内表
DATA: BEGIN OF LINE, COL1 TYPE I, COL2 TYPE I, END OF LINE.
DATA: ITAB LIKE LINE OCCURS 10, JTAB LIKE LINE OCCURS 10. DO 3 TIMES.
LINE-COL1 = SY-INDEX.
LINE-COL2 = SY-INDEX ** 2. APPEND LINE TO ITAB. ENDDO.
MOVE ITAB TO JTAB.
LINE-COL1 = 10. LINE-COL2 = 20. APPEND LINE TO ITAB. IF ITAB GT JTAB.
WRITE / 'ITAB GT JTAB'. ENDIF.
APPEND LINE TO JTAB. IF ITAB EQ JTAB.
WRITE / 'ITAB EQ JTAB'. ENDIF.
LINE-COL1 = 30. LINE-COL2 = 80. APPEND LINE TO ITAB. IF JTAB LE ITAB.
WRITE / 'JTAB LE ITAB'. ENDIF.
LINE-COL1 = 50. LINE-COL2 = 60. APPEND LINE TO JTAB. IF ITAB NE JTAB.
WRITE / 'ITAB NE JTAB'. ENDIF.
IF ITAB LT JTAB.
WRITE / 'ITAB LT JTAB'. ENDIF.
REPORT demo_int_tables_append . tables :spfli.
SELECT * from spfli into spfli. WRITE: / spfli-CITYFROM. endselect.
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库内表的操作(4)在线全文阅读。
相关推荐: