✒️ABAP Las tablas de control
ABAP Las tablas de control
8° Tablas de Control
1- Características de una Tabla de Control
Una Tabla de Control es un Control que se utiliza para la Visualización y Modificación de una Tabla Interna, una Tabla Base de Datos u otra Estructura de Datos de SAP.
El aspecto es similar a una Hoja de Cálculo, algo que podemos observar si accedemos a la Trx SM30 y Visualizamos una Tabla Base de Datos cualquiera.
2- Creación de una Tabla de Control
Para crear una Tabla de Control en una Dynpro tenemos 2 posibilidades: Manual o utilizando el asistente Wizard como se explica a continuación suponiendo que trabajaremos con la Tabla ZTABLA_USUARIOS.
- Se crea un Include de Datos donde declararemos
- - Tabla Interna TI_USUARIOS conteniendo todos los campos de la TBD mas un campo marca como primer campo.
- - Estructura ST_USUARIOS del mismo tipo de la Tabla Interna TI_USUARIOS.
- En el Screen Painter de la Dynpro
- - Seleccionamos el ícono Control Tabla (med. Wizard) arrastrándolo sobre la pantalla y aumentando su tamaño.
- A continuación se ejecutará el Asistente Wizard que nos guiará en la construcción de la Tabla de Control.
- - Inicio: Breve explicación del uso y funciones del Wizard. Presionamos Continuar.
- - Nombre del Table Control: Nombre de la Tabla de Control TC_USUARIOS.
- - Nombre de la tabla: Tabla interna programa TI_USUARIOS y Área trabajo tabla ST_USUARIOS.
- - Definición de columnas: Marcamos los campos de la tabla que se mostrarán sin tener en cuenta el campo marca.
- - Atributos del Table Control
- Atributos entrada/salida: Si es de salida (visualización) o de entrada (actualización).
- Columnas: Con cabeceras de columnas
- Posib.selección filas: Campo columna selec. marca. Selección simple.
- - Selección de funciones adicionales p.actualización tablas
- PasarPág: Al utilizar esta opción se agregan 4 teclas debajo de la Tabla de Control
- - Especificación de includes: Se especifican los Includes en donde se creará el código de la Tabla de Control. Si el include no existe, se lo creará automáticamente.
- - Preparar Tabla de Control: Pulsando la tecla Terminar se crearán todos los objetos necesarios para la Tabla de Control de acuerdo a los Atributos especificados.
En este momento, tenemos la posibilidad de modificar el Ancho de las columnas, como así también los Títulos de las mismas.
Dentro de todo lo que se generó en el programa, se encuentra la declaración de la Tabla de Control.
CONTROLS: tc_usuarios TYPE TABLEVIEW USING SCREEN 0200.
El Tipo TABLEVIEW corresponde a la Estructura CXTAB_CONTROL que almacena los datos que definen a la Tabla de Control, como ser Nro.de columnas fijas, Nro.de líneas para el desplazamiento vertical, etc. y al final aparece una Estructura COLS del tipo CXTAB_COLLUMN con datos específicos de las Columnas.
- Código ABAP generado en el evento PBO
PROCESS BEFORE OUTPUT.
* &SPWIZARD: PBO FLOW LOGIC FOR TABLECONTROL 'TC_USUARIOS'
MODULE TC_USUARIOS_CHANGE_TC_ATTR.
* &SPWIZARD: MODULE TC_USUARIOS_CHANGE_COL_ATTR.
LOOP AT TI_USUARIOS
INTO ST_USUARIOS
WITH CONTROL TC_USUARIOS
CURSOR TC_USUARIOS-CURRENT_LINE.
MODULE TC_USUARIOS_GET_LINES.
* &SPWIZARD: MODULE TC_USUARIOS_CHANGE_FIELD_ATTR.
ENDLOOP.
- Código ABAP generado en el evento PAI
PROCESS AFTER INPUT.
LOOP AT TI_USUARIOS.
CHAIN.
FIELD ST_USUARIOS-DNI.
FIELD ST_USUARIOS-NOMBRE_APE.
FIELD ST_USUARIOS-ESTADO_USU.
FIELD ST_USUARIOS-DIRECCION.
FIELD ST_USUARIOS-CODIGO_POSTAL.
FIELD ST_USUARIOS-FECHA_NAC.
FIELD ST_USUARIOS-ESTADO_CIVIL.
ENDCHAIN.
FIELD ST_USUARIOS-MARCA
MODULE TC_USUARIOS_MARK ON REQUEST.
ENDLOOP.
PROCESS BEFORE OUTPUT.
MODULE status_0200.
MODULE cargar_tc_0200.
* &SPWIZARD: PBO FLOW LOGIC FOR TABLECONTROL 'TC_USUARIOS'
MODULE TC_USUARIOS_CHANGE_TC_ATTR.
* &SPWIZARD: MODULE TC_USUARIOS_CHANGE_COL_ATTR.
LOOP AT TI_USUARIOS
INTO ST_USUARIOS
WITH CONTROL TC_USUARIOS
CURSOR TC_USUARIOS-CURRENT_LINE.
MODULE TC_USUARIOS_GET_LINES.
* &SPWIZARD: MODULE TC_USUARIOS_CHANGE_FIELD_ATTR.
ENDLOOP.
MODULE cargar_tc_0200 OUTPUT.
CLEAR: ti_usuarios_aux, st_usuarios, ti_usuarios.
REFRESH ti_usuarios_aux, ti_usuarios.
IF NOT wa_screen_0100-dni IS INITIAL.
* Recupero datos solo del dni introducido
SELECT dni nombre_ape estado_usu direccion
codigo_postal fecha_nac estado_civil
FROM ztabla_usuarios
INTO TABLE ti_usuarios_aux
WHERE dni EQ wa_screen_0100-dni.
ELSE.
* Recupero datos de todos los DNI
SELECT dni nombre_ape estado_usu direccion
codigo_postal fecha_nac estado_civil
FROM ztabla_usuarios
INTO TABLE ti_usuarios_aux.
ENDIF.
LOOP AT ti_usuarios_aux INTO st_usuarios_aux.
CLEAR st_usuarios.
st_usuarios-dni = st_usuarios_aux-dni.
st_usuarios-nombre_ape = st_usuarios_aux-nombre_ape.
st_usuarios-estado_usu = st_usuarios_aux-estado_usu.
st_usuarios-direccion = st_usuarios_aux-direccion.
st_usuarios-codigo_postal = st_usuarios_aux-codigo_postal.
st_usuarios-fecha_nac = st_usuarios_aux-fecha_nac.
st_usuarios-estado_civil = st_usuarios_aux-estado_civil.
APPEND st_usuarios TO ti_usuarios.
ENDLOOP.
ENDMODULE.
 
 
 
Sobre el autor
Publicación académica de Victor Norberto Levi, en su ámbito de estudios para la Carrera Consultor ABAP.
Victor Norberto Levi
Profesión: Analista Programador - Argentina - Legajo: VT17H
✒️Autor de: 111 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Victor Levi