ABAP - Ciclo mantenimiento preventivo Conversión...

 
Vista:

Ciclo mantenimiento preventivo Conversión...

Publicado por sol99 (3 intervenciones) el 06/06/2006 13:15:16
HOla,

tengo un problema. A ver si me podésis ayudar.

en la transaccion de ordenes de mantenimiento IW33, nos permite
establecer ciclo de plan de mantenimiento

Si vamos a la pestaña planificación y dentro de ella hacemos
doble click sobre la caja de texto "Plan mant.prev"________,
nos aparecen unas seríe de pestañas entre las cuales está
"Ciclos de Mantenimiento preventivo. Pues bién, ahí
podemos establecer varios Ciclos.

Para un ciclo podemos decirle de cuanto es ese ciclo, la unidad, etcc
Pues bién, el ciclo ha de ser un número entero.

¿Qués es lo que me ocurre? pues que quiero desde abap intento acceder a los ciclos. Esa información SAP la guarda en la tabla T351P donde el campo ZYKZT es el ciclo,
pero la guarda en formato FLTP(cifra coma flotante) a pesar de que para el ciclo sólo se deja meter un valor entero en la transacción.

Y además no se corresponde. No sé qué clase de conversión hará
por ejemplo metí 12 para el ciclo y SAP grabó 2,419200000000000E+06 en la tabla anteriormente mencionada,T351P,campo ZYKZT

¿Cómo deshago la conversión para obtener el ciclo tal y como el usuario lo metió en la transacción IW33?

¿?

Gracias por adelantado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Ciclo mantenimiento preventivo Conversión...

Publicado por Alejandro (226 intervenciones) el 12/04/2023 01:02:09
La conversión que SAP realiza en la tabla T351P es de tipo punto flotante, por lo que necesitarás aplicar una conversión inversa para obtener el valor correcto del ciclo. Para hacerlo, puedes utilizar la función de conversión 'FLT_TO_INT', que convierte un número de punto flotante en un número entero.

En tu caso, podrías utilizar la siguiente lógica en ABAP para obtener el valor del ciclo correctamente:

1
2
3
4
5
DATA: lv_ciclo TYPE i.
 
SELECT SINGLE zyktzt FROM t351p INTO lv_ciclo WHERE ...
 
lv_ciclo = FLT_TO_INT( lv_ciclo / 10000 ). " Dividimos por 10000 para obtener el valor correcto "

Con esto, estarías dividiendo el valor almacenado en la tabla por 10,000 para obtener el valor correcto del ciclo como un número entero. Espero que te sea de ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar