ayuda para filtrar duplicados

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • oswaldo
    Junior Member
    • jun
    • 9

    #1

    ayuda para filtrar duplicados

    HOla, estoy ordenando una tabla interna t_print_new para mostrar en un catalogo ALV que ya esta ordenado...

    LOOP AT T_PRINT WHERE LGART EQ '/151'.



    MOVE: T_PRINT-PERNR TO T_PRINT_NEW-PERNR,

    T_PRINT-ENAME TO T_PRINT_NEW-ENAME,

    T_PRINT-ICNUM TO T_PRINT_NEW-ICNUM,

    T_PRINT-LGART TO T_PRINT_NEW-CC_BASE,

    T_PRINT-LGTXT TO T_PRINT_NEW-LGTXT_1,

    T_PRINT-BETRG TO T_PRINT_NEW-BASE_IMP.



    **
    IF T_PRINT_NEW-PERNR eq WA_FIELD-SELTEXT_L.

    ELSE.

    APPEND T_PRINT_NEW.

    ENDIF.






    LOOP AT T_PRINT WHERE LGART EQ '/401'.



    MOVE: T_PRINT-PERNR TO T_PRINT_NEW-PERNR,

    T_PRINT-ENAME TO T_PRINT_NEW-ENAME,

    T_PRINT-ICNUM TO T_PRINT_NEW-ICNUM,

    T_PRINT-LGART TO T_PRINT_NEW-CC_MONTO_RET,

    T_PRINT-LGTXT TO T_PRINT_NEW-LGTXT_2,

    T_PRINT-BETRG TO T_PRINT_NEW-MONTO_RET.

    APPEND T_PRINT_NEW.



    ENDLOOP.

    ENDLOOP.

    APPEND T_PRINT_NEW.





    *respaldo para eliminar duplicados

    *delete t_print_new where base_imp eq '0'.

    *delete t_print_new where monto_ret eq '0'.



    DELETE ADJACENT DUPLICATES FROM T_PRINT_NEW COMPARING PERNR

    ENAME ICNUM CC_BASE CC_MONTO_RET LGTXT_1 LGTXT_2 BASE_IMP MONTO_RET.

    lo que me interesa es que no se dupliquen ya que el append agrega una nueva linea ..

    ejemplo de la tabla original:

    ficha - codigo - monto
    160001 /151 12
    160001 /401 10

    y yo estoy mostrando de manera ordenada en una sola linea.

    ficha - codigo1 - descripcion_codigo1 - monto1 - codigo2 - descripción_codigo2 - monto2

    el resultado esta representado en el archivo Dibujo.jpg

    -como puedo capturar el valor de la ficha para hacer el filtrado.?cual seria la mejor practica para esta situación.con el wa_ no va..

    Gracias por su ayuda..
    Archivos Adjuntos
  • bisonye
    Senior Member
    • ago
    • 635

    #2
    No te acabo de entender. Si lo que quieres hacer es que las líneas /151 y las /401 estén juntas lo que tienes que hacer en el segundo select es leer la tabla interna t_print_new y hacer un modify en lugar de un append.

    Saludos
    http://sapymas.blogspot.com/

    Comentario

    • oswaldo
      Junior Member
      • jun
      • 9

      #3
      solucionado...

      loop at t_print where lgart eq '/151'.
      move: t_print-pernr to t_print_new-pernr,
      t_print-ename to t_print_new-ename,
      t_print-icnum to t_print_new-icnum,
      t_print-lgart to t_print_new-cc_base,
      t_print-lgtxt to t_print_new-lgtxt_1,
      t_print-betrg to t_print_new-base_imp.
      endloop.

      loop at t_print where lgart eq '/401'.
      move: t_print-pernr to t_print_new-pernr,
      t_print-ename to t_print_new-ename,
      t_print-icnum to t_print_new-icnum,
      t_print-lgart to t_print_new-cc_monto_ret,
      t_print-lgtxt to t_print_new-lgtxt_2,
      t_print-betrg to t_print_new-monto_ret.

      sort t_print_new.
      delete adjacent duplicates from t_print_new comparing cc_monto_ret.
      endloop.
      append t_print_new.

      Comentario

      Trabajando...