77范文网 - 专业文章范例文档资料分享平台

内表的操作(2)

来源:网络收集 时间:2018-11-22 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

OCCURS和WITH HEADER LINE:

OCCURS是声明了一个标准内表(abap3.0以前版本),而with header line是使这个标准内表同时带了同名工作区(即表头行)

REPORT demo_int_tables_append. * append ... to data: BEGIN OF wa ,

col1(1) TYPE c, col2 TYPE i, END OF wa.

*DATA itab LIKE standard table of wa.

*DATA itab LIKE standard table of wa with header line.

*the specification \types.

*DATA itab like wa with header line. DATA itab like wa occurs 0. **下边代码会产生错误,因为上面定义的内表itab不带工作区(表头行) *一个表肯定不能直接write出字段 *write : / itab-col1, itab-col2. DO 3 TIMES.

wa-col1 = sy-index. wa-col2 = sy-index ** 2. APPEND wa TO itab. ENDDO.

*itab和itab[]都代表内表itab,虽然内表itab不带表头行 LOOP AT itab INTO wa.

WRITE: / wa-col1, wa-col2. ENDLOOP.

loop at itab[] into wa. write: / wa-col1,wa-col2. endloop.

因为有了同名工作区而产生的问题:

----------------itab 和itab[]

REPORT demo_int_tables_append . * append ... to DATA: BEGIN OF wa ,

col1(1) TYPE c, col2 TYPE i, END OF wa.

DATA itab LIKE standard table of wa with header line. DO 3 TIMES.

itab-col1 = sy-index. itab-col2 = sy-index ** 2. APPEND itab. ENDDO.

LOOP AT itab.

WRITE: / itab-col1, itab-col2. ENDLOOP.

*不是说带表头行的内表,itab代表表头行(工作区),itab[]才代表内*表吗?

*在loop at循环中itab就代表内表,而不是表头行(工作区) *因为表头行(工作区)就一行,所以不需要也不能loop循环 loop at itab into wa.

write: / wa-col1,wa-col2. endloop.

*不管什么时候itab[]都代表内表本身 loop at itab[] into wa. write: / wa-col1,wa-col2. endloop.

*在不在loop循环中的时候才是itab代表表头行,而itab[]代表内表本身 *就如后边要讲的 move itab to jtab 与 move itab[] to jtab[]的区别 write : / itab-col1, itab-col2.

同名的工作区的小例子:

1.读取内表数据时候,用了同名工作区做中转站

REPORT demo_int_tables_append . * append ... to

*occurs是ABAP3.0之前声明内表的关键字 *这样声明即定义了一个内表WA,

*同时WA又带了一个同名的工作区(itab[]代表内表,itab代表工作区) DATA: BEGIN OF itab occurs 10, col1(1) TYPE c, col2 TYPE i, END OF itab. DO 3 TIMES.

itab-col1 = sy-index. itab-col2 = sy-index ** 2. APPEND itab. ENDDO.

itab-col1 = 'x'. itab-col2 = 100.

*输出工作区itab中的数据

WRITE: / itab-col1, itab-col2. skip.

*loop后边的不管是itab[],还是itab都是内表,

*因为工作区(表头行)只有一行,所以是不用循环读取的, *下边的itab是个带工作区(表头行)的内表,

*所以它循环读取的时候是用自己的同名工作区来做中转站的. LOOP AT itab.

WRITE: / itab-col1, itab-col2. ENDLOOP. skip.

*输出工作区itab中数据

WRITE: / itab-col1, itab-col2.

2.读取内表数据时没有用同名工作取做中转站,而是用的另外定义的工作区wa

REPORT demo_int_tables_append .

* append ... to

*occurs是ABAP3.0之前声明内表的关键字 *这样声明即定义了一个内表WA,

*同时WA又带了一个同名的工作区(itab[]代表内表,itab代表工作区) DATA: BEGIN OF itab occurs 10, col1(1) TYPE c, col2 TYPE i, END OF itab. *定义工作区wa

data:wa like itab. DO 3 TIMES.

itab-col1 = sy-index. itab-col2 = sy-index ** 2. APPEND itab. ENDDO.

itab-col1 = 'x'. itab-col2 = 100.

*输出工作区itab中的数据

WRITE: / itab-col1, itab-col2. skip.

*loop后边的不管是itab[],还是itab都是内表,

*因为工作区(表头行)只有一行,所以是不用循环读取的, LOOP AT itab into wa.

WRITE: / wa-col1, wa-col2. ENDLOOP. skip.

*输出工作区itab中数据

WRITE: / itab-col1, itab-col2.

初始化内表:

初始化内表的作用是清空内表所有的数据行,将内表恢复到填充或赋值之前的状态。初始化内表要注意的问题仍然是初始化有表头行和无表头行的内表的区别,以及初始化内表和表头行的区别。

1. Clear 用法:clear itab 。“这样做将清空内表中所有

数据,同时清空该内表的表头行中的所有数据。如果想只清空内表中数据,而保留表头行中数据,则应该用clear itab[]。”上边的话是《

SAP程序设

计》中135页的话,其实是错误的。正确的应该是:对与一个有工作区的内表itab,clear itab清空的是工作区,而不清空内表;clear itab[]是清空内表,而不清空工作区。

REPORT demo_int_tables_append . * append ... to DATA: BEGIN OF wa ,

col1(1) TYPE c, col2 TYPE i, END OF wa.

DATA itab LIKE standard table of wa with header line. DO 3 TIMES.

itab-col1 = sy-index. itab-col2 = sy-index ** 2. APPEND itab. ENDDO.

LOOP AT itab.

WRITE: / itab-col1, itab-col2. ENDLOOP.

skip.

*不是说带表头行的内表,itab代表表头行(工作区),itab[]才代表内表吗?

*在loop at循环中itab就代表内表,而不是表头行(工作区) loop at itab into wa.

write: / wa-col1,wa-col2. endloop. skip.

*不管什么时候itab[]都代表内表本身 loop at itab[] into wa. write: / wa-col1,wa-col2. endloop. skip.

*在不在loop循环中的时候才是itab代表表头行,而itab[]代表内表本身 write : / itab-col1, itab-col2. skip.

*对与有表头行的内表,clear itab 和 clear itab[]的区别 clear itab. clear itab[]. LOOP AT itab.

WRITE: / itab-col1, itab-col2. ENDLOOP.

*下边会多输出一个零,是工作区中的默认值(字符型默认值为空,数值型默认值为0)

write : / itab-col1, itab-col2.

2. Refresh

Free

这两个关键字的作用基本相同,都是只能清空内表中的数据,而不能清空内表同名工作区中的数据。区别就是refresh并不会同时将预先分配给内表的内存释放,而free则同时释放了预先分配给内表的内存(默认的是8K)。clear也不释放掉内存。

REPORT demo_int_tables_append .

* append ... to * 定义工作区wa DATA: BEGIN OF wa,

col1(1) TYPE c, col2 TYPE i,

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库内表的操作(2)在线全文阅读。

内表的操作(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/300116.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: