Vistas de actualización de tablas

domingo, 29 de mayo de 2011

EYE.jpg

En el artículo de la semana anterior veíamos cómo crear tablas de diccionario y mostré brevemente cómo podemos informar estas tablas desde un punto de vista técnico. Pero, ¿cómo puede actualizar información en una tabla un usuario final? La respuesta es a través de imágenes de actualización.

En este post vamos a tomar la tabla que creamos la semana anterior y vamos a crear un objeto que ayudará al usuario a registrar información sobre la tabla.


Definición

Una imagen o vista de actualización es una forma que SAP nos proporciona para poder introducir datos en tablas sin necesidad de entrar en el explorador de tablas ni tener que programar. No hay que olvidar que el explorador de tablas suele ser una transacción restringida para los usuarios finales. Así que necesitamos una forma simple y rápida de poder mantener la  información de tablas z a disposición de usuarios.

Pasos

Herramientas / Workbench ABAP / Desarrollo / SE11 – Dictionary ABAP

Una vez en la tabla navegamos al menú Utilidades / Generador actualiz. tabla y seguimos los siguientes pasos:
  • Grupo de autorizaciones: si decidimos que restringir el acceso según autorizaciones de usuario lo podemos asignar aquí. De lo contrario, como en este ejemplo, indicamos el grupo de autorizaciones ‘&NC&’ que significa que no estamos restringiendo el acceso a esta imagen de actualización.
  • Grupo de funciones: creamos un grupo de funciones donde SAP almacenará el código ABAP para la actualización de la tabla.
  • Tipo actualización: puede ser ‘un nivel’ si queremos actualizar registros de la tabla en masa, es decir, viendo todos los registros a la vez. En cambio, si la actualización la vamos a hacer registro a registro entonces debemos marcar ‘dos niveles’. En este ejemplo vamos a crear dos niveles.
  • Números de imagen de actualización: numeramos las pantallas resumen e individual. La pantalla resumen se asocia con el primer nivel, mientras que la imagen individual se asocia con el segundo nivel de tipo de actualización. Los números de las pantallas han de ser diferentes.
  • Pulsamos Objetos generados / Crear.

    Actualización de diálogo

Seguidamente nos pedirá hasta tres órdenes de transporte y SAP empezará a generar las vistas. Esto puede tardar unos segundos.

Al finalizar el proceso en principio no es necesario ningún paso adicional pues las imágenes SAP las ha creado automáticamente. Sin embargo, suele ser necesario realizar algún ajuste. Para ello nos vamos a Entorno / Modificación / Imágenes de actualización.
  • Seleccionamos qué imagen queremos modificar, la de resumen o la de detalle. En este caso, la de resumen.


  • SAP abre un screen painter para modificación de dynpros o pantallas. Para los que hayáis programado en ABAP, decir que ésta es exactamente la misma transacción que podríamos utilizar para hacer programación ABAP de dynpros.
  • Pulsamos el botón ‘Layout’ y modificamos la información que aparece en la pantalla. No es aconsejable modificar mucho estas pantallas, pero a lo mejor sí que nos conviene cambiar algunas descripciones de campos ya que por defecto toma la que haya en el elemento de datos y esto no siempre nos interesa. En este caso voy a cambiar las descripciones de los campos contacto y dirección por los que yo considero ‘Nombre del contacto’ y ‘Dirección del contacto’.


  • Grabo y activo la modificación.

Ejemplo

Una vez tengo creadas las vistas de actualización de mi tabla ¿cómo llamo a estas imágenes para registrar nuevos datos? La forma más rápida es utilizar la transacción SM30.

Sin embargo, no siempre queremos dar acceso a los usuarios a la transacción SM30 de forma directa. ¿Por qué? Porque a través de esta transacción se puede acceder también a las imágenes de actualización de tablas de customizing. Es mejor crear una transacción Z que llame a las imágenes de actualización. Para ello no es necesario ningún tipo de programación ABAP. Lo haremos del siguiente modo:

Herramientas / Workbench ABAP / Desarrollo / Otras herramientas / SE93 – Transacciones
  • Damos nombre (ZCONTACTOS) a nuestra transacción y pulsamos ‘Crear’.
  • Damos una descripción y seleccionamos la opción ‘Transacción con parámetros’.
  • Indicamos una transacción para la visualización de nuestra imagen, la transacción SM30. Validamos.
  • Como no queremos ver la imagen de entrada de la transacción SM30, marcamos ‘omitir imagen inicial’.
  • En valores propuesta indicamos el nombre de nuestra vista de imagen (VIEWNAME) y tipo de actualización (UPDATE).
    Vista imagen

Salida

Así es como queda nuestra vista inicial (pantalla 100) cuando llamamos a la transacción ZCONTACTOS. Fijaos la botonera estándar generada para modificar, crear y borrar registros.

Vista general

Y así cómo queda nuestra imagen de detalle (pantalla 200) cuando hacemos doble click sobre un registro individual.

Vista detalle


Imagen inicial | wheels3217

17 comentarios:

  1. Hola, que tal. Muy bueno tu manual. Ahora lo que me están requiriendo es parámetros de búsqueda. Activo la casilla de Indicar Condición (VIMDYNFLDS-LTD_DTA_AR) pero aún así no me permite seleccionar las entradas. ¿Alguna idea? Saludos

    ResponderEliminar
    Respuestas
    1. Hola Daniel. Nunca me he encontrado con el caso. Los parámetros de selección los hago yendo al menú Selección / Por contenidos.

      Eliminar
  2. Hola, que tal. Hay alguna forma de saber cuál es la transacción de vista de actualización de una tabla específica, sólo conociendo el nombre de la tabla?

    Gracias

    ResponderEliminar
    Respuestas
    1. Hola. Gracias por pasarte por aquí y comentar. Pues sí. Puedes revisar un artículo anterior que creo que te servirá de ayuda.http://www.blogdesap.com/2012/10/encontrar-transacciones-customizing.html

      Eliminar
  3. Que buen Blog, me ayudo mucho

    ResponderEliminar
  4. Buenas tardes,

    En una vista que tiene BEGDA y ENDDA que me diera la opción de limitar un registro, que genere otro con los nuevos rangos de fechas, pudiendo modificar lo que desee el usuario, tienes algún ejemplo? Slds.

    ResponderEliminar
    Respuestas
    1. Hola, no tengo ejemplos. Pero puedes utilizar la opción UPDATE_LTD = 'X' en las propuestas de campo dynpro.

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

    ResponderEliminar
    Respuestas
    1. Puedes utilizar la opción UPDATE_LTD = 'X' en las propuestas de campo dynpro.

      Eliminar
    2. Mira pasa lo siguiente, el campo begda lo puse como clave, y al generar la vista en automático pone el botón "limitar", el detalle es que efectivamente limita la entrada, pero no genera el siguiente registro con validez al 31.12.9999,

      Slds.

      Eliminar
    3. No creo que esa funcionalidad la contemple el estándar. Si quieres generar registros automáticos deberás crear un programa a medida.

      Eliminar
  6. Pregunta: hay alguna forma de lograr que no se puedan modificar los registros???

    ResponderEliminar
    Respuestas
    1. Si lo que quieres es solamente visualizar los registros, entonces utiliza el parámetro SHOW = 'X' en lugar de UPDATE = 'X'

      Eliminar
  7. hola. quiero que una vista de actualizacion me permita bajar la informacion desde el menú Sistema -->lista-->Grabar-->archivo office pero lo tengo grabado para cualquier vista. Esto se puede habilitaR? gracias!

    ResponderEliminar
  8. Hola, busco poder actualizar dos tablas Z con una misma transacción, es esto posible?
    Gracias.

    ResponderEliminar
    Respuestas
    1. Si las tablas tienen vista de actualización, entonces puedes actualizarlas mediante la transacción SM30.

      Eliminar