cancel
Showing results for 
Search instead for 
Did you mean: 

Leer fecha de antigüedad infotipo 0092

Former Member
0 Kudos

Buenas tardes,

Se me plantea el problema de que necesito leer la fecha de antigüedad del infotipo español 0092 (campo FINIC), pero mediante regla, es decir no puedo implementar ninguna operación con código abap.

He visto que con NUM=F, puedo acceder a fecha del infotipo 41 y calcular la duración, pero esto no se adapta del todo a mi requerimiento.

¿Tenéis alguna idea de como podría hacerse?

Gracias,

Mayte

Accepted Solutions (0)

Answers (1)

Answers (1)

antoine_foucault
Active Contributor
0 Kudos

Buenas tardes,

¿Probaste con la operación TABLE con parámetro P0092 y luego NUM=BFINIC?

TABLEP0092

NUM=BFINIC

el parámetro B es por especificar que se trata de un campo de la tabla que acabas de especificar con al operación TABLE y FINIC es el nombre del campo. Asegúrate de tener el registro relevante en la cabecera del infotipo (estructura/tabla interna P0092) al procesar la operación (entiendo que la función de nomina P0092 que se ejecuta al principio del esquema siempre coloca el registro relevante por lo que la solución que te expongo debería funcionar). Si no tienes claro los datos que están en la cabecera puedes usar la operación BRK con el valor que tienes especificado en tu parámetro de usuario AB4, algo como BRK XXX. Una vez en el debugger puedes verificar los datos que están en la cabecera del infotipo 0092 (apóyate en tu programador).

Al tratarse de una fecha (formato interno SAP de 10 caracteres con año mes y dia de la siguiente forma aaaammdd), tienes que controlar el largo del argumento de variable con la operación VALEN, y también hay que considerar el valor que recuperas... recuperaras por ejemplo "20130521" y no tengo claro lo que puedes hacer con ello. Puedes usar las operaciones VALEN y VAOFF tanto para ampliar el argumento de variable y leer una posición determinada del valor que recuperas - mucha suerte para después de esto conseguir un computo en función del valor (pues desde la regla las operaciones que harás no trataran el dato como fecha sino como simple numero, asi que si sumas meses o días tendrás un problema ) - creo que mucho te vas a complicar la vida y poco funcional será...

Alternativamente:

1. puedes reflejar esta fecha con un tipo de fecha de cliente (T548Y) en el infotipo de fechas (0041) y hacer la pregunta con el parámetro F de la operación NUM. En PA puedes hacer una medida dinámica que cambie el infotipo 0041 según cambia el 0092; y tu ventaja definitiva ahí es que puedes preguntar por días, semanas, meses o años en función de la fecha almacenada y actuar en base a la respuesta sin necesitar programación pero necesitaras en algún momento cargar esta fecha, mantenerla sin decir que se duplica el dato (poco funcional).

2. Volver a hablar con tu cliente para plantear una nueva operación (con necesidad de coding) que lee el valor de la fecha de antigüedad, la computa según tus requerimientos y te devuelva lo que necesitas para luego tratar las distintas opciones en tu regla.

Desde luego yo tiraría para la opción 2.

Good luck.

Gracias y saludos,

Antoine