MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   ayuda para filtrar duplicados (foro/showthread.php?t=30038)

oswaldo 11/05/09 05:16:52

ayuda para filtrar duplicados
 
1 Adjunto(s)
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..

bisonye 11/05/09 06:38:02

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

oswaldo 15/05/09 01:51:40

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.


Husos Horarios son GMT. La hora en este momento es 10:09:31.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web