PDA

Ver la Versión Completa : Comparacion de registros consecutivos


Alfredosite
08/09/08, 20:32:50
HOla amigos espero me puedna ayudar, tengo el siguiente caso tal vez exista una función que se encargue de comparar el valor de registro con el siguiente registro consecutivo de una tabla.

Lo que necesito es calcular los dias que por ejemplo un trabajador no tuvo contrato, paso a graficar el caso (IT16).

Begda Endda Tip_con Duracion
1 01.01.2001 31.01.2001 A 31
2 01.02.2001 28.02.2001 A 28
3 01.03.2001 31.03.2001 B 31
4 01.05.2001 31.05.2001 B 31
5 01.06.2001 31.07.2001 B 61

Como pueden ver tengo contratos (por asi decir) que duran una cantidad de tiempo por ejemplo mis registros 1 y 2 son consecutivos enero y febrero
es decir mi endda del 1er registro 31.01.2001 + 1 es igual al begda de 2do registro 01.02.2001..
Es decir quiero sersiorarme que el otro contrato empieze imediatamente al dia siguiente de haber terminado el otro.

Y detectar que los meses o tiempo que estaba sin contrato en este caso de mi ejemplo seria entre 3er y 4to registro (todo ABRIL).

En conclusion quiero comparar mi endda de un registro y compararlo con el segundo registro, que cumpla con la condicion de que el endda del 1 registro + 1dia debe ser el endda del registro consecutivo....se puedo encontrar la diferencias de dias con la funcion HR_HK_DIFF_BT_2_DATES, pero nose me ocurre como comparar los registros consecutivos espero me disculpen la pregunta

Espero me puedan ayudar con esto ...muchas gracias:cool:

Alfredosite
08/09/08, 21:12:08
Bueno ya encontre una forma de controlarlo. hice esto...

DATA: v_begda LIKE sy-datum,
v_endda LIKE sy-datum,
n_consec TYPE i VALUE 1.

SORT p0016 BY endda ASCENDING.
LOOP AT p0016 WHERE pernr EQ pernr-pernr.
v_endda = p0016-endda + 1.
n_consec = n_consec + 1 .

READ TABLE p0016 INDEX n_consec.
v_begda = p0016-begda.
CLEAR p0016.
IF v_begda EQ v_endda.
Uso rutinas necesarias para la cantidad de dias entre als fechas
ENDIF.

ENDLOOP.

Muchas gracias cualquier otro aporte bienvenido

DavidXD_XD
08/09/08, 23:26:34
Hola Alfredo ^^, a mi tbm me paso ese caso he hice lo mismo, cree un contador y le aumente en una unidad y relei la misma tabla al cual le hacia el LOOP ... :p