✒️ABAP Las tablas de control
ABAP Las tablas de control
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 o estructura de datos SAP.
CREACION DE UNA TABLA DE CONTROL:
Hay dos formas MANUALMENTE o con el WIZAR
WIZARD:
1. Antes de que nada se crea un incluide de datos
2. Declarar table TI_USUARIOS
3. Declarar estrucutra ST_USUARIOS Al comienzo de la misma se añade el campo MARCA de tipo Carácter de 1 posición.
DATA: BEGIN OF ti_usuarios OCCURS 0,
Marca(1) TYPE c,
Dni TYPE z_dni,
…
Estado_civil TYPE z_estado_civil,
END OF ti_usuarios.
DATA: st_usuarios LIKE LINE OF ti_usuarios.
4. Abrimos screen painter
5. Control tabla (mediante wizard)
6. Lo ponemos en la pantalla y dimensionamos sin soltar el ratón
7. Se inicia el asistente, continuar
8. Introducimos el nombre de la tabla de control TC_USUARIOS (es un ejemplo)
9. Especificar el nombre de la tabal interna y estructura
10. Marcar campos de la tabla que se mostraran en la tabla de controls excepto el MARCA
11. En atributos de entrada/salida determinamos que tipo de entrada
12. Marcando cabeceras aparecen los títulos de columnas
13. Columna de selección la marcamos e introducimos el campo MARCA como campo de selección y seleccionamos el tipo de selección permitido.
14. Funciones estándar dependiendo del tipo de tabla entrada o salida, marcamos PASARPAG
15. Especificar includes, si estos no existen el WIZARD los creará.
16. Finalizar
NOTA: El orden en que se crean los includes es importante ya que si el que define las tablas y estructura no está creado, el sistema dará un error de sintaxis.
El sistema ha creado en nuestro programa una cantidad de código.
Declaración de la tabla de control:
CONTROLS: tc_usuarios TYPE TABLEVIEW USING SCREEN 0200.
El tipo TABLEVIEW corresponde a la estructura CXTAB_CONTROL y tiene los siguientes campos:
FIXED_COLS TYPE I Num.de columnas fijas
LINEZ TYPE I Num. Líneas para despl. Vertical.
TOP_LINE TYPE I Primera línea en el siguiente PBO
CURRENT_LINE TYPE I Línea actual (en un LOOP…ENDLOOP)
LEFT_COL TYPE I Primera columna desplegada y movible
LINE_SEL_MODE TYPE I Sel. De línea (0=ninguna, 1=simple, 2=múltiple)
LINE_SELECTOR Indicador de línea seleccionada
V_SCROLL Indicador de barra dspl. Vertical.
H_GRID Indicado de línea de grid horizontal
V_GRID Indicador de línea de grid vertical
COLS TYPE CXTAB_COLLUMN OCCURS 10
El tipo CXTAB_COLLMN consta de los siguientes campos:
SCREEN LIKE SCREEN atributos de la estructura SCREEN
INDEX TYPE I Posición de columna (secuencia de despliegue)
SELECTED Indicado de columna seleccionada
VISIBLE LIKE ICON-OLENG Ancho visible de columna
INVISIBLE Indicado de columna invisible.
En el PBO podremos ver el codigo de proceso con el LOOP-ENDLOOP cargando las lineas generado automaticamente por el WIZARD.
EN la PAI podremos ver el codigo de proceso generado por el WIZARD , el LOOP-ENDLOOP que gestiona la MARCA de seleccion. El Modulo que espera los eventos.
La sentencia LOOP-ENDLOOP la usamos para recorrer cada elemento de la tabla de control. Dentro puede haber otras sentencias como FIELD, MODULE, SELECT, VALUES y CHAIN-ENDCHAIN.
Debe Existir una sentencia LOOP-ENDLOOP tanto en la PBO como en el PAI para cada tabla de control de la pantalla. Mediante esta sentencia se copia los campos entre el programa ABAP y la pantalla y viceversa.
SY-LOOPC
En la PBO el campo SY-LOOPC contiene el numero actual de líneas de la tabla de control.
En la PAI contiene el número de líneas actualmente llenas.
CARGAR LA TABLA DE CONTROL CON DATOS EN LA PBO
PROCESS BEFORE OUTPU.
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_get_lines.
MODULE tc_usuarios_get_lines.
*&SPWIZARD MODULE TC_USUARIOS_CHANGE_FIELD_ATTR
ENDLOOP.
Dentro del módulo CARGAR_TC_0200 creamos el codigo que verifica si el campo DNI esta iniciado o no, si lo esta cargamos el DNI solicitado en caso contrario todos los dnis haciendo un SELECT y cargando los datos en una tabla auxiliar TI_USUARIOS_AUX, luego mediante un LOOP leemos los datos de TI_USUARIOS y los vamos pasando a la estructura TS_USUARIOS_AUX y de alli los copiamos a TS_USUARIOS y hacemos un APPEND en la tabla TI_USUARIOS.
No puedo poner el codigo, no cabe en los apuntes.
 
 
 
Sobre el autor
Publicación académica de Josep Antoni Lopez Moyano, en su ámbito de estudios para la Carrera Consultor ABAP.
Josep Antoni Lopez Moyano
Profesión: It Manager - España - Legajo: QP26P
✒️Autor de: 375 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor en SAP HCM Nivel Inicial
- Carrera Consultor Basis NetWeaver Nivel Avanzado
- Carrera Consultor Basis NetWeaver Nivel Inicial
- Máster Funcional ABAP
- Máster ABAP Orientado a Objetos
- Carrera Consultor ABAP Nivel Avanzado
- Carrera Consultor ABAP Nivel Inicial