检查内部表中的重复值

时间:2018-08-02 00:43:16

标签: sap abap

如何检查“表格#列”中的重复值。

enter image description here

我想稍后将其突出显示为重复记录。

  LOOP AT ZVBELNEXTTAB WHERE werks IN werks.

ZVBELNEXTTAB_COPY-WERKS        = ZVBELNEXTTAB-WERKS.
ZVBELNEXTTAB_COPY-MANDT        = ZVBELNEXTTAB-MANDT.
ZVBELNEXTTAB_COPY-BUKRS        = ZVBELNEXTTAB-BUKRS.
ZVBELNEXTTAB_COPY-VBELN        = ZVBELNEXTTAB-VBELN.
ZVBELNEXTTAB_COPY-EVBELN       = ZVBELNEXTTAB-EVBELN.
ZVBELNEXTTAB_COPY-FKDAT        = ZVBELNEXTTAB-FKDAT.
ZVBELNEXTTAB_COPY-VBLSTAT      = ZVBELNEXTTAB-VBLSTAT.
ZVBELNEXTTAB_COPY-ZPRN         = ZVBELNEXTTAB-ZPRN.
ZVBELNEXTTAB_COPY-UNAME        = ZVBELNEXTTAB-UNAME.
ZVBELNEXTTAB_COPY-TYPE         = ZVBELNEXTTAB-TYPE.



curr = ZVBELNEXTTAB-EVBELN.
lv_tab = SY-TABIX + 1.
READ TABLE ZVBELNEXTTAB INDEX lv_tab.
next = ZVBELNEXTTAB-EVBELN.

IF curr GT next.
  a = curr - next.
ELSE.
  a = next - curr.
ENDIF.

IF a GT 1.
  curr = curr + 1.
  next = next - 1.

  ZVBELNEXTTAB_COPY-MISSINGFROM   = curr.
  ZVBELNEXTTAB_COPY-MISSINGTO     = next.
ELSE.
  ZVBELNEXTTAB_COPY-MISSINGFROM   = ''.
  ZVBELNEXTTAB_COPY-MISSINGTO     = ''.
ENDIF.



APPEND ZVBELNEXTTAB_COPY.
SORT ZVBELNEXTTAB_COPY BY EVBELN.


ENDLOOP.

ENDFORM.

我仍然尝试通过循环使用一维数组来检查重复的表格#。

1 个答案:

答案 0 :(得分:1)

在循环过程中使用GROUP BY功能。您想根据比较字段公司代码,工厂,表格编号,销售文档,开票日期,用户名提取重复项。

所以您应该写这样的东西:

TYPES tt_vbeln TYPE STANDARD TABLE OF vbeln WITH DEFAULT KEY. 

DATA duplicates TYPE tt_vbeln. 
LOOP AT ZVBELNEXTTAB INTO DATA(zvbeln) 
GROUP BY ( BUKRS = zvbeln-BUKRS
           WERKS = zvbeln-WERKS
           VBELN = zvbeln-VBELN
           EVBELN = zvbeln-EVBELN
           FKDAT = zvbeln-FKDAT
           UNAME = zvbeln-UNAME
           size = GROUP SIZE ) 
ASCENDING REFERENCE INTO DATA(group_ref). 

CHECK group_ref->*-size > 1. "extracting dups
duplicates = VALUE tt_vbeln( BASE duplicates FOR <form_num> IN GROUP group_ref ( <form_num> ) ). 
* setting color 
MODIFY duplicates FROM VALUE tt_vbeln( line_color = 'C410' ) TRANSPORTING line_color WHERE line_color IS INITIAL. 
ENDLOOP.

这使您可以像这样提取重复值的集合

enter image description here

顺便说一句,在上面的蓝色数据集示例行中,表单#用户名字段有所不同,因此我的GROUP片段实际上不适用于它们。您应该相应地调整分组字段,例如,仅将VBELN字段保留为分组字段。

事先,应在结构中添加字段line_color,在其中放置重复数据集的颜色代码。

ALV is situated here有条件着色的好样本。