abap 如何高效获取内表重复数据?

你好,之前你问的abap如何高效获取内表重复数据?后来你说用atnew/endat.请问怎么用,能给段示例代码吗?... 你好,之前你问的abap 如何高效获取内表重复数据? 后来你说用at new/endat.请问怎么用,能给段示例代码吗? 展开
 我来答
one_in_zero
2014-01-03 · TA获得超过1019个赞
知道小有建树答主
回答量:383
采纳率:60%
帮助的人:152万
展开全部

AT NEW field是当内表中连续出现不同的field或之前的字段时,执行它与ENDAT之间的语句。一般使用之前需要以字段field及之前的字段为key对内表进行排序。这句话可能很抽象,下面举个例子来说明。

例:

DATA: BEGIN OF wa,

               col01 TYPE char10,

               col02 TYPE char10,

               col03 TYPE char10,

            END OF wa,

            itab LIKE TABLE OF wa.

*  省略初始化内表itab

SORT itab by col01 col02.

LOOP AT itab into wa.

     AT NEW col02.

* 当wa-col01不等于上一条数据的col01的值或者wa-col02不等于上一条数据的col01的值的时候执行

*       由于执行语句AT NEW之后,工作区中类型为char的字段值会变成*,所以在AT NEW之后需要重新读取该条数据

         READ TABLE itab INTO wa INDEX sy-tabix.

 *      省略其它语句

     ENDAT.

ENDLOOP.

如果排序后内表itab中的数据为上图中的数据,则当序号为1、4、8、10时会执行AT NEW和ENDAT之间的语句。

1柳梦狂1
2014-01-03 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:250
采纳率:0%
帮助的人:63.2万
展开全部
F1的帮助就有啊。

LOOP AT itab. [AT NEW comp1. ... ENDAT. AT END OF comp1. ... ENDAT.]ENDLOOP.
追问
我知道语法,我是想问用他怎样把所有重复数据都取出来例如有两条重复数据,怎么两条都取出来?
追答
loop at itab.
at new comp1.
i = 0.
endat.

i = i + 1.

at end of comp1.
if i ne 1.
数据重复
endif.
endat.
endloop.
来自:求助得到的回答
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式