✒️ABAP Las tablas de control
ABAP Las tablas de control
TABLAS DE CONTROL
1.- Caracterìsticas de una tabla de Control: Es un control que se utiliza para la modificaciòn y visualizaciòn de los datos de una tabla interna, tabla de base de datos u otra estructura de datos de SAP
El aspecto de una tabla de control es similar a la hoja de càlculo. Ejemplo cuando introducimos datos a travès de la vista de una tabla utilizando la transacciòn SM30.
2.- Creaciòn de una Tabla de Control: Para crear una tabla de control dentro de una dynpro hay dos maneras:
- De forma manual o utilizar el asistente Wizard.
Para utilizar el asisten, primero se debe crear un include de datos y declarar la tabla interna TI_USUARIOS junto con la estructura ST_USUARIOS del mismo tipo que la tabla interna. Dentro de la tabla interna declarar al comienzo de la misma el campo de tipo de caracter de 1 posiciòn, que se utllizarà para agregar una columna de selecciòn de filas; a la Tabla de control.
SPAN {
font-family: "Courier New";
color: #000000;
background: #FFFFFF;
}
.L0S52 {
color: #0000FF;
}
DATA: BEGIN OF ti_usuarios OCCURS 0,
marca(1) TYPE c,
dni TYPE z_dni,
nombre_ape TYPE z_nombre_ape,
estado_usu TYPE z_estado_usu,
direccion TYPE z_direccion,
codigo_postal TYPE z_codigo_postal,
fecha_nac TYPE z_fecha_nac,
estado_civil TYPE z_estado_civil,
END OF ti_usuarios.
SPAN { font-family: "Courier New"; color: #000000; background: #FFFFFF; } .L0S52 { color: #0000FF; } DATA: st_usuarios LIKE LINE OF ti_usuarios.
Luego en el screen painter de la dynpro seleccionamos el "Control Tabla(med.Wizard)", lo agregamos a la pantalla y aumentando manteniendo el botòn presionado las dimensiones del control.
A continuaciòn se ejecutarà el asistente que nos guiarà en la construcciò "Continuar".
Ingresamos el nombre de la tabla que serà TC_USUARIOS.
Especificar el nombre y estructura de la tabla interna.
Macamos los campos de la tabla que se mostraràn en la tabla de control, sin tomar en cuenta el campo de selecciòn.
En el siguiente paso "Atributos de entrada/salida" determinamos si la Tabla de control serà de salida de datos, es decir visualizaciòn o de entrada de datos.
Si marcamos el check "Con cabecera de columnas", se visualizan los tìtulos de cada columna.
Si marcamos el check "Con columna de selecciòn", se crearà en la tabla de control la columna de selecciòn, en cuyo caso ingresamos el nombre del campo MARCA en Campo columna selecciòn.
Luego podemos seleccionar algunas funciones estàndar de la Tabla de control, las cuales dependeràn de que la tabla sea de entrada o salida.
En esta caso seleccionamos el check "PasarPag" que agregarà cuatro botones debajo de la tabla de control con los cuales podremos desplazar a lo largo y ancho de la tabla.
Ahora especificaremos los includes en donde se crearà el còdigo de la Tabla de control.
En el caso de que alguno de los includes no exista se crearàn.
Finalmente veremos la tabla creada.
Modificamos el ancho de las columnas y descripciones de los tìtulos para que se visualicen mejor con el ancho de cada columna respectivo.
"Se debe declarar en primer lugar los INCLUDES TOP", de lo contrario se presentaràn errores de declaraciones de sintàxis".
Automàticamente se han creado en nuestro programa una enorme cantidad de còdigo relacionada a la delaraciòn de la tabla de control.
SPAN { font-family: "Courier New"; color: #000000; background: #FFFFFF; } .L0S32 { color: #3399FF; } .L0S52 { color: #0000FF; } CONTROLS: TC_USUARIOS TYPE TABLEVIEW USING SCREEN 0200.
El tipo TABLEVIEW corresponde a la estructura CXTAB_CONTROL con los siguientes campos.
fixed_cols TYPE I Nùmero de columnas fijas
Lines TYPE I Nùmero de lìneas por desplazamiento vertical.
Top_Line TYPE I Primera linea en el siguiente PBO
current_line TYPE i Lìnea actual (en un LOOP...ENDLOOP)
let_col TYPE I Primera columna desplegada y movible
line_sel_mode TYPE I Selecciòn de lìnea (0=ninguna, 1=simple, 2=mùltiple)
col_sel_mode TYPE i Selecciòn de columna (0=ninguna, 1=simple, 2=mùltiple)
Line_selector Indicador de lìnea seleccionada
v_scroll Indicador de barra de desplazamiento vertical
h_grid Indicador de lìnea de grid horizontal
v_grid Indicador de lìnea grid vertical.
El tipo CXTAB_COLUMN consta de los siguientes campos.
SCREEN LIKE SCREEN Atributos de la estructura SCREEN.
INDEX TYPE I Posiciòn de columna (secuencia de despliegue)
SELECTED Indicador de columna seleccionada
VISLENGTH LIKE ICON-OLENG Ancho visible de la columna
INVISIBLE Indicador de columna invisible.
En le PBO de la lògica del procesamiento de la dynpro se ha creado el siguiente còdigo.
SPAN {
font-family: "Courier New";
color: #000000;
background: #FFFFFF;
}
.L0S31 {
font-style: italic;
color: #808080;
}
.L0S52 {
color: #0000FF;
}
PROCESS BEFORE OUTPUT.
*&SPWIZARD: PBO FLOW LOGIC FOR TABLECONTROL 'TC_USUARIOS'
MODULE TC_USUARIOS_CHANGE_TC_ATTR.
MODULE CARGAR_TC_0200.
*&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.
En el PAI de la lògica de procesamiento de la dynpro se ha creado el siguiente còdigo.
SPAN {
font-family: "Courier New";
color: #000000;
background: #FFFFFF;
}
.L0S31 {
font-style: italic;
color: #808080;
}
.L0S52 {
color: #0000FF;
}
PROCESS AFTER INPUT.
*&SPWIZARD: PAI FLOW LOGIC FOR TABLECONTROL 'TC_USUARIOS'
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.
MODULE TC_USUARIOS_USER_COMMAND.
*&SPWIZARD: MODULE TC_USUARIOS_CHANGE_TC_ATTR.
*&SPWIZARD: MODULE TC_USUARIOS_CHANGE_COL_ATTR.
MODULE exit_0200 AT EXIT-COMMAND.
MODULE USER_COMMAND_0200.
Utilizaremos la sentencia LOOP-ENDLOOP para correr cada elemento de la tabla de control. Dentro de esta sentencia pueden haber otras sentencias como FIELD, MODULE, SELECT, VALUES y CHAIN-ENDCHAIN.
Debe existir una sentencia LOOP-ENDLOOP tanto en el PBO como en el PAI, para cada tabla de control de la pantalla. Esto se debe a que mediante esta sentencia se copian los campos entre el programa ABAP y la pantalla y viceversa.
"En el PBO, el campo del sistema sy.loopc contiene el nùmero actual de lìneas de la tabla de control.
En el PAI, contiene el nùmero de lìneas actualmente llenas"
Finalmente para llenar la tabla de control con datos, en el PBO de la dynpro realizaremos la carga de la misma.
SPAN {
font-family: "Courier New";
color: #000000;
background: #FFFFFF;
}
.L0S31 {
font-style: italic;
color: #808080;
}
.L0S52 {
color: #0000FF;
}
PROCESS BEFORE OUTPUT.
*&SPWIZARD: PBO FLOW LOGIC FOR TABLECONTROL 'TC_USUARIOS'
MODULE TC_USUARIOS_CHANGE_TC_ATTR.
MODULE CARGAR_TC_0200.
*&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.
Y dentro del mòdulo CARGAR_TC_0200 introducimos el siguiente còdigo.
SPAN {
font-family: "Courier New";
color: #000000;
background: #FFFFFF;
}
.L0S31 {
font-style: italic;
color: #808080;
}
.L0S52 {
color: #0000FF;
}
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 solo el 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 todos los DNIs
SELECT dni nombre_ape estado_usu direccion
codigo_postal fecha_nac estado_civil
FROM ztabla_usuarios
INTO TABLE ti_usuarios_aux.
ENDIF.
* Pasamos el contenido a la tabla TC
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 Miguel Angel Acosta Acosta, en su ámbito de estudios para la Carrera Consultor ABAP.
Miguel Angel Acosta Acosta
Profesión: Ingeniero de Sistemas - Ecuador - Legajo: TF64C
✒️Autor de: 238 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor en SAP SD Nivel Avanzado
- Carrera Consultor en SAP SD Nivel Inicial
- Máster ABAP for HANA
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial
Disponibilidad Laboral: FullTime
Presentación:
Profesional de ingeniería de sistemas en computación e informática, con experiencia en la implantación y soporte de proyectos informáticos para empresas del sector industrial y financiero.
Certificación Académica de Miguel Acosta