ABAP 解析内表、工作区、表头行的区别.doc

ABAP 解析内表、工作区、表头行的区别.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ABAP 解析内表、工作区、表头行的区别

ABAP 内表(internal table) 标题行(header line) 工作区(work area) 简介 - [SAP]先是用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(internal table) 标题行(header line) 工作区(work area) 这三个不同概念(具体定义请自行查找,这里只讲思路)。在当你在创建一个内表的时候,你同时也声明了一个具有相同名称的标题行(header line),这是一个隐式的(implicit) 的工作区,当然在你定义内表的时候也可以选择无标题行。那么这个工作区是做什么用的呢?因为在对内表操作时,比如增加或者取回一条记录.我们必须暂时保存这条记录,而这条记录就保存在工作区里。来看一个例子: data: begin of itab occurs 10, ??????? ab type c, ??????? cd type i, ????? end of itab.? Itab是一个内表,且有标题行(也有这样的理解:直接定义了内表itab,不使用工作区,系统自动产生同名工作区(itab)来处理数据,这总说法可能不容易能理解),这里所说的同名工作区即指标题行。 再看一个显示的(explicit)声明一个工作区: data: wa_itab like itab。 用SAP library的说法,如果一个内表有标题

您可能关注的文档

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档