Tengo una tabla interna donde vienen las reservas y posiciones de reservas; pero en ocasiones se repite esa combinación RSNUM-RSPOS; cuando esto sucede debo marcar el registro; algo así (ver imagen):
Como se puede ver los registros que se repiten se deben ir contando (las veces que se repite) y marcando con el numero de repetición; pero no deben ser borrados ni acumulados.
La idea final es enviar los datos en una tabla por grupo o marca a una función.
Pareciera que aplicando un ordenamiento (SORT) en la tabla interna por los campos combinados RSNUM y RSPOS y dentro de un LOOP… con ruptura de control por los campos antes mencionado, pudieses lograr el resultado esperado
Gracias, me falto decir que soy algo nuevo en ABAP…
Intente hacerlo como tu dices, pero me agrupa el registro y no me toma la cantidad; a continuación muestro el código ejemplo:
REPORT duplicates.
TYPES:
BEGIN OF ty_items_data.
TYPES:
rsnum TYPE resb-rsnum,
rspos TYPE resb-rspos,
cant TYPE i.
TYPES END OF ty_items_data.
TYPES:
BEGIN OF ty_items_data2.
TYPES:
rsnum TYPE resb-rsnum,
rspos TYPE resb-rspos,
cant TYPE i,
grupo TYPE i.
TYPES END OF ty_items_data2.
DATA: l_ti_item1 TYPE TABLE OF ty_items_data,
l_ti_item2 TYPE TABLE OF ty_items_data2.
DATA: l_es_item1 LIKE LINE OF l_ti_item1,
l_es_item2 LIKE LINE OF l_ti_item2.
DATA: l_cuenta TYPE i.
l_es_item1-rsnum = '100'.
l_es_item1-rspos = '1'.
l_es_item1-cant = 10.
APPEND l_es_item1 TO l_ti_item1.
l_es_item1-rsnum = '100'.
l_es_item1-rspos = '2'.
l_es_item1-cant = 10.
APPEND l_es_item1 TO l_ti_item1.
l_es_item1-rsnum = '100'.
l_es_item1-rspos = '3'.
l_es_item1-cant = 10.
APPEND l_es_item1 TO l_ti_item1.
l_es_item1-rsnum = '100'.
l_es_item1-rspos = '1'.
l_es_item1-cant = 20.
APPEND l_es_item1 TO l_ti_item1.
l_es_item1-rsnum = '200'.
l_es_item1-rspos = '1'.
l_es_item1-cant = 10.
APPEND l_es_item1 TO l_ti_item1.
SORT l_ti_item1 BY rsnum rspos ASCENDING.
LOOP AT l_ti_item1 INTO l_es_item1.
AT NEW rspos.
MOVE-CORRESPONDING l_es_item1 TO l_es_item2.
CLEAR l_es_item2-grupo.
ENDAT.
ADD 1 TO l_es_item2-grupo.
AT END OF rspos.
APPEND l_es_item2 TO l_ti_item2.
ENDAT.
ENDLOOP.
LOOP AT l_ti_item2 INTO l_es_item2.
WRITE:/1 l_es_item2-grupo.
WRITE: l_es_item2-rsnum.
WRITE: l_es_item2-rspos.
WRITE: l_es_item2-cant.
ENDLOOP.
Hola Guille1, estoy apenas iniciando en el mundo de los ABAPER.
Tal vez el tema lo tengamos aquí.
TYPES:
LLAVE TYPE I,
rsnum TYPE resb-rsnum,
rspos TYPE resb-rspos,
cant TYPE i.
TYPES END OF ty_items_data.
ANTES DEL SORT…
LOOP AT l_ti_item1.
CONCATENATE rsnum rspos into clave.
MODIFY l_ti_item1.
ENDLOOP.
SORT l_ti_item1 by clave.
LOOP AT l_ti_item1 INTO l_es_item1.
AT NEW clave.
MOVE-CORRESPONDING l_es_item1 TO l_es_item2.
CLEAR l_es_item2-grupo.
ENDAT.
ADD 1 TO l_es_item2-grupo.
AT END OF clave.
APPEND l_es_item2 TO l_ti_item2.
ENDAT.
ENDLOOP.