¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo eliminar duplicados adyacentes de un itab en SAP ABAP: Guía completa y ejemplos

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 233 Vistas
0
Cargando...

Hola

¿Puede alguien explicarme el uso de eliminar duplicados adyacentes de un itab?

Con varias opciones, he leído la teoría pero estoy bastante confundido con el uso práctico.

Sé que usamos para eliminar la entrada duplicada de la tabla interna

¿Pero cuándo se usa después de cada declaración select? ¿O cuándo debería usarse?

Y ¿cuál es el uso de comparar todos los campos y comparar f1 f2 por ejemplo solo 2 campos que tomamos?

En tercer lugar, ¿cuándo usar la ordenación antes de usar eliminar adyacente y bajo qué condición?

¿Alguien puede aclarar profundamente el uso completo de eliminar adyacentes y las diversas opciones disponibles en él y cuándo usarlo bajo qué condiciones?

Arora

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola,

La instrucción DELETE ADJACENT DUPLICATES se utiliza para eliminar las entradas en una tabla interna.

1. La tabla debe estar ordenada (basada en fila, o en el campo f1, f2).

Si no se especifica nada basado en los campos clave, se ordena.

Si se especifican campos, solo se ordenan y eliminan las entradas.

2. La instrucción 'Comparing f1' se utiliza para eliminar entradas basadas en duplicados del campo.

Saludos

Bhupal Reddy

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Eliminar duplicados adyacentes eliminará los registros superfluos con la misma clave.

por ejemplo si la tabla tiene tres campos: campo1 campo2 campo3

y tiene registros

abc 123 def

abc 123 def

abc 123 ght

si dices

eliminar duplicados adyacentes de la tabla comparando todos los campos, entonces el resultado sería

abc 123 def

abc 123 ght

si dices

eliminar duplicados adyacentes de la tabla comparando campo1 campo2, entonces el resultado sería solo un registro

abc 123 def

Si la tabla tiene el registro

abc 123 frd

abc 123 fgr

abc 124 frd

y no deseas duplicados en campo3, entonces debes ordenarla por campo3

luego se convertiría en

abc 123 frd

abc 124 frd

abc 123 fgr

Si usas

eliminar duplicados adyacentes de la tabla comparando campo1 campo3, entonces el resultado sería solo un registro

abc 123 frd

abc 123 fgr

Saludos,

Ravi

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Mantén el cursor en la tecla DELETE en Se38.

Presiona F1 en.. Lee los detalles en la documentación de SAP.

Aprenderás más sobre las opciones y limitaciones.

DELETE ADJACENT DUPLICATES FROM itab.

Extras:

1. ... COMPARANDO f1 f2 ...

2. ... COMPARANDO TODOS LOS CAMPOS

Efecto

Elimina las entradas duplicadas adyacentes de la tabla interna itab. Si hay n entradas duplicadas en sucesión, se conserva la primera entrada y se eliminan las siguientes n-1 entradas.

Dos líneas se consideran duplicadas si sus claves son idénticas.

El código de retorno se establece de la siguiente manera:

SY-SUBRC = 0:

Se encontró al menos una duplicada y al menos una entrada fue eliminada.

SY-SUBRC = 4:

No se encontraron duplicados, no se eliminaron entradas.

Adición 1

... COMPARANDO f1 f2 ...

Efecto

Se consideran duplicadas dos líneas de la tabla interna itab si tienen contenidos idénticos en los campos f1, f2, ...

Adición 2

... COMPARANDO TODOS LOS CAMPOS

Efecto

Se consideran duplicadas dos líneas de la tabla interna si todos los contenidos de sus campos son idénticos.

Notas

La instrucción DELETE ADJACENT DUPLICATES funciona especialmente bien si has ordenado la tabla interna itab según los campos que deseas comparar al buscar duplicados. En este caso, eliminar duplicados adyacentes es lo mismo que eliminar todos los duplicados. La dirección de la ordenación es irrelevante.

Si no conoces una expresión de comparación hasta tiempo de ejecución, puedes especificarla dinámicamente como el contenido del nombre del campo en la expresión COMPARING ... (nombre) .... Si el nombre está vacío en tiempo de ejecución, la expresión de comparación se ignora. Si el nombre contiene un nombre de componente no válido, se produce un error en tiempo de ejecución.

Puedes restringir aún más las expresiones de comparación, tanto estáticas como dinámicas, especificando desplazamiento y longitud.

Nota

Rendimiento:

Al eliminar una línea de una tabla interna, se incurre en costos de mantenimiento de índices. Estos dependen del índice de la tabla. El tiempo de ejecución es independiente de la anchura de la línea de la tabla.

Eliminar una línea del medio de una tabla interna con 200 entradas generalmente requiere alrededor de 10 msn (microsegundos estandarizados).

Al eliminar un conjunto de entradas usando "DELETE itab FROM idx1 TO idx2." o "DELETE itab WHERE ...", los costos de mantenimiento de índices solo se incurren una vez. Esto significa que es considerablemente más eficiente que eliminar entradas en un bucle.

Si deseas eliminar entradas duplicadas adyacentes de una tabla interna, utiliza la variante " DELETE ADJACENT DUPLICATES FROM itab." en lugar de una construcción de bucle.

Espero que esto ayude en el futuro.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Mantén el cursor en la tecla DELETE en Se38.

Presiona F1 en... Lee los detalles en la documentación de SAP.

Aprenderás más sobre las opciones y limitaciones.

DELETE ADJACENT DUPLICATES FROM itab.

Extras:

1. ... COMPARANDO f1 f2 ...

2. ... COMPARANDO TODOS LOS CAMPOS

Efecto

Elimina las entradas duplicadas adyacentes de la tabla interna itab. Si hay n entradas duplicadas en sucesión, se conserva la primera entrada y se eliminan las siguientes n-1 entradas.

Dos líneas se consideran duplicadas si sus claves son idénticas.

El código de retorno se establece de la siguiente manera:

SY-SUBRC = 0:

Se encontró al menos una duplicada y al menos una entrada fue eliminada.

SY-SUBRC = 4:

No se encontraron duplicados, ninguna entrada fue eliminada.

Adición 1

... COMPARANDO f1 f2 ...

Efecto

Dos líneas de la tabla interna itab se consideran duplicadas si tienen contenidos idénticos en los campos f1, f2, ...

Adición 2

... COMPARANDO TODOS LOS CAMPOS

Efecto

Dos líneas de la tabla interna se consideran duplicadas si todos los contenidos de sus campos son idénticos.

Notas

La instrucción DELETE ADJACENT DUPLICATES funciona especialmente bien si has ordenado la tabla interna itab según los campos que deseas comparar al buscar duplicados. En este caso, eliminar duplicados adyacentes es lo mismo que eliminar todos los duplicados. La dirección de la ordenación es irrelevante.

Si no conoces una expresión de comparación hasta el tiempo de ejecución, puedes especificarla dinámicamente como el contenido del nombre del campo en la expresión COMPARANDO ... (nombre) .... Si el nombre está vacío en tiempo de ejecución, la expresión de comparación se ignora. Si el nombre contiene un nombre de componente no válido, se produce un error en tiempo de ejecución.

Puedes restringir aún más las expresiones de comparación, tanto estáticas como dinámicas, especificando desplazamiento y longitud.

Nota

Rendimiento:

Al eliminar una línea de una tabla interna, se incurre en costos de mantenimiento de índices. Estos dependen del índice de la tabla. El tiempo de ejecución es independiente del ancho de la línea de la tabla.

Eliminar una línea del medio de una tabla interna con 200 entradas generalmente requiere alrededor de 10 msn (microsegundos estandarizados).

Al eliminar un conjunto de entradas usando "DELETE itab FROM idx1 TO idx2." o "DELETE itab WHERE ...", los costos de mantenimiento de índices solo se incurren una vez. Esto significa que es considerablemente más eficiente que eliminar entradas en un bucle.

Si deseas eliminar entradas duplicadas adyacentes de una tabla interna, utiliza la variante "DELETE ADJACENT DUPLICATES FROM itab." en lugar de una construcción de bucle.

Espero que esto ayude en el futuro.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?