lunes, 23 de diciembre de 2013

TABLAS Y CAMPOS DEFINIDOS POR EL USUARIO


Sé que prometí continuar con el módulo de gestión en esta publicación, pero decidí publicar un documento  que ya había realizado hace algún tiempo y que explica el funcionamiento de los campos y tablas definidos por el usuario.

Cuando hablamos de campos y tablas definidos por el usuario, hacemos referencia a la posibilidad que nos brinda SAP de personalizar de alguna manera la estructura de los formularios con el fin que podamos agregar información adicional a la que permite la base de datos estándar y que son necesarios para las empresas. ES importante aclarar que para realizar estos cambios es necesario que ningún usuario esté realizando operaciones en SAP ya que puede perder los cambios al actualizarse la base de datos.

Tablas

Para crear una tabla debemos ir al menú superior, Herramientas/herramientas personalización/Tablas definidas por el usuario.

Se abrirá una ventana donde debemos ingresar el nombre que tendrá la tabla que no puede exceder los 19 caracteres  y su descripción no mayor a 30. Se recomienda que el nombre sea corto pero entendible a la hora de usar la tabla en la construcción de consultas SQL. Por último se define el tipo de objeto que será la tabla: datos maestros, filas de datos maestros, documento o filas de documento.

Una vez es creada la tabla, por defecto tendrá dos campos, Code y Name. El dato del primer campo se podrá ingresar solo una vez y ya no podrá modificarse, esto con el fin de crear una llave primaria. Posteriormente se podrán definir más columnas para almacenar la información que requiera. A continuación describiré el procedimiento para crear campos, ya sea en una tabla de usuario o dentro las que son estándar de la base de datos.

Campos

Para crear un campo seguimos la misma ruta que con las tablas, Herramientas/Herramientas de personalización pero la opción campos definidos por el usuario.

Al seleccionar, nos aparecerá una ventana que organiza por categorías los diferentes formularios donde podremos agregar un campo, además del lugar donde deseamos hacerlo, su encabezado, el detalle o diferentes opciones dependiendo del documento.

Para explicar su creación y configuración tomaremos como ejemplo una de las opciones de datos maestros como son los socios de negocio, que por su estructura permite agregar campos asociados directamente al socio de negocio, a las personas de contacto o las direcciones que se le definan al mismo. Suponemos que vamos a hacerlo usando la primera opción, entonces debemos pararnos sobre ella, automáticamente se sombreará de color amarillo y se habilitará la opción crear en la parte superior. También podemos ver lo campos creados anteriormente dando clic en la flecha junto al enunciado de la opción.

Al dar clic en el botón crear, nos abrirá la siguiente ventana:


A continuación explico a que hace referencia cada campo y check dentro de la ventana.

- Título: Es el nombre que tendrá el campo en la base de datos. Se recomiendan nombres cortos y no se permiten espacios.

- Descripción: Será el nombre que se le mostrará al usuario para identificar el campo.

-Tipo: Como su nombre lo indica, define qué tipo de dato almacenará el campo. Estos datos podrán ser:

- Alfanumérico: Permite almacenar caracteres alfabéticos y numéricos.

- Numérico: Almacena datos numéricos. Es usado para campos que realizarán operaciones en informes.

- Fecha/Hora. Como su nombre indica almacena datos ya sea indicando una fecha o una hora.

- Unidades y totales: Este tipo de campo es de gran ayuda también para realizar operaciones, además cuenta con subtipos de campo que permite usarlo de una forma optimizada, dichos subtipos son:

o   Tarifa
o   Importe
o   Precio
o   Cantidad
o   Porcentaje
o   Medidas

- General: Permite almacenar Imágenes o enlace.

- Dependiendo del tipo de campo que definamos se habilitarán las cajas inferiores o el espacio para definir la longitud que tendrá el mismo. Si escogemos un campo alfanumérico podremos ver la funcionalidad de estas opciones.

- Fijar valores válidos para campo: Permite generar una lista desplegable, donde daremos un código y una descripción a cada opción.

- Fijar valor estándar para campo: Permite ingresar un valor que tendrá por defecto al campo.

- Campo Obligatorio: SAP no permitirá que se guarden los cambios hasta que el campo tenga un valor.

- Fijar tabla vinculada: Así como podemos crear una lista para el campo, también podemos asociar una tabla ya creada con el fin de no duplicar información.

Una vez configuremos el campo según nuestras necesidades, el usuario tendrá el campo disponible la próxima vez que ingrese.

Espero está publicación sea de gran ayuda.

Saludos!!


 "Hay una fuerza motriz más poderosa que el vapor, la electricidad y la energía atómica: La voluntad humana" Albert Einstein



25 comentarios:

  1. Hola, Una vez creada la Tabla, ¿como puedo añadir más columnas?
    Gracias.

    ResponderEliminar
    Respuestas
    1. Las tablas se crean automáticamente con dos campos Code y Name, para agregar más columnas debes ir por herramientas, Herramientas personalización y Campos definidos por usuario. Allí buscas la opción Tablas de usuario y posteriormente el nombre que le diste a la que creaste, allí podrás crear cuantos campos requieras.

      Si tienes alguna otra inquietud no dudes en escribir

      Saludos y gracias por visitar el blog

      Eliminar
  2. Si pongo un campo ya creado y con datos como obligatorio, ¿se sobreescribirán los registros con el valor estándar?

    ResponderEliminar
  3. Hola, al poner los valores estándar y el campo obligatorio no se modificará nada dentro de la base de datos. Cuando ingreses ya sea a la tabla u opción y quieras actualizar el registro no te dejará guardar hasta que se ponga en el campo uno de los valores permitidos.

    Espero mi respuesta haya sido de ayuda.

    Jonathan R

    ResponderEliminar
  4. Buenas amigo una consulta, en una tabla definida como puedo ordenar cualquier columna, puedo agregar filtros, gracias por tu respuesta

    ResponderEliminar
    Respuestas
    1. Hola,las tablas como tal son planas por lo que no se pueden crear filtros u ordenar. Para esto te aconsejo generar una consulta a la tabladentro del query manager y desde esta opción SAP si permite ordenar por cualquiera de las columnas.

      Espero sea de ayuda mi comentario

      Eliminar
    2. Gracias Jonathan R, buena.

      Eliminar
  5. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  6. Buenos días.

    Mi inquietud es como poder validar los datos que se introducen en una tabla de usuario, como el código del socio de negocio, que exista en la tabla de socios de negocios.

    ResponderEliminar
    Respuestas
    1. Hola, se podría hacer por el transaction notification una sentencia que valide el dato ingresado con la tabla del maestro, para tu ejemplo el código del SN. En caso que no exista te arrojará un error.

      Si necesitas más ayuda me comentas, saludos.

      Jonathan Ramírez

      Eliminar
  7. como creo campo de usuario en un pedido de compras no me deja ver esa opcion

    ResponderEliminar
    Respuestas
    1. Hola Germán,

      Un pedido de compra es considerado un documento de marketing. El campo será creado para todos los documentos que sean considerados de este tipo.

      Cualquier otra duda que tengas con gusto estaré por aquí

      Jonathan Ramírez

      Eliminar
  8. Que tal, disculpa puedo modificar la longitud de un campo creado por sap lo quiero agrandar de varchar(8) a (25) es un campo de referencia

    ResponderEliminar
    Respuestas
    1. Hola, que tal...

      Esto no es posible sin arriesgar la integridad de la base de datos ya que se hace por SQL. En mi concepto lo mejor es buscar usar otro campo para guardar la información que requieres o crear un campo de usuario.

      En mi opinión, cambiar la estructura de la base de datos no es recomendable.

      Saludos!

      Eliminar
  9. Hola, cree una tabla y un campo, pero en dicho campo yo quiero agregar una imagen, coloque tipo general, estructura imagen y en validacion ninguna, coloco la imagen pero no me sale nada. Como hago para cundo un usuario solicite una autorizcion de un documento y el que autorice la autorice valga la redundancia, este documento llegue con su firma que yo le agregue en este campo definido.

    ResponderEliminar
  10. Hola, soy nuevo en SAP B1 y quisiera saber la forma de hacer un filtrado por fechas de una tabla definida por el usuario. De antemano muchas gracias y saludos.

    ResponderEliminar
    Respuestas
    1. Hola, perdón por la respuesta tardía. La única forma de filtrar es realizando un select a través del query manager, ya que la tabla de usuario como cualquier otra tabla de una base de datos no es posible filtrarse directamente.

      Saludos,

      Jonathan Ramírez

      Eliminar
  11. Hola tengo un problema, resulta que el año pasado se creo un campo definido por usuario con las siguientes característica;
    Ubicacion - Ducumento de Marketing
    Titulo - OCNUM
    Descripcion - Orden de Compra Numero / CV
    Tipo - Numérico
    Largo - 11
    Validación - Ninguno
    Pero ahora necesitan que ese mismo campo sea Tipo alfanumérico y no numérico.
    Me mencionaron en otro lugar que lo podía hacer con Data Transfer , pero no se como hacer esta tarea, alguien me podría ayudar con este tema.

    ResponderEliminar
    Respuestas
    1. Hola Gerardo,

      Data Transfer lo que te hace es cargar masivamente información por lo que no veo la relación con lo que necesitas.

      Nunca he realizado esto pero el tipo de dato se puede cambiar dentro de una base de datos a través de un alter table. Como es en documentos de marketing debes primero validar que efecto tiene cambiarlo en sólo una de ellas (ORDR por ejemplo), ya que este se relaciona con varias tablas a la vez.

      Realiza esto en una base de datos de prueba aunque en realidad lo que yo haría es crear uno nuevo, pasar la información a través de un insert y desactivar el campo anterior.

      Saludos

      Jonathan Ramírez

      Eliminar
  12. Hola Jonathan

    Yo cree una tabla de usuario siguiendo tus pasos, pero cuando quiero agregarle registros a la tabla me envia un error: Error failed when converting the nvarchar value '-3@SPO' to data type int, tienes idea de como corregirlo? no tengo busquedas formuladas para esta tabla

    ResponderEliminar
    Respuestas
    1. Hola Jonathan, ya pude resolver el tema, dejo la solución por si a alguien le sucede lo mismo

      Hola

      Este sintoma lo he visto con anterioridad, la nota de SAP 1298609 lo describe y la solución que da es

      Cambiar el código que tengas en tu Transaction como se muestra a continuación,

      DO NOT USE: If @object_type = 1

      USE: If @object_type = '1'

      Si cambias esto, el sistema ya no te marcara el error al tratar de actualizar tu tabla de usuario.

      Te sugiero revises la nota

      Recibe un Saludo

      Yen
      https://archive.sap.com/discussions/thread/1690690

      Eliminar
  13. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  14. Buen día, Espero puedas responderme y ayudarme con una gran duda que tengo, yo no he trabajado mucho con SAP pero tengo una duda con respecto a algo. Estoy leyendo en comentarios más arriba que modificar la longitud de un campo en SAP no es recomendable, perfecto eso lo entiendo. Ahora bien en la empresa en la que trabajo tenemos un problema que al cargar los pedidos de materiales solo me permiten montos que no exedan de 999.999,99 y actualmente los montos que manejamos en los pedidos con los proveedores supera por mucho esa cantidad creandome un problema a la hora de montar los pedidos. Ahora bien, mi pregunta es ¿Puedo crear un campo definido por el usuario que me maneje ese nuevo monto y que de alguna forma se refleje en todo el sistema? es decir, si modifico el monto que se vea en todos los modulos, entendiendo que de ser posible yo tengo que configurar a mano cada uno de los modulos para que ahora trabajen con esos datos. Muy importante tambien acotar que en la empresa esta trabajando con SAP 5.0 y base de datos MaxDB, si hay alguna forma de resolver esto me encantaría saberla, de antemano gracias por la ayuda

    ResponderEliminar
  15. Hola, soy nuevo en SAP B1 y quisiera saber la forma de hacer un filtrado por fechas de una tabla definida por el usuario. De antemano muchas gracias y saludos.

    ResponderEliminar
  16. Muy buen día Jonathan. Te comento que realicé la creación de una tabla de usuarios que contiene datos de mis operadores de transporte, y la misma contiene en el código su ID de identificación personal, nombre, número de licencia, y otros datos importantes de la unidad de la cual es responsable. Luego, en la sección de entregas, he creado algunos campos de usuario, donde se solicita que elijan el operador que llevará el material, obviamente, estos campos de usuario los ligo a mi tabla generada anteriormente, el detalle que tengo, es que el primer campo obtiene su ID, que es correcto, pero no encuentro la forma de dar la instrucción con una consulta personalizada al segundo campo o subsecuentes para que me traiga la información de su licencia de conducir, placas de la unidad, etcétera. Y adicional que en la tabla de entregas, donde se adicionan esos campos me grabe la información no solo del ID, sino de la licencia, placas,. etcétera. ¿me puedes dar alguna recomendación por favor?
    Mil gracias.

    ResponderEliminar