on 01-26-2012 9:07 PM
Estimados todos
En mis documentos de marketing he creado un campo de usuario a nivel de encabezado de manera que en el pueda grabar la hora en que se graba el documento.
En la oferta de venta, documento inicial, no veo incovenientes la hora se graba perfectamente, sin embargo, si el usuario copia a una orden de venta el campo de usuario de hora en este documento se llena con el dato de la hora que fue fijada en la oferta de venta lo cual para mi no es correcto pues el propósito final es determinar tiempos de creación de documentos entre uno y otro.
Cómo entonces se podrá grabar la hora en que se crea el documento, por medio de una BF, en campos de usuario cuando los documentos se copian a o bien se copian de?
Agradezco su apoyo
Buenas Tardes
He leído sus comentarios, suena interesante.
Quisiera saber si existe alguna forma de ver el tiempo de captura de un documento, es decir, saber la hora en la que el usuario inicia y la hora en la que termina, mi tiempo de inicio puede ser desde que se selecciona a un cliente.
Agradezco de su apoyo
Saludos
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Se decidió usar los campos nativos de la BD de SAP para ver las horas de los documentos y, por el momento, no realizar diferencia entre los valores de horas.
Gracias a todos por sus aportes.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Estimado Rulius
Por error de procedimiento no asigne la puntuación debida pues hice el cierre del hilo desde el panel de mis preguntas, sin embargo, me parece que la ampliación en la información sobre el formato de datos y la forma en como funciona claro que merece algún puntito, como dices.
Saludos
Estimado Julio
He consultado un par de cosas en SAP y me doy cuenta que Ud. tiene amplio conocimiento de ello. Por favor me puede ayudar, ¿Cómo puedo revisar la hora de creación de un documento?. El procedimiento que realizo es consultarlo desde el "log de modificaciones" pero este solo me muestra la fecha y usuario.
Le agradezco
Ana
Hola Ana
En el log de modificaciones no figura la hora y no es posible traérsela mediante las parametrizaciones del formulario ni nada por el estilo. Pero en las tablas de cabecera de cada tipo de documento figura un campo llamado DocTime del que podrás extraer esa información. Por ejemplo si quieres conocer la hora de creación de un pedido de compras concreto, tendrás que consultar el campo DocTime de la tabla OPOR.
Un saludo
Hola Ana
Eso es debido a que el campo DocTime no es un campo de los que se visualizan en los formularios de los documentos, sino que simplemente se almacena en la tabla. OPOR es el nombre de la tabla de cabecera de los pedidos.
Si quieres consultar la hora de creación de un documento tendrás que generar una consulta contra la tabla de cabecera del documento en cuestión. Las consultas se construyen en leguaje SQL y las puedes generar a través de la siguiente ruta:
Herramientas > Consultas > Generador de consultas
Una vez ahí haz clic en "Ejecutar" y se te mostrará una pantalla de resultados de consulta, clica en el icono del lapicero y sustituye "SELECT *" que aparece por lo siguiente:
SELECT T0.DocNum, T0.DocTime FROM OPOR T0 WHERE T0.DocNum = [%0]
Haz clic en ejecutar y el sistema te mostrará una ventana de selección pidiéndote un número de pedido, introduce el pedido para el que quieras chequear la hora y haz clic en "OK".
Si quieres grabar la consulta para ejecutarla cuando tú quieras dale a botón "Grabar" y te aparecerá una ventana para que lo incluyas en una de las carpetas de consultas. Esas carpetas son accesibles desde la ruta:
Herramientas > Consultas > Consultas usuarios
Un saludo
Javier, te agradezco infinitamente el apoyo, de verdad que me ha sido de mucha ayuda.
Lo puedo ejecutar tal cual me indicas en el mensaje anterior.
Quisiera preguntarte otra cosa, ¿cual sería la consulta en lenguaje SQL para una orden de Venta?, por que entiendo que la ruta indicada me arroja el DocTime de una orden de Compra.
Por otro lado se puede hacer esta consulta para un rango de documentos?
Gracias y excelente día.
saludos!
Hola Ana
Para una orden de venta simplemente tendrías que cambiar el nombre de la tabla de pedidos (OPOR) por ORDR que es la tabla de pedidos de ventas, pues las tablas de los documentos de marketing (compras y ventas) tienen estructuras idénticas. La consulta quedaría así:
SELECT T0.DocNum, T0.DocTime FROM ORDR T0 WHERE T0.DocNum = [%0]
Si lo que quieres es que te muestre la hora de creación para un rango de documentos tienes que definir dos parámetros en vez de uno solo ( [%0] y [%1] ) indicando la claúsula IS BETWEEN antes de ellos:
SELECT T0.DocNum, T0.DocTime FROM ORDR T0 WHERE T0.DocNum IS BETWEEN [%0] AND [%1]
Un Saludo
Podrías usar una consulta formateada para lograr ese objetivo.
La idea es que tengas una consulta guardada que sea lo siguiente:
select substring(cast(getdate() as varchar(20)),11,16)
una vez guardad la consulta, configura el campo de usuario que creaste para que se vuelva un campo llenado por consulta formateada. Aquí lo ideal sería que revises en tu proceso de captura que campo siempre debe modificar tu usario y sobre ese campo configurar la consulta formateada para que cuando se modifique
selecciona el campo y da cntrlshiftF2
confura la consulta así.
Buscar en valores definidos segun consulta guardada
Actualización automática si se producen modificaciones
Ligar el cambio al campo que te comentaba, el que siempre modificque tu usuario al crear la factura
Actualizar regularmente.
Por ejemplo, yo ligué el campo donde mi usuario selecciona si se crea factura electrrónica, Eso asegura un campoq ue siempre es modificado.
Espero te sea útil
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Gracias David Manuel
Sin embargo en los documentos en los que no se debe cambiar ningún campo la BF no funcionará y es ahí donde radica el poder encontrar la solución que tome en cuanta dos aspectos:
1. Que es un documento que va de Copiar a o bien Copiar de (de documento base a destino)
2. Existe la posibilidad que el usuario no deba cambiar ninguno de los campos copiados, por lo tanto el valor del campo del documento base es el que queda.
Saludos
Porque de una vez no utilizas los campos estandar de CreateDate e CreateTime???
Si bien no estan visibles, estos existen y son exactos, a los más perderias la traza de 1 minuto. ya que el campo CreateTime guarda HH:MM (en formato militar).
Usando estos campos, no necesitas ni BF ni UDF, o TN.
slds.
Estimado Rulius
Gracias por tu aporte
en uanto a los campos que menciones puedo encontrar el campo CreateDate, sin embargo, CreateTime no.
Encontré un campo llamado DocTime pero tengo el inconveniente que es de formato Int y al momento de querer hacer una resta entre dos tiempos en minutos me hace la diferencia entre dos números enteros, por ejemplo:
si en un documento la hora de creación es 16:40 y en el siguiente 17:40 el resultado que me da es un * pues creo lo toma como número entero.
Cómo puedo encontrar ese campo CreateTime? este es de formato Time o datetime?
Agradezco tu ayuda
Saludos
Disculpa DocTime es el campo, lo que pasa es que te lo dije de memoria y en las tablas de usuario el campo se llama CreateTime
Ahora lo que dices sobre ese campo tienes toda la razon SAP B1 toma la hora como te dije en formato militar, por eso el campo es un INT pequeño (smallInt).
Pero no me cuadra que al realizar la resta entre uno y otro te de *. Pues la resta de 1740-1640=100, que es igual que decir 17:40-16:40=1:00
revisalo bien yo hice las operaciones en excel y no me dio ningun problema.
Sin embargo te dejo un link que te puede ayudar.
slds.
Ampliando el tema
hago dos pruebas con distintas formulaciones, siendo:
datediff(mi, t0.[U_Hinicio],t2.[U_HinicioOv])[HH:MM111], en donde
t0.[U_Hinicio] = 16:37
t2.[U_HinicioOv] = 17:37
Resultado = 144000
En este caso en la función datediff ingrese un datepart = minutos por lo que esperaba obtener como respuesta 60, sin embargo, el resultado es 144000
Convert(Char(4),((T2.[U_HinicioOv] - T0.[U_Hinicio] )),114)[HH:MM],
en donde
t0.[U_Hinicio] = 16:37
t2.[U_HinicioOv] = 17:37
Resultado = 100
Este otro caso entiendo que la diferencia la está tomando como bien dices antes con datos 1737 - 1637 = 100
La objeción es la siguiente:
Si ambos campos, dentro de SAP, fueron declarados como Time el resultado de la diferencia no lo debería mostrar así: 1:00
Agradezco tu enlace lo pondré en práctica
Saludos
El resultado lo estas mostrando en una consulta de usuario o un campo de usuario definido como time??
Porque cuando defines un campo de usuario de tipo TIEMPO en SB1, lo que estas haciendo en la base de datos fisica es definiendo un campo de tipo SMALLINT, no un cmapo de tipo DATETIME. Por lo tanto, al operar dos campos de tipo TIEMPO en SB1, en realidad sólo estas haciendo una operación de enteros, no de horas.
slds.
El resultado lo estoy mostrando en una consulta de usuario a traves del generador de consultas de SAP y los campos en cuestión son dos campos de usuario.
Lo que me explicas, entonces, me llevaría a la propuesta que me enviaste en el link anterior para hacer la conversión de un smallInt a datetime.
Vamos como me va con este tema pues será la primera vez que haga una función.
De nuevo gracias
Y si creas otro campo en el otro docuemento y que se ejecute la BF sólo en ese docuemnto para ese campo, así tendrías en el mismo documento la fecha de creación del primer documento en un campo y la de ese documento en otro.
Saludos,
Tere
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Solo hay un detalle o varios
en el caso de los documentos que se copian a un destino, generalmente no se cambia nada o no ser que sea necesario, lo cual es poco usual.
En este caso sobre que probable cambio podría hacer que funcione la BF pues prácticamente no hay campo que cambiar?
Lo anterior lo planteo en base a las pruebas realizadas pues he creado 4 campos de usuario con formato Fecha/hora configurando en cada formulario una BF distinta para que la del documento anterior quede únicamente como referencia.
Se me ocurre usar un Case dentro del la BF pero me pregunto cual será la condición.
gracias por la ayuda
User | Count |
---|---|
100 | |
11 | |
10 | |
6 | |
6 | |
5 | |
4 | |
4 | |
3 | |
3 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.