LOOP内表中使用AT.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
LOOP内表中使用AT

概述在写abap 的过程中,可能需要统计,求和等。那么如何实现呢?其实在loop ... endloop 中间,有个AT LEVEL,…,ENDAT循环. 其中的LEVEL包括: FRIST, LAST, NEW , END OF.这些可以用来进行内表中按某个字段进行分组统计. FIRST 内表的第一行LAST 内表的最后一行NEW f 行组的开头,与字段 f 和 f 右边字段中的内容相同END Of f 行组的结尾,与字段 f 和 f 右边字段中的内容相同AT - ENDAT 块中的语句块使用这些行条件代表预定义的控制结构。用户可以使用它们处理内表中的控制断点,而不必使用编程分支和循环中所述的控制语句自己编程。在 AT - ENDAT 语句块中,工作区域没有用当前表格行进行填充。初始化所有不是标准关键字部件的字段(参见标识表格行)。对于行条件FIRST 和 LAST,系统用星号 (*) 改写所有标准关键字段。对于行条件 NEW f 和 END OF f,系统用星号 (*) 改写所有出现在工作区域中指定字段 f 右边的标准关键字段。用户可根据自己的需求在 AT - ENDAT 语句块中填充工作区域。DATA:?BEGIN?OF?LINE,col0?TYPE?c,COL1?TYPE?C,COL2?TYPE?I,COL3?TYPE?I,END?OF?LINE.FIELD-SYMBOLS:fs_line?like?line.DATA?ITAB?LIKE?LINE?OCCURS?10.LINE-COL0?=?E.LINE-COL1?=?A.LINE-COL2?=?1.LINE-COL3?=??2.APPEND?LINE?TO?ITAB.LINE-COL0?=?C.LINE-COL1?=?A.LINE-COL2?=?1.LINE-COL3?=??2.DO?2?TIMES.??LINE-COL2?=?SY-INDEX.??LINE-COL3?=?SY-INDEX?**?2.??APPEND?LINE?TO?ITAB.ENDDO.LINE-COL0?=?D.LINE-COL1?=?B.DO?3?TIMES.??LINE-COL2?=?2?*?SY-INDEX.??LINE-COL3?=?(?2?*?SY-INDEX?)?**?2.??APPEND?LINE?TO?ITAB.ENDDO.1、AT New事件触发说明如 AT New f. f 是内表的一个字段,当f字段或者f字段左边的字段内容发生变化是该事件后面的语句都会执行。?AT New 发生时工作区的字段的值:该字段的右侧字段会被初始化,字符型初始化为*,其他类型初始化为初始值。NOTE:若是使用Field symbols则不会被初始化。WRITE:/?使用工作区.LOOP?AT?ITAB?INTO?line.?ASSIGNING?fs_line?.??AT?NEW??COL1.????WRITE:?/?LINE-COL0,LINE-COL1,?LINE-COL2,?LINE-COL3.??ENDAT.ENDLOOP.SKIP?3.WRITE:/?使用字段符号.LOOP?AT?ITAB??ASSIGNING?fs_line?.??AT?NEW??COL1.????WRITE:?/?fs_line-COL0,fs_line-COL1,?fs_line-COL2,?fs_line-COL3.??ENDAT.ENDLOOP.运行结果:使用工作区E A 0 0C A 0 0D B 0 0使用字段符号E A 1 2C A 1 1D B 2 42、AT END OF如 AT END f. f 是内表的一个字段,当f字段或者f字段左边的字段内容发生变化是该事件后面的语句都会执行。?使用本工作区即可输出求和结果。在这个事件区域内可以使用SUM求和。WRITE:/?使用工作区.LOOP?AT?ITAB?INTO?line.?ASSIGNING?fs_line?.??WRITE:?/?LINE-COL0,LINE-COL1,?LINE-COL2,?LINE-COL3.??AT?END?OF?COL1.????SUM.????????????????????????????????????????????????????按Col1?求和.????ULINE.????WRITE:?/?LINE-COL0,LINE-COL1,?LINE-COL2,?LINE-COL3.????SKIP.?

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档