




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ABAP 内表用法小结ABAP中的内表相当于其他程序设计语言中的二维数组,存储多行结构相同的数据不同于二维数组,内表在创建后,列结构与列数是固定不变的,而行数是动态增长的内表支持循环对每行数据进行操作,也支持整体操作内表是具有行和列的表结构,然而,不同于数据库表,内表仅在程序运行期间在内存中存储数据ABAP中有三种内表类型:标准表,哈希表,排序表 ABAP内表数据类型内表数据对象是实际的内表,可以用数据进行填充内表数据类型是用于定义内表数据对象的抽象数据类型(ADT)可以使用的内表数据类型有:Structure数据库表用户自定义数据类型ABAP内表声明1>TYPES: BEGIN OF
2、line,field1 TYPE i,field2 TYPE i,END OF line.* 声明一个数据类型DATA: ITAB_WA TYPE(LIKE) line. “ 声明一个内表工作区DATA: ITAB TYPE(LIKE) line OCCURS 0. “ 声明一个无工作区的内表DATA: ITAB TYPE(LIKE) STANDARD TABLE OF line INITIAL SIZE 0. “ 声明一个有工作区的内表DATA: ITAB TYPE(LIKE) line OCCURS 0 WITH HEADER LINE.DATA: ITAB TYPE(LIKE) STAN
3、DARD TABLE OF line INITIAL SIZE 0 WITH HEADER LINE.2>DATA: BEGIN OF line,field1 TYPE i,field2 TYPE i,END OF line.* 声明一个line对象,该对象可以作为工作区使用* 用DATA定义的line本身也是一个结构类型,也可再声明一个工作区DATA: ITAB_WA TYPE(LIKE) line. “ 声明一个工作区DATA: ITAB TYPE(LIKE) line OCCURS 0 WITH HEADER LINE. “ 声明一个带工作区的内表DATA: ITAB TYPE(L
4、IKE) STANDARD TABLE OF line INITIAL SIZE 0 WITH HEADER LINE . “ 声明一个带工作区的内表3> 直接定义内表,这个内表是有工作区的DATA: BEGIN OF ITAB OCCURS 0 ,CARR1 LIKE SPFLI-CARRID,CONN1 LIKE SPFLI-CONNID,END OF ITAB.* DATA: ITAB1 TYPE ITAB.(错误的,实践证明,定义出来的什么都不是)。正确方法:DATA: ITAB1 TYPE ITAB OCCURS 0.(这样定义后的是一个无工作区的内表)。DATA: ITAB1
5、 LIKE ITAB OCCURS 0 WITH HEADER LINE. “定义一个带工作区内表4> type ref to 定义内表type ref to 属于ABAP中面向对象的编程。它是定义一个类的对象。5>通过数据库表定义data itab1 type table of sflight . “ 定义一个不带内表的工作区data wa1 like line of sflgit . “ 定义一个内表工作区data itab1 type table of sflight with header line . “定义一个带内表的工作区 两种内表定义方式的主要区别在于是否有隐式表头
6、行内表是按行进行访问的,然而,程序对内表的行操作不能直接进行,必须使用一种接口来传输,这个接口就是工作区(Work Area)内表操作填充内表行append <wa> to <itab> “ 不带表头行的填充append <itab> “ 带隐式表头行的填充插入内表行insert <wa> into <itab> INDEX idx “insert <itab> INDEX idx “ 隐式表头行插入内表 如果没有指定INDEX ,则默认插入到内表最后一行读取内表行read <itab> into <wa
7、> INDEX idxread <itab> INDEX IDX修改内表行modify <itab> from <wa> INDEX idxmodify <itab> INDEX idx read itab index 3 . itab-XX = xxx . modify itab index 4 .删除内表行delete <itab> INDEX idx . 带表头行和不带表头行语法一致 。内表循环Loop at <itab> into <wa> .<statement block>endl
8、oop. “ 带表头行的内表循环操作Loop at <itab> .<statement block>endloop. “ 不带表头行内表操作 循环体的MODIFY,DELETE等语句不必指定INDEX项,系统默认处理当前行 . 如果不需要读取所有的内表行,可以使用WHERE选项进行限制 LOOP AT <itab> WHERE <conditions>清空内表clear <itab> . “清空不带表头行内表clear<itab> . “清空带表头行内表内表排序SORT <itab> ASCENDING |
9、DESCENDING AS TEXTASCENDING和DESCENDING指定升序还是降序排列,如果不指定,缺省排序方式是升序AS TEXT影响字符字段的排序方式,如果不使用该选项,系统将按字符平台相应内部编码进行排序,否则,系统根据当前语言按字母顺序排序字符字段删除重复行DELETE ADJACENT DUPLICATES FROM <itab> COMPARING <comp>. 删除重复行之前须对内表进行排序判断内表行数DESCRIBE TALBE <itab> LINES <count>.将内表中部分或全部的数据行整体插入另一内表INS
10、ERT LINES OF <itab1> FROM n1 TO n2 INTO TABLE <itab2> INDEX <idx>. insert lines of itab1 from 1 to 100 into itab2 . “ 将内表1前100行数据附加到内表2 . 两个内表必须具有相同的或可转换的行结构将内表中部分或全部的数据行整体填充到另一内表APPEND LINES OF <itab1> FROM n1 TO n2 TO <itab2>.按照条件或者索引删除一组选定行DELETE <itab> FROM n1 TO n2 WHERE <condition>. delete itab1 from 1 to 100 where age >30 . “删除内表前100行中年龄大于30 的记录 。整体复制内表,目标内表原有内容被覆盖MOVE <itab1> TO <itab2> 不带表头行的内表之间进行复制MOVE <itab1> T
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现在分词的试题及答案
- 2026届黑龙江省哈尔滨光华中学化学九年级第一学期期末统考模拟试题含解析
- 深圳八下物理月考试题及答案
- 2025年社工招聘考试题型及答案
- 肾风病考试试题及答案
- 中考数学模考试题及答案
- 四川省达州铁中2026届化学九年级第一学期期中检测模拟试题含解析
- 供电服务类考试题及答案
- 安全工器具考试题及答案
- 2026届四川省营山县联考英语九上期末监测试题含解析
- 子宫肌瘤的治疗与护理
- 传统文化公司管理制度
- 小学生钻石画社团课件
- 隐私计算在档案中的应用-洞察及研究
- 关注老年人心理健康守护幸福 从心开始课件
- 《生成式人工智能(AIGC)通识教程(微课版)》课件 【第09-10讲】生成式人工智能基础与应用
- 扬州扬州市宝应县公安局招聘30名警务辅助人员笔试历年参考题库附带答案详解
- 科技论文写作 第2版 课件 第1-5章 科技论文写作概述-英文科技论文的写作
- 部分退款协议书
- 旅行社地接合同协议书
- 曲臂高空作业车施工方案
评论
0/150
提交评论