ABAPInternalTable实用教案

上传人:M****1 文档编号:568559899 上传时间:2024-07-25 格式:PPT 页数:33 大小:825KB
返回 下载 相关 举报
ABAPInternalTable实用教案_第1页
第1页 / 共33页
ABAPInternalTable实用教案_第2页
第2页 / 共33页
ABAPInternalTable实用教案_第3页
第3页 / 共33页
ABAPInternalTable实用教案_第4页
第4页 / 共33页
ABAPInternalTable实用教案_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《ABAPInternalTable实用教案》由会员分享,可在线阅读,更多相关《ABAPInternalTable实用教案(33页珍藏版)》请在金锄头文库上搜索。

1、结构(jigu)、工作区、内表结构( jigu)(Structure)工作区(Workarea)内表(Innertable)2024/7/251第1页/共32页第一页,共33页。结构(jigu)属于复杂(fz)类型,内容包含定义的数据字段TYPES:BEGINOFline,idTYPEi,name(30),agetypei,ENDOFline.DATAmemberTYPEline.定义一个结构体存储员工信息内表就是多个结构体的动态的排序,可以存储多个员工行数可以动态添加2024/7/252第2页/共32页第二页,共33页。内表工作(gngzu)区内表:用于在程序运行期间存储多行结构相同的数据工

2、作区:内表是按行进行访问的。必须使用某个(mu)工作区域作为与表格互相传输数据的接口。工作区与内表的定义data:wa_linetypeline,it_linetypetableofline.表头行(withheaderline):隐式工作区读取数据行更新数据行工作区内表idnameageIdNameage2024/7/253第3页/共32页第三页,共33页。内表类型(lixng)标准表标准表(standardtable或者省略关键字):系统为每一行数据生成一个逻辑索引;填充标准表时,可附加在现有行之后或者是插入到指定位置;程序对内表的寻址操作可以通过关键字或者索引进行;对内表进行插入、删除等

3、操作时,其数据行在内存中的位置不变,系统近重新排列各数据行的索引值不能定义唯一关键字,相同关键字的数据可重复(chngf)出现标准表的另一种定义方式:data:beginofitaboccurs0,endofitab.2024/7/254第4页/共32页第四页,共33页。内表类型(lixng)排序表关键字SORTEDTABLE ,也有一个逻辑索引总是按照关键字升序排序(pix)后再进行存储可按照关键字访问内表行也可按照逻辑索引寻找内表行,与标准表相同可以把排序(pix)表的关键字定义为唯一关键字或者普通关键字2024/7/255第5页/共32页第五页,共33页。内表类型(lixng)哈希表关键

4、字:HASHEDTABLE无索引,只能通过(tnggu)关键字访问系统用哈希算法管理表中的数据寻址一条数据记录的时间与表的行数无关必须定义且只能定义为唯一关键字不可能有关键字相同的两行数据出现2024/7/256第6页/共32页第六页,共33页。定义(dngy)内表语法格式:TYPES|DATAitabTYPE|LIKEtablekindOFLINETYPE|LINEOBJECTWITHkeyINITIALSIZEnwithheaderline.tablekind:内表类型(lixng)linetype|lineobject:行结构key:表关键字Initialsizen:内表分配的初始内存大

5、小withheaderline:定义表头行2024/7/257第7页/共32页第七页,共33页。内表的重要概念(ginin)逻辑索引对于标准表和排序表,每一条数据记录都有一个逻辑索引在对标准表和排序表进行插入、删除(shnch)、附加操作的时候,系统自动的对每一条数据记录赋一个逻辑索引,记录该数据记录在该内表中的逻辑位置(第X行)对于标准表和排序表,可以通过逻辑索引操作数据行,关键字为INDEXn,表示读取第多少行数据记录2024/7/258第8页/共32页第八页,共33页。内表的重要系统(xtng)变量SY-TABIX,当前内表的当前数据记录的逻辑索引值内表嵌套循环时,如果需要使用到sy-t

6、abix变量,请尽量把sy-tabix赋给一个(y)变量再进行处理2024/7/259第9页/共32页第九页,共33页。表关键字WITHkey:指定内表关键字,如不指定,则系统(xtng)使用默认(标准)关键字可以用UNIQUE|NON-UNIQUE来决定内表中具有相同关键字的数据记录是否可以重复出现如果未指定关键字,则默认关键字为非数字和非内表的组件字段。比如内表中含有 C,N,P三种类型的字段,则默认关键字为C,N类型的字段2024/7/2510第10页/共32页第十页,共33页。初始(chsh)内存大小关键字:initialsizenN可以为正数或者0N值的选择不影响程序执行的正确性,但

7、可能影响执行效率:如果N设置过小,重新分配内存空间要占用时间如果N设置过大,则造成内存分配的浪费(lngfi)如果n为0或者不指定,则程序为内表对象分配8KB的内存2024/7/2511第11页/共32页第十一页,共33页。工作(gngzu)区(WorkArea/WorkSpace)程序不能直接进行内表的行操作,需要通过工作区来处理工作区必须具有与内表行一致或者可以互相转换的结构,通常是与内表行类型相同的结构体定义内表对象的同时,需要定义一个与该内表行结构相同的工作区供程序使用添加内表数据时,先给工作区赋值,然后把工作区内(qni)的数据添加、插入到内表修改内表数据时,把已定位的内部行内容覆盖

8、工作区的内容,修改工作区内(qni)容,再回写2024/7/2512第12页/共32页第十二页,共33页。工作(gngzu)区与内表数据交换图例内表工作区2024/7/2513读取数据行更新(gngxn)数据行第13页/共32页第十三页,共33页。隐式工作(gngzu)区表头行(HeaderLine)创建内表的时候隐式地定义一个同名工作区,这个同名工作区就叫表头行或标题行语法(yf):DATAitabWITHHEADERLINE创建内表的时候,通过该附加项决定内表是否带表头行创建带表头行的内表,则创建了内表和与内表行结构一致的结构体;对带表头行的内表,不需要指定工作区,系统隐式使用表头行作为工

9、作区表头行带来方便也增加了混淆:同一语句内表名称可能代表内表或者同名工作区,加代表内表,不带表示表头行2024/7/2514第14页/共32页第十四页,共33页。行访问(fngwn)方式通过(tnggu)关键字访问(适合所有内表):通过(tnggu)索引访问(不适合哈希表):所有行操作成功,SY-SUBRC为0,否则为非0值标准表排序表哈希表索引访问允许允许不允许关键字访问允许允许允许相同值关键字行可重复可重复或不可重复不可重复推荐访问方式主要通过索引主要通过关键字只能通过关键字2024/7/2515第15页/共32页第十五页,共33页。行操作性能(xngnng)分析标准表:定位一行(yxng

10、)数据所需时间取决于表的行数,随行线性增长排序表:定位一行(yxng)数据所需时间取决于表的行数,随行数对数级增长哈希表:定位一行(yxng)数据通过关键字进行,查找速度与行数无关Notes:程序中使用何种内表,取决于预计需要容纳的数据行数及访问频率:行数很少,用标准表;数据量巨大,且不存在重复行,用哈希表;运行期内必须用某种排序形式出现时,用排序表。多数程序都使用标准表2024/7/2516第16页/共32页第十六页,共33页。定定义(dngy)内内表的表的语法法n1.DATA: BEGIN OF ITAB OCCURS 10 , NAME(10) TYEP C, SEX(2) TYPE C

11、, AGE TYPE I, END OF ITAB.n2.DATA: ITAB1 TYPE ITAB.n3.DATA: ITAB1 LIKE ITAB OCCURS 10 n .n4.DATA: BEGIN OF ITAB1 OCCURS 10.n INCLUDE STRUCTURE ITAB.n DATA: END OF ITAB1. 第17页/共32页第十七页,共33页。创建建(chungjin)和和处理理内内表表nABAP/4的内表如同其它语言的阵列结构,在操作上可以有复制、删除n 和新增插入(ch r)等功能。n首先使用TYPES创建内表数据类型,然后再用DATA创建对象n 语法n T

12、YPES OCCURS .n 它定义了一个阵列,类型为,长度为.n 例子n TYPES ITAB TYPE I OCCURS 10.n DATA TAB1 TYPE ITAB. n DATA TAB2 LIKE TAB1.n 这是一个拥有10个元素的内表。n直接使用DATA创建内表数据对象n 语法n DATA OCCURS WITH HEADER LINE.n 例子n DATA VECTOR TYPE I OCCURS 10.第18页/共32页第十八页,共33页。创建建(chungjin)和和处理理内内表表nABAP/4对于内表字段都是基于工作区或表头进行(jnxng)引用的。n工作区(Wor

13、k area)和表头(Header line)如同指针一样,n它保存着当前或最近一次操作的数据。n内表或者有工作区、或者有表头,二者必具其一。n工作区可以与内表同名,也可以其它名字命名。第19页/共32页第十九页,共33页。创建使用(shyng)工作区的内表1、工作区与内表同名:DATA:BEGINOFITABOCCURS10,LENGTHTYPEI,ENDOFITAB.2、工作区以其它名字命名:DATA:BEGINOFITWA,LENGTHTYPEI,ENDOFITWA.DATAITABLIKEITWAOCCURS10.DATAITABLIKEtableofitwa.创建带表头的内表DATA

14、ITABTYPEIOCCURS10WITHHEADERLINE.创建(chungjin)和处理内表第20页/共32页第二十页,共33页。创建建(chungjin)和和处理理内内表表n向内表中逐条追加记录n 语法(yf)n APPEND TO n 例子n DATA: BEGIN OF ITAB OCCURS 10,n COL1 TYPE I,n COL2 TYPE I,n END OF ITAB.n DO 2 TIMES.n ITAB-COL1 = SY-INDEX.n ITAB-COL2 = SY-INDEX * 2.n APPEND ITAB.n ENDDO n向一个内表中追加另一个内表的记

15、录n 语法(yf)n APPEND LINES OF FORM TO TO .n 例子:APPEND LINES OF ITAB1 TO ITAB2.n 表示把ITAB1中的所有记录追加到ITAB2中。第21页/共32页第二十一页,共33页。用MODIFY更改(gnggi)行MODIFYFROMINDEX.利用索引可以变更相关行的值MODIFYitabFROMwaTRANSPORTINGf1f2.WHEREcond.DATA: BEGIN OF LINE, COL1 TYPE I, COL2 TYPE I, END OF LINE.DATA ITAB LIKE LINE OCCURS 10.D

16、O 3 TIMES. LINE-COL1 = SY-INDEX. LINE-COL2 = SY-INDEX * 2. APPEND LINE TO ITAB.ENDDO.LINE-COL1 = 10. LINE-COL2 = 10 * 2 .MODIFY ITAB FROM LINE INDEX 2.LOOP AT ITAB INTO LINE. WRITE: / SY-TABIX, LINE-COL1, LINE-COL2.ENDLOOP.其输出(shch)为: 1 1 1 2 10 100 3 3 9创建(chungjin)和处理内表第22页/共32页第二十二页,共33页。创建建(chun

17、gjin)和和处理理内内表表n向内表中插入记录n 语法n INSERT INTO INITIAL LINE INTO INDEX .n 例子n DO 2 TIMES.n ITAB-COL1 = SY-INDEX * 10.n ITAB-COL2 = SY-INDEX * 20.n APPEND ITAB.n ENDDO n ITAB-COL1 = 100.n ITAB-COL2 = 200.n INSERT LINE INTO ITAB INDEX 2.n 它表示(biosh)在第二条记录之前插入一条记录。第23页/共32页第二十三页,共33页。创建建(chungjin)和和处理理内内表表n在

18、加入新记录时,将非数值字段具有相同内容记录的数值字段汇总。n 语法(yf)n COLLECT INTO .n 例子n DATA: BEGIN OF ITAB OCCURS 10,n COL1(3) TYPE C,n COL2 TYPE I,n END OF ITAB.n ITAB-COL1 = ABC. ITAB-COL2 = 100.n COLLECT ITAB.n ITAB-COL1 = XYZ. ITAB-COL2 = 200.n COLLECT ITAB.n ITAB-COL1 = ABC. ITAB-COL2 = 300.n COLLECT ITAB. 第24页/共32页第二十四页,

19、共33页。创建建(chungjin)和和处理理内内表表n读取内表中的记录。n 语法(yf)n LOOP AT INTO n FROM TO WHERE .n .n ENDLOOP.n 例子n LOOP AT ITAB.n WRITE: / ITAB-COL1,ITAB-COL2.n ENDLOOP.第25页/共32页第二十五页,共33页。读取内表中的行数据读取内表中的行数据(shj)(shj)创建建(chungjin)和和处理理内内表表n要用索引从 内表中读取 单行,请使 用 READ 语句nREAD TABLE INTO INDEX .n如果找到有 指定索引的 条目,则将 系统字段 SY-S

20、UBRC 设置为0, n而且(r qi) SY-TABIX 包含该行的 索引。否则 ,SY-SUBRC 包含非0值 。DATA: BEGIN OF ITAB OCCURS 10, COL1 TYPE I, COL2 TYPE I, END OF ITAB.DO 20 TIMES. ITAB-COL1 = SY-INDEX. ITAB-COL2 = 2 * SY-INDEX. APPEND ITAB.ENDDO.READ TABLE ITAB INDEX 7.WRITE: SY-SUBRC, SY-TABIX.WRITE: / ITAB-COL1, ITAB-COL2.其输出为:其输出为: 0

21、7 7 14第26页/共32页第二十六页,共33页。n用自定义关 键字读取单 行nREAD TABLE INTO WITH KEY n BINARY SEARCH.n定义一系列 关键字段n .WITH KEY = . = .n如果找到有 适当关键字 的条目,则 将系统字段 SY-SUBRC 设置为0, n并且 SY-TABIX 包含(bohn)该行的 索引。否则 ,将 SY-SUBRC 设置为非0值 。读取内表中的行数据读取内表中的行数据(shj)(shj)创建建(chungjin)和和处理理内内表表第27页/共32页第二十七页,共33页。删除删除(shnch)(shnch)内表中的记录内表中

22、的记录创建建(chungjin)和和处理理内内表表nDELETE INDEX .n 它表示(biosh)删除中的第记录。nDELETE FROM TO WHERE .n 它表示(biosh)删除中符合的记录中的第至条记录。第28页/共32页第二十八页,共33页。创建建(chungjin)和和处理理内内表表复制复制(fzh)(fzh)内表内表MOVE TO .该语句等价 于: = .也可进行多 重赋值,例 如, = = = .也是可能的 。MOVE-CORRESPONDING TO .两个内标结构不一样(yyng),相应的字段的赋值注意:这里进行的是整体赋值,而不是一行一行的操作如果内表有表头行

23、 那么应该内表后面加 表示操作整个表, 不加就只操作表头行第29页/共32页第二十九页,共33页。初始化内表初始化内表创建建(chungjin)和和处理理内内表表nREFRESH .n 它表示清除没有HEADER LINE的内表中的所有记录。nCLEAR .n 它表示清除具有HEADER LINE的内表中的所有记录。nFREE .n 它表示释放内表所占有的内存空间,n 在执行了REFRESH和CLEAR指令之后(zhhu)使用。第30页/共32页第三十页,共33页。创建建(chungjin)和和处理理内内表表取表的属性取表的属性(shxng) DESCRIBE(shxng) DESCRIBEn

24、DESCRIBE TABLE itab LINES line OCCURS n KIND knd.n取得内表的属性取得内表的属性(shxng) line是内表的行数是内表的行数 n是最初的分配值是最初的分配值 knd是内表种类是内表种类nT为标准表为标准表 S为排序表为排序表 H为哈希表为哈希表排序排序 SORTSORTnSORT itab ASCENDING/DESCENDING BY f1 f2n根据指定字段 升序降序排序第31页/共32页第三十一页,共33页。谢谢大家(dji)观赏!第32页/共32页第三十二页,共33页。内容(nirng)总结结构、工作区、内表。内表类型标准表。内表类型排序表。内表类型哈希表。内表的重要概念逻辑索引。可以用UNIQUE|NON-UNIQUE来决定内表中具有相同关键字的数据记录是否可以重复出现。隐式工作区表头行(Header Line)。表示把ITAB1中的所有记录追加到ITAB2中。谢谢大家(dji)观赏第三十三页,共33页。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号