关于删除内表重复字段所在行的问题

1.

首先看看下面这个表格

编码

数量

备注文本

AD10

12

Y

T

AD32

23

Y

T

BC45

34

Y

T

AF65

45

G

T

FD32

45

G

T

BC45

56

G

AF65

45

Y

BC45

33

Y

AD10

67

G

AD10

100

G

2.

现在我想删除“编码”字段重复的行,怎么办?

A

好!我先在编辑器里做一个这样的内表。

REPORT ZT.

DATA: BEGIN OF mydata OCCURS 10,

z1(4),

z2(5),

z3(1),

END OF mydata..

DATA mydata1 LIKE mydata OCCURS 0 WITH HEADER LINE.

DATA WA_DATA LIKE mydata.

MYDATA-Z1 = 'AD10'.

MYDATA-Z2 = '12'.

MYDATA-Z3 = 'Y'.

APPEND MYDATA.

MYDATA-Z1 = 'AD32'.

MYDATA-Z2 = '23'.

MYDATA-Z3 = 'Y'.

APPEND MYDATA.

MYDATA-Z1 = 'BC45'.

MYDATA-Z2 = '34'.

MYDATA-Z3 = 'Y'.

APPEND MYDATA.

MYDATA-Z1 = 'AF65'.

MYDATA-Z2 = '45'.

MYDATA-Z3 = 'Y'.

APPEND MYDATA.

MYDATA-Z1 = 'FD32'.

MYDATA-Z2 = '45'.

MYDATA-Z3 = 'Y'.

APPEND MYDATA.

MYDATA-Z1 = 'BC45'.

MYDATA-Z2 = '56'.

MYDATA-Z3 = 'G'.

APPEND MYDATA.

MYDATA-Z1 = 'AF65'.

MYDATA-Z2 = '45'.

MYDATA-Z3 = 'Y'.

APPEND MYDATA.

MYDATA-Z1 = 'BC45'.

MYDATA-Z2 = '33'.

MYDATA-Z3 = 'Y'.

APPEND MYDATA.

MYDATA-Z1 = 'AD10'.

MYDATA-Z2 = '67'.

MYDATA-Z3 = 'G'.

APPEND MYDATA.

MYDATA-Z1 = 'AD10'.

MYDATA-Z2 = '100'.

MYDATA-Z3 = 'G'.

APPEND MYDATA.

loop at mydata into WA_DATA.

write: / WA_DATA-z1,wa_data-z2,wa_data-z3.

endloop.

B.

A步骤看,Z1字段中“AD10”有3行,“BC45”字段有3行,等等。我只想留一行。首先按z1z2排序,然后执行固定语句:

delete adjacent duplicates from itab.

下面我把全部代码列出:

data x(4).

DATA: BEGIN OF mydata OCCURS 10,

z1(4),

z2(5),

z3(1),

END OF mydata..

DATA mydata1 LIKE mydata OCCURS 0 WITH HEADER LINE.

DATA WA_DATA LIKE mydata.

MYDATA-Z1 = 'AD10'.

MYDATA-Z2 = '12'.

MYDATA-Z3 = 'Y'.

APPEND MYDATA.

MYDATA-Z1 = 'AD32'.

MYDATA-Z2 = '23'.

MYDATA-Z3 = 'Y'.

APPEND MYDATA.

MYDATA-Z1 = 'BC45'.

MYDATA-Z2 = '34'.

MYDATA-Z3 = 'Y'.

APPEND MYDATA.

MYDATA-Z1 = 'AF65'.

MYDATA-Z2 = '45'.

MYDATA-Z3 = 'Y'.

APPEND MYDATA.

MYDATA-Z1 = 'FD32'.

MYDATA-Z2 = '45'.

MYDATA-Z3 = 'Y'.

APPEND MYDATA.

MYDATA-Z1 = 'BC45'.

MYDATA-Z2 = '56'.

MYDATA-Z3 = 'G'.

APPEND MYDATA.

MYDATA-Z1 = 'AF65'.

MYDATA-Z2 = '45'.

MYDATA-Z3 = 'Y'.

APPEND MYDATA.

MYDATA-Z1 = 'BC45'.

MYDATA-Z2 = '33'.

MYDATA-Z3 = 'Y'.

APPEND MYDATA.

MYDATA-Z1 = 'AD10'.

MYDATA-Z2 = '67'.

MYDATA-Z3 = 'G'.

APPEND MYDATA.

MYDATA-Z1 = 'AD10'.

MYDATA-Z2 = '100'.

MYDATA-Z3 = 'G'.

APPEND MYDATA.

sort mydata by z1 z2.

delete adjacent duplicates from mydata comparing z1.

loop at mydata into WA_DATA.

write: / WA_DATA-z1,wa_data-z2,wa_data-z3.

endloop.

C.我的另一种做法

B步骤使用了标准语句,现在我采用一段自定义代码来处理:

data x(4).

DATA: BEGIN OF mydata OCCURS 10,

z1(4),

z2(5),

z3(1),

END OF mydata..

DATA mydata1 LIKE mydata OCCURS 0 WITH HEADER LINE.

DATA WA_DATA LIKE mydata.

MYDATA-Z1 = 'AD10'.

MYDATA-Z2 = '100'.

MYDATA-Z3 = 'Y'.

APPEND MYDATA.

MYDATA-Z1 = 'AD32'.

MYDATA-Z2 = '23'.

MYDATA-Z3 = 'Y'.

APPEND MYDATA.

MYDATA-Z1 = 'BC45'.

MYDATA-Z2 = '34'.

MYDATA-Z3 = 'Y'.

APPEND MYDATA.

MYDATA-Z1 = 'AF65'.

MYDATA-Z2 = '45'.

MYDATA-Z3 = 'Y'.

APPEND MYDATA.

MYDATA-Z1 = 'FD32'.

MYDATA-Z2 = '45'.

MYDATA-Z3 = 'Y'.

APPEND MYDATA.

MYDATA-Z1 = 'BC45'.

MYDATA-Z2 = '56'.

MYDATA-Z3 = 'G'.

APPEND MYDATA.

MYDATA-Z1 = 'AF65'.

MYDATA-Z2 = '45'.

MYDATA-Z3 = 'Y'.

APPEND MYDATA.

MYDATA-Z1 = 'BC45'.

MYDATA-Z2 = '33'.

MYDATA-Z3 = 'Y'.

APPEND MYDATA.

MYDATA-Z1 = 'AD10'.

MYDATA-Z2 = '67'.

MYDATA-Z3 = 'G'.

APPEND MYDATA.

MYDATA-Z1 = 'AD10'.

MYDATA-Z2 = '100'.

MYDATA-Z3 = 'G'.

APPEND MYDATA.

sort mydata by z1 z2.

loop at mydata into WA_DATA.

if wa_data-z1 = x.

delete mydata.

endif.

x = wa_data-z1.

endloop.

loop at mydata into WA_DATA.

write: / WA_DATA-z1,wa_data-z2,wa_data-z3.

endloop.

这个结果和B步骤殊途同归的。

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24345566/viewspace-1049178/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24345566/viewspace-1049178/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值