Close

febrero 23, 2014

Dynpros: Trabajando con el Control Tabla de ABAP Parte II

En la primera parte aprendimos a añadir un Control Tabla en nuestros dynpros, ahora veremos como usarlos para editar información de una base de datos.

Debido a que en este ejemplo vamos a trabajar con bases de datos primero vamos a crear una tabla Z que contenga un campo llamado código y otro campo llamado estado ambos del tipo de datos que usted desee. Luego debemos declarar una tabla interna en nuestro top include de esta forma:

Ahora vamos a agregar un Control Tabla mediante el asistente siguiendo los mismos pasos pero ahora la tabla interna sera it_tabla_edit (o la que hayas declarado en el paso anterior), y cuando seleccionemos los campos a mostrar debemos dejar sin marcar los campos MARK, DEL, NEW, UPD e ICON.

edit-control-tabla-04

En la quinta pantalla dejaremos las opciones como estas:

edit-control-tabla-05

En las siguientes pantallas dejamos las opciones predeterminadas y definimos los includes en los que deseamos que se guarde el código generado. Ahora en nuestro programa antes de llamar el dynpro vamos a llenar la tabla interna it_tabla_edit con el contenido de nuestra tabla Z.

Al abrir el dynpro veremos que el asistente ha creado un poco de código, vamos a activar la barra de herramientas de SAP y el botón Guardar con el código SAVE.

codigo-generado-control-tabla

En el modulo que procesa las entras del usuario, vamos a colocar este código (Debes ajustar las sentencias SQL para que se adapten a tu tabla Z)

Ahora debemos agregar dos botones en nuestro dynpro uno para agregar filas y otro para eliminarlas con los códigos ADD y DEL respectivamente, sin olvidar asignarles un nombre. Hasta este momento nuestro dynpro deberá lucir como este:

dynpro-control-tabla

Ahora solo nos falta agregar un poco de código para detectar cuando una fila ha sido modificada, para esto abrimos nuestro dynpro y ubicamos el modulo que se activa en el evento ON CHAIN-REQUEST, en este caso es GD_EDIT_MODIFY y hacemos doble clic sobre él

chain-request-control-tabla

y agregamos una instrucción para marcar la fila como modificada.

Ahora tenemos listo un mantenimiento básico para nuestras tablas Z.

Notas:

Cuando mostramos datos para editar en el control tabla y la tabla interna esta vacía, parecerá como que el usuario puede ingresar datos, pero al presionar la tecla Enter se borrará todo lo que se ha digitado, para prevenir esto debemos insertar una linea vacía cuando la tabla interna no tiene filas.

Ejercicio:

Modificar el botón ADD para que al presionarlo se muestre una ventana de tipo modal y solicite un código y un estado y que al presionar un botón de aceptar en esta ventana deberá agregar un registro nuevo en el control tabla. Luego modificar el control tabla para que el campo de código sea de solo lectura.