2022年abap学习视频 .pdf
《2022年abap学习视频 .pdf》由会员分享,可在线阅读,更多相关《2022年abap学习视频 .pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程目标:(1)理解什么是内表(2)内表如何定义(3)如何定义和使用工作区(4)如何处理内表中的单个记录、记录集一、什么是内表(大家看 abap入门.pdf 应该有了一定的认识)内表与结构体基本相似,它同样是程序运行中被临时创建的一个存储空间,是一个可以含多条记录的数据表。内表是一种数据对象,可以在该表中于运行时存储多个相同的结构化数据记录(表变量)。数据记录的数量仅由特定系统安装的容量所限制。ABAP 运行时系统会动态管理内部表的大小,也就是说,开发人员不必进行任何内存管理操作。下列几个属性完全描述了一个内表行类型:行类型描述了表行的结构,一般使用一个结构来定义行类型,不过实际上可以用任何类
2、型。键:内表的键由若干个指定顺序的键字段组成,内表就会根据几个键字段的先后顺序自动排序。根据访问类型,键可以分为唯一的和不唯一的,唯一的意味着表中的键字段的值组合在内表中只能出现一次。表类型:有三种不同的表类型,标准表、排序表和哈希表(散列表),根据使用的访问类型,可以使用相应的表定义以获得更好的性能。内表中的各数据集称为表行 或 表项。出于这个原因,行中的各组件称为内表的字段 或列。内部表的 行类型 可通过任意数据类型进行指定,并可描述表项的行结构。因此,内部表是一种以结构化方式处理大型数据集的简单方法。典型用途包括:(1)保留数据数据库表或序列文件的数据进行后续处理(2)进行数据格式化,用
3、以屏幕或打印机输出(如:排序)(3)进行数据格式化,用以使用其它服务(例如:用于方法、函数模块或子例程调用)内表有 3 中类型:(1)标准表:standard(2)排序表:sorted(3)哈希表(散列表):Hashed 根据不同的访问类型,应选用不同的内表类型。标准表:以内部方式维护行编号(索引),可进行索引访问和关键字访问如果大多使用索引访问内部表则应选择标准表。排序表:数据记录会自动以关键值升序进行排序,此处同样以内部方式维护索引。可进行索引访问和关键字访问。如果通常借用关键字访问内表或希望表按关键字进行自动排序,则应选择排序表。哈希表(散列表):使用散列程序管理数据记录,用以快速进行关
4、键字访问。此处需要使用唯一值。针对散列表,只可进行关键字访问。如果内表很大并且只希望通过关键字进行访问,就应该选择此散列表。如下图所示:名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 12 页 -也就是说,排序表和标准表都可以进行索引访问和关键字访问,其中,排序表主要是进行索引访问,标准表主要是进行关键字访问;但是,哈希表只能进行关键字访问,不能进行索引访问。二、内表的定义【在程序中慢慢理解吧】内表定义方式一:独立定义。如下图所示,在程序中先定义局部结构类型,然后通过DATA 关键字定义内表。优点:可采用任意结构类型实施内部表,而不必参考现有数字字典中的类型。内表定义方式二:da
5、ta gt_itab type 例子:BC430_zh.pdf 第 33 页内表定义方式三:standard data gt_itab type sorted table of with.key hashed 内表定义方式四:data gt_itab type table of.这种方式是定义的是包含非唯一关键字的标准表,是一个缩写形式。也就是说,在没有明确通过type 指定表类型的时候,缺省默认为标准表。【这些在后面的程序中有例子,大家也可以自己写例子进行测试学习】通过关键字DATA 对内表进行创建,内表的定义可以直接参考结构体、参考其它内表、参考透明表、直接调用字段。三、内表单一记录的操作
6、:APPEND、INSERT、READ TABLE、MODIFY、DELETE、COLLECT 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 12 页 -(1)APPEND:追加行,将结构内容附加到内部表【只有标准表才能进行本操作】APPEND to 【在本文档中的程序ZABAPLEAN4_2中有使用方式】(2)INSERT:在指定的内表行位置插入行Insert into table 【在本文档中的程序ZABAPLEAN4_2中有使用方式】(3)READ TABLE:读取内表指定位置的行READ TABLE itab INDEX n INTO wa。从索引表(标准表和排序表统称
7、索引表)中读一个表行。(4)MODIFY:利 用 工 作 区 中 的 内 容,修 改 内 表 中 的 数 据【在 本 文 档 中 的 程 序ZABAPLEAN4_4.中有使用方式】(5)DELETE:删除内表中数据完全相同的行,只保留一行:delete duplicates from itab2 comparing /comparing all fields(6)COLLECT:将结构内容累计到拥有相通关键字的内表的表行中。在这个过程中,添加的只是非关键字字段。因此,此语句仅可以用于非关键字字段均为数值的表,并且该内表必须具有扁平结构。REPORT ZABAPLEAN4_6.DATA:BEGI
8、N OF ITAB OCCURS 3,COL1(3)TYPE C,COL2 TYPE I,END OF ITAB.ITAB-COL1=ABC.ITAB-COL2=10.COLLECT ITAB.ITAB-COL1=XYZ.ITAB-COL2=20.COLLECT ITAB.ITAB-COL1=ABC.ITAB-COL2=80.COLLECT ITAB.loopat itab.write:/ITAB-COL2.endloop.输出结果为:名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 12 页 -四、内表-处理记录集:LOOP AT ENDLOOP、DELETE、INSERT、AP
9、PEND(1)LOOP AT .ENDLOOP.LOOP AT INTO .LOOP 语句一条一条的读出内表的数据行,写入INTO 字句指定的结构中,结构的内容可用于输出,或者修改后写回内表。在LOOP 语句块中,系统字段sy-tabix 指示了当前循环到内表的哪一行。注意:想修改内表的某一行只能先把那行读到工作区,修改工作区后再写回内表,而不能以数组的方法访问到内表的指定一行,这是跟其他语言很不一样的地方。(2)DELETE DELETE 删除内表中满足条件的所有行。(3)INSERT INSERT LINES OF INTO 将内表中若干行的内容复制给另一个内表。(4)APPEND APP
10、END LIENS OF TO 将内表中若干行的内容附加到另一个标准表。【在本文档中的程序ZABAPLEAN4_4.中有使用方式】五、使用索引读表(只针对索引表即排序表和标准表)(1)LOOP 中用 FROM-TO 子句可以读指定索引段的记录。(2)READ 中用 INDEX 子句可以读指定索引的一条记录。(3)六、使用条件读表(1)LOOP 中用 WHERE 子句可以读满足一定条件的记录。(2)READ 中用 WHERE TABLE KEY 子句可以读满足主键条件的记录。这些基本上在下面的程序中都有例子,没有的话,欢迎大家补足分享到群空间中。名师资料总结-精品资料欢迎下载-名师精心整理-第
11、4 页,共 12 页 -(3)七、使用SORT 语句对内表进行排序(只针对索引表即排序表和标准表)(1)标准表和排序表可以使用SORT 语句对指定字段进行排序,如果没有指定升序或者降序就默认使用升序。(2)如果使用 STABLE 子句,则排序时排序字段具有相同值的记录的顺序在排序后仍保持不变。八、内表初始化【这个要理解】(1)REFRESH:清除整个内表的内容,但是只释放部分内存,保留一些内存以备后续操作(2)CLEAR:对于没有表头的内表,跟REFRESH 一样,清除整个内表的内容;对于有表头的内表,则只初始化表头。(3)FREE:清除整个内表的内容,释放所有内存。在程序里,当内表以后不再使
12、用的时候可以使用FREE,这样能尽量多释放一些不用的内存。九、内表表头【SAP 建议舍弃内表表头,原因看本文档的说明,为了使大家能够读懂历史代码,所以在这个文档中详细介绍了,带表头的内表,大家可以参考一下。但是,在实际的开发中大多都不使用表头了】在内表的定义中,通过WITH HEDER LINE可创建含表头的内表。完成后,将自动创建工作区(表头就作为工作区),所以对工作区不必重复定义。此操作还可简化表命令的语法,因为系统会始终参考自动生成的工作区,也因此不哦那个明确指定工作区。下图是带表头的内表和不带表头的内表的不同操作方式的比较,可以发现 with header line 子句可以在定义表的
13、时候指定表头,会自动建立一个与内表同名并且具有相同结构的工作区,同时也可以简化很多内表语句。名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 12 页 -但是,新的SAP 标准建议舍弃表头,为什么建议舍弃呢?因为:(1)表头与内表同名,影响阅读(2)有表头的内表不允许使用复杂数据对象,即:不能把其它内表作为表的组件)(3)有表头的内表不允许使用ABAP 对象(面向对象的ABAP 扩展)(4)在面向对象的上下文中,只能使用不带表头的内表十、测试程序(共三个测试程序,大家自己看看,有不足的地方,欢迎在群里指出)例 1:共三个测试程序,大家自己看看,第三个程序有待大家完善REPORT Z
14、ABAPLEAN4_2.独立定义 定义局部结构类型types:beginof gty_s_type,carrid type s_carr_id,firtName type pa0002-VORNA,lastName type pa0002-NACHN,endof gty_s_type.定义带表头的内表data :gt_itab typestandardtableof gty_s_type withheaderline .往内表中写入数据gt_itab-carrid=001.gt_itab-lastName=李.gt_itab-firtName=强.append gt_itab.gt_itab-
15、carrid=002.gt_itab-lastName=王.gt_itab-firtName=凡.APPEND gt_itab.输出内表中的数据(针对带表头的内表)loopat gt_itab.write :/gt_itab-carrid,|,gt_itab-lastName,|,gt_itab-firtName.名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 12 页 -uline.ENDLOOP.定义不带表头的内表gt_itab2data :gt_itab2 typestandardtableof gty_s_type.定义工作区 gt_itab2_waDATA:gt_ita
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年abap学习视频 2022 abap 学习 视频
限制150内