ABAP - AT END OF 的使用

疑惑了很久的at end of 算是弄明白了……哈哈

TYPES: begin of ty_tab ,
num(3) type i,
str(3) type c,
end of ty_tab.
data: gw_tab TYPE ty_tab ,
gt_tab TYPE TABLE OF ty_tab WITH HEADER LINE.
data: gt_out TYPE TABLE OF ty_tab,
gw_out TYPE ty_tab.
gw_tab-num = 100.
gw_tab-str = ‘AAA‘.
append gw_tab to gt_tab.
gw_tab-num = 100.
gw_tab-str = ‘BBB‘.
append gw_tab to gt_tab.
gw_tab-num = 200.
gw_tab-str = ‘AAA‘.
append gw_tab to gt_tab.
gw_tab-num = 200.
gw_tab-str = ‘BBB‘.
append gw_tab to gt_tab.
gw_tab-num = 200.
gw_tab-str = ‘CCC‘.
append gw_tab to gt_tab.
CLEAR gw_tab.
sort gt_tab by num.
loop at gt_tab .
MOVE gt_tab to gw_tab.
at END OF num.
gw_out-num = gw_tab-num.
gw_out-str = gw_tab-str.
APPEND gw_out to gt_out.
endat.
CLEAR gw_tab.
endloop.
LOOP AT gt_out into gw_out.
write:/ gw_out-num,gw_out-str.
ENDLOOP.

使用AT END OF语句,主要是抓取重复字段如num为100的最后一条记录 100 BBB。

本实例定义的structure中 ,字段num在字段str前,这样在使用AT END OF语句后,内表中str会变为***。

在loop循环之前 内表gt_tab中的数据为:

100 AAA

100 BBB

200 AAA

200 BBB

200 CCC

第一次循环,内表gt_tab中的数据为 100 AAA 在执行AT END OF语句后,内表gt_tab中的数据为 100 AAA

第二次循环,内表gt_tab中的数据为 100 BBB 在执行AT END OF语句中,内表gt_tab中的数据为 100 ***,在执行AT END OF语句后,内表gt_tab中的数据为 100 BBB

第三次循环,内表gt_tab中的数据为 200 AAA 在执行AT END OF语句后,内表gt_tab中的数据为 200 AAA

第四次循环,内表gt_tab中的数据为 200 BBB 在执行AT END OF语句后,内表gt_tab中的数据为 200 BBB

第五次循环,内表gt_tab中的数据为 200 CCC 在执行AT END OF语句中,内表gt_tab中的数据为 200 ***,在执行AT END OF语句后,内表gt_tab中的数据为 200 CCC

为了得到我们想要的重复数据的最后一条,需要将内表的数据在执行AT END OF语句前,转移到另一个工作区gw_tab中保存,否则想要的数据中str均为***。

最后得到的数据为:

100 BBB

200 CCC

另外,同理 AT NEW 语句的使用 ,也是如此,本实例将AT END OF num,改为AT NEW num后,最后的结果为:

100 AAA

200 AAA

时间: 2024-11-08 02:40:20

ABAP - AT END OF 的使用的相关文章

ABAP 7.50 新特性之另一个CORRESPONDING

在ABAP中,存在着一条法则:同样的名称代表的不一定是同样的东西(具体可看最近的相关讨论). 但是如你们所知的,存在着一个很好的例外: 所有涉及到使用CORRESPONDING为结构赋值的关键字的语法形式(偶然地)有着相同的名字.. 在ABAP 7.40之前,主要有用MOVE-CORRESPONDING来复制结构组件.Open SQL的SELECT的CORRESPONDING附加字段,以及某些过时的计算语句等. 在ABAP 7.40中,MOVE-CORRESPONDING可以用于操纵带有结构的内

ABAP屏幕设计

转自 http://www.cnblogs.com/aBaoRong/archive/2012/06/05/2536591.html abap 屏幕控制 ******************** 屏幕變動 ***************************************************************AT SELECTION-SCREEN OUTPUT.  IF R1 = 'X'.    CLEAR: P_KDAUF[],           P_KDPOS[], 

ABAP实现屏幕自己刷新和跳转功能

ABAP开发工程中,有时候需要让跳转出的屏幕自动实现跳转和刷新的功能,该功能的实现需要在屏幕PBO 里面调用相应的事件执行. 关键代码为: SET TITLEBAR ' 屏幕自动程序'. IF g_contine_no IS INITIAL. CREATE OBJECT gr_timer. CREATE OBJECT gr_app_timer. SET HANDLER gr_app_timer->handle_get_brgew FOR gr_timer. "0.5S 刷新一次 gr_ti

程序间数据共享与传递:EXPORT/IMPORT、SAP/ABAP Memory

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4293544.html EXPORT 语句... 350 IMPORT语句... 353 IMPORT DIRECTORY语句... 354 DELETE FROM语句... 355 ABAP Memory(同一用户的同一窗口Session)

ABAP锁、数据库锁

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4293533.html ABAP数据锁定... 338 SM12锁查看与维护... 344 通用加锁与解锁函数... 344 ABAP程序锁定... 345 数据库锁... 347 锁的分类和兼容性... 347 并发性与锁的权衡... 34

ABAP 内表 详解

声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4293475.html 老式的内表类型定义... 214 基于基本类型内表类型... 214 基于结构体类型内表类型... 215 老式的内表对象创建... 215 参照现有内表类型或内表对象来创建... 215 参照现有结构类型或结构对象来

SAP ABAP Extensions

SAP ABAP Extensions Sometimes it is not possible to adapt the system to the customer needs only by customizing. In these cases, the system needs to be enhanced using some type of extension. These are the most common types of extensions in SAP: User E

[SAP ABAP开发技术总结]IDoc

目录导航 声明:原创作品,转载时请注明文章来自SAP师太博客,并以超链接形式标明文章原始出处,否则将追究法律责任!原文出自: 18.4.         IDoc. 206 18.4.1.     数据段类型和数据段定义(WE31)... 206 18.4.2.     IDoc定义(WE30)... 207 18.4.3.     自定义IDoc发送与接收实例... 208 18.4.3.1.           发送端800(outbound)配置... 208 1.创建segment(WE

ABAP笔记

ABAP程序开发,经常会遇到报表开发需求.使用ABAP的Report类型程序开发报表十分便利,用很少的代码就可以快速开发出一个报表.这种报表需求,抛开各种细枝末节,都可以归结为"三步走":1.选择屏幕:2.OPEN SQL:3.结果呈现.一般情况下,在编写报表之前,都是知道取数的表是哪个表的,但是,如果想要让用户输入取数的表,然后再从这个表里把所有数据都取出来,呈现在屏幕上,这样的需求,涉及到动态编程.因为报表运行前,并不知道会从哪个数据表里取数据,也就无法参照声明出用来存放数据的结构

让ABAP开发者愈加轻松的若干快捷键

引言 ABAP是一种和当代编程语言在许多方面有着相当不同的编程语言.ABAP的某些方面可能会让我们奇怪,为什么它会如此复杂?而它的某些方面又是那么杰出,给予了ABAP开发者们比其它任何语言更多的便利. 我发现有两样东西太cool了: 朴实的IDE(ABAP Editor)以及 酷炫的调试器 尽管SAP的IDE不支持某些更加有名的IDE(比如Eclipse)的一些特点,我依然发现在ABAP Editor中写代码要比其它IDE舒服太多.原因在于以下的快捷键以及它的可定制性.我会列出一些我常用的功能清