matlab教程答案:ABAP 内表(internal table) 标题行(header line) 工作区(work area)
来源:百度文库 编辑:中财网 时间:2024/04/28 02:59:38
【转】ABAP 内表(internal table) 标题行(header line) 工作区(work area) 简介
文章转自:http://zhouwubin.blogbus.com/logs/14351256.html
刚开始学ABAP的时候,学到iternal table时,感觉一阵混乱.
搞不清楚什么是work area,什么是header line,以及occurs是干什么用的.
今天终于差不多搞明白了(我还是太弱啊...BS自己一下)
所以还是记录下来..省得自己以后再忘记...
先是用TYPES关键字定义一个行(row)的类型.如下:
TYPES: BEGIN OF line,
field1 TYPE i,
field2 TYPE i,
END OF line.
这里的line,就相当于一个自定义的类型,表示一行(row)的字段(field).
这里一行有两个字段field1和field2.
然后是声明一个work area:
DATA wa TYPE line.
我用C++(还是对cpp最有好感^^)的概念理解就是,
line是一个class,而wa是一个object.
接着是声明一个每一行的类型是line的internal table:
DATA itab TYPE line OCCURS 0.
我在暂时把OCCURS作为了区别工作区和内表的标志.
OCCURS应该有更深层次的意义,但我目前只能领悟至此...
当我们用以上这个方法来声明一个iternal table时,可以选择是否有无header line.
上面这句就是没有header line的.
改成如下就有了:
DATA itab TYPE line OCCURS 0 WITH HEADER LINE.
有无header line的区别就是:header line可以当作一个work area来使用(参照我之前的一个日志).
有以下两种方式操作itab:
1).
wa-field1 = 1.
wa-field2 = 2.
APPEND wa TO itab.
2).
itab-field1 = 1.
itab-field2 = 2.
APPEND itab.
这里wa就是上面那个已经定义的work area.
有header line的时候,这两种都可以.
无header line的时候,只能用第1种.
第2种里,itab的意义是一个header line,而不是内表.
因为"DATA itab TYPE line OCCURS 0 WITH HEADER LINE."这样的声明,
已经隐式声明了一个与内表同名的header line.
所以OCCURS用来声明内表可能造成二义性(ambiguous).
于是,OCCURS被认为是old的东西,采用以下方式声明一个内表比较好:
DATA itab TYPE STANDARD TABLE OF line.
还有一种声明内表的方法:
DATA: BEGIN OF itab OCCURS 0,
field1 TYPE i,
field2 TYPE i,
END OF itab.
这样的itab就自动有了一个同名的header line.
好像不会有 WITHOUT HEADER LINE 或者 NOT WITH HEADER LINE 这样的用法...
如果没有OCCURS 0,比如这样:
DATA: BEGIN OF itab,
field1 TYPE i,
field2 TYPE i,
END OF itab.
那么这个itab就不是内表咯,只是一个structure,可以作为itab的work area.
写到这里发现,归根到底就是TYPES和DATA这两个关键字的区别嘛.
还有有无OCCURS的区别.
这样一想,简单明了~~
补充:
1. ABAP/4的Internal Table如同其他语言的数组结构,在操作上可以有复制,删除,新增等功能,可以存很多条记录,并且ABAP的这种
用法,对行数没什么限制。
WORK AREA就是其他语言的结构,象自定义的一个类型一样;
但一旦创建一个Internal Table之后,WORK AREA就成了外界跟Intertal Table的交流口,每条记录的进入和取出都得通过它。
并且在清除它们的时候要分开来清除。
2. OCCURS 是在3.0以前申明内表的关键字。意思是内表初始的时候有多少行。现在不提倡使用。
故,原来写法可以可以更改为:
DATA itab TYPE line OCCURS 0 WITH HEADER LINE
DATA:itab TYPE TABLE OF line WITH HEADER LINE.
文章转自:http://zhouwubin.blogbus.com/logs/14351256.html
刚开始学ABAP的时候,学到iternal table时,感觉一阵混乱.
搞不清楚什么是work area,什么是header line,以及occurs是干什么用的.
今天终于差不多搞明白了(我还是太弱啊...BS自己一下)
所以还是记录下来..省得自己以后再忘记...
先是用TYPES关键字定义一个行(row)的类型.如下:
TYPES: BEGIN OF line,
field1 TYPE i,
field2 TYPE i,
END OF line.
这里的line,就相当于一个自定义的类型,表示一行(row)的字段(field).
这里一行有两个字段field1和field2.
然后是声明一个work area:
DATA wa TYPE line.
我用C++(还是对cpp最有好感^^)的概念理解就是,
line是一个class,而wa是一个object.
接着是声明一个每一行的类型是line的internal table:
DATA itab TYPE line OCCURS 0.
我在暂时把OCCURS作为了区别工作区和内表的标志.
OCCURS应该有更深层次的意义,但我目前只能领悟至此...
当我们用以上这个方法来声明一个iternal table时,可以选择是否有无header line.
上面这句就是没有header line的.
改成如下就有了:
DATA itab TYPE line OCCURS 0 WITH HEADER LINE.
有无header line的区别就是:header line可以当作一个work area来使用(参照我之前的一个日志).
有以下两种方式操作itab:
1).
wa-field1 = 1.
wa-field2 = 2.
APPEND wa TO itab.
2).
itab-field1 = 1.
itab-field2 = 2.
APPEND itab.
这里wa就是上面那个已经定义的work area.
有header line的时候,这两种都可以.
无header line的时候,只能用第1种.
第2种里,itab的意义是一个header line,而不是内表.
因为"DATA itab TYPE line OCCURS 0 WITH HEADER LINE."这样的声明,
已经隐式声明了一个与内表同名的header line.
所以OCCURS用来声明内表可能造成二义性(ambiguous).
于是,OCCURS被认为是old的东西,采用以下方式声明一个内表比较好:
DATA itab TYPE STANDARD TABLE OF line.
还有一种声明内表的方法:
DATA: BEGIN OF itab OCCURS 0,
field1 TYPE i,
field2 TYPE i,
END OF itab.
这样的itab就自动有了一个同名的header line.
好像不会有 WITHOUT HEADER LINE 或者 NOT WITH HEADER LINE 这样的用法...
如果没有OCCURS 0,比如这样:
DATA: BEGIN OF itab,
field1 TYPE i,
field2 TYPE i,
END OF itab.
那么这个itab就不是内表咯,只是一个structure,可以作为itab的work area.
写到这里发现,归根到底就是TYPES和DATA这两个关键字的区别嘛.
还有有无OCCURS的区别.
这样一想,简单明了~~
补充:
1. ABAP/4的Internal Table如同其他语言的数组结构,在操作上可以有复制,删除,新增等功能,可以存很多条记录,并且ABAP的这种
用法,对行数没什么限制。
WORK AREA就是其他语言的结构,象自定义的一个类型一样;
但一旦创建一个Internal Table之后,WORK AREA就成了外界跟Intertal Table的交流口,每条记录的进入和取出都得通过它。
并且在清除它们的时候要分开来清除。
2. OCCURS 是在3.0以前申明内表的关键字。意思是内表初始的时候有多少行。现在不提倡使用。
故,原来写法可以可以更改为:
DATA itab TYPE line OCCURS 0 WITH HEADER LINE
DATA:itab TYPE TABLE OF line WITH HEADER LINE.
Internal
abap开发是什么??
谁了解ABAP技术
abap的读音
abap是什么的缩写?
sap-abap教程
希望高人帮我把下面的英文翻译成中文!谢谢 [TAB] key to bring up the internal menu system.
internal error
internal quality?
[ABAP] Function Module:SELECT_OPTIONS_RESTRIKT如何使用?
abap 能在ultraedit中编辑吗?
为什么EXCEL表之间不能用Alt+Tab切换
tab是什么意思
tab是什么
internal error 2738
Internal Server Error 是什么意思??
500 Internal Server Error。
Internal Server Error
an internal audit
internal.exe 是什么病毒
Internal Server Error
Internal Server Error
Internal Server Error
Internal Server Error