• Lunes 9 de Diciembre de 2024, 11:59

Autor Tema:  Registros Duplicados  (Leído 2685 veces)

stormshadow

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Registros Duplicados
« en: Jueves 19 de Junio de 2008, 18:17 »
0
Hola gente, pues traigo esta leve duda, yo estaba creando un programa para extraer registros duplicados de una tabla, aquí abajo lo pondré, tenía otro metodo al que voy a poner pero es que el otro tardaba en sacar todos los registros, ahora me ayudaron a crear este que voy a mostrar acontinuación, pero me falta algo, bien explico, este programa extrae todos los registros duplicados del campo bstnk, que es la clave del pedido, ok pues hay otra tabla la cual contiene un campo que dice el motivo por el que se rechazó ese pedido, pues yo lo que quiero es que si por ejemplo un pedido se repite ocho veces y uno de esos tiene motivo de rechazo, excluirlo y ahora mostrar solo 7 registros repetidos, no sé si me de a entender...

Eh aquí el código

************************************************** **********************
* TABLAS
************************************************** **********************
TABLES: vbak,
vbap.
************************************************** **********************
* ESTRUCTURAS
************************************************** **********************
DATA: BEGIN OF t_pedidos OCCURS 0,
vbeln LIKE vbak-vbeln, "REFERENCIA
bstnk LIKE vbak-bstnk, "CLAVE PEDIDO
ernam LIKE vbak-ernam, "NOMBRE
audat LIKE vbak-audat, "FECHA
abgru LIKE vbap-abgru, "MOTIVO RECHAZO
END OF t_pedidos.

DATA: BEGIN OF t_clavesAux OCCURS 0,
bstnk LIKE vbak-bstnk, "CLAVE PEDIDO
Numreg TYPE i,
END OF t_clavesAux.

Data: t_claves LIKE STANDARD TABLE OF ZTSD_PEDUP,
wa_claves LIKE LINE OF t_claves.

START-OF-SELECTION.

DELETE FROM ZTSD_PEDUP.

IF sy-subrc EQ 0.

SELECT
vbak~bstnk "CLAVE DEL PEDIDO
count( * ) As Numreg
FROM vbak
INTO TABLE t_clavesAux
WHERE vbak~bstnk NE ''
GROUP BY bstnk
HAVING count( * ) GT 1.

LOOP AT t_clavesAux INTO wa_aux.

wa_claves-bstnk = wa_aux-bstnk.
wa_claves-NumReg = wa_aux-NumReg.

APPEND wa_claves TO t_claves.

ENDLOOP.

INSERT ZTSD_PEDUP FROM TABLE t_claves.

SELECT DISTINCT vbeln bstnk ernam audat
FROM vbak
INTO TABLE t_pedidos
WHERE bstnk IN ( SELECT bstnk FROM ZTSD_PEDUP ).


ENDIF.

LOOP AT t_pedidos.
  WRITE:/ t_pedidos-vbeln,
          t_pedidos-bstnk,
          t_pedidos-ernan,
          t_pedidos-audat.
ENDLOOP.

Espero me puedan ayudar, muchas gracias!!