内表的操作(4)

2018-11-22 21:34

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.


内表的操作(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:Java语言程序设计习题答案(清华大学出版杜)张思民版-1-12章答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: