SAP Control de tabla ABAP con ejemplos
⚡ Resumen inteligente
SAP El control de tabla ABAP muestra una tabla interna como una cuadrícula desplazable en una pantalla integrada en la pantalla. PainterEsta página explica sus características, la declaración CONTROLS, el manejo del cursor, los bucles PBO y PAI, y los atributos de columna.

¿Qué es un control de tabla en SAP ABAP?
Los controles de tabla y los bucles de pasos son objetos para la visualización de la tabla en pantalla que se agregan a una pantalla en el menú Pantalla. Painter.
Desde el punto de vista de la programación, los controles de tabla y los bucles de pasos son casi exactamente iguales. Los controles de tabla son simplemente bucles de pasos mejorados que muestran datos con la apariencia asociada con las tablas en las aplicaciones de escritorio.
Características del control de tabla ABAP
Con los controles de la tabla, el usuario puede:
- Desplazarse por la tabla vertical y horizontalmente
- Cambiar el tamaño del ancho de una columna
- Desplazarse dentro de un campo (cuando el contenido del campo es más ancho que el campo)
- Seleccionar filas o columnas de la tabla
- Reordenar la secuencia de columnas.
- Guarde la configuración de pantalla actual para uso futuro
Los controles de tabla también ofrecen funciones de formato especiales (algunas automáticas, otras opcionales) que hacen que las tablas sean más fáciles de ver y usar. El control de mesa proporciona:
- cambio automático de tamaño de la tabla (vertical y horizontal) cuando el usuario cambia el tamaño de la ventana
- líneas separadoras entre filas y entre columnas (verticales y horizontales)
- campos de encabezado de columna para todas las columnas
En general, muchas de las funciones proporcionadas por el control de tabla son manejadas localmente por el administrador de su sistema. SAPinterfaz gráfica de usuario, por lo que no es necesario programarlos usted mismo. La única excepción notable a esto es el desplazamiento vertical..
Ejemplo (Transacción TZ60)
La transacción TZ60 anterior muestra el resultado final: una cuadrícula con encabezados de columna, líneas separadoras y una columna de selección. A continuación, se resumen las diferencias con respecto al bucle de pasos anterior.
Control de tabla frente a bucle escalonado
Una característica de los bucles de pasos es que sus filas de tabla pueden ocupar más de una línea en la pantalla. En cambio, una fila de un control de tabla siempre debe caber en una sola línea (aunque es posible desplazarse). La siguiente tabla compara ambos elementos de la pantalla.
| Criterios | Control de tabla | Bucle de pasos |
|---|---|---|
| Diseño de fila | Una fila siempre es una línea de pantalla. | Una fila puede abarcar varias líneas de pantalla. |
| Manejo de columnas | El usuario puede cambiar el tamaño, el orden y ocultar las columnas. | Diseño de columna fijo definido en la pantalla |
| Desplazamiento | Desplazamiento horizontal por parte del frontend, desplazamiento vertical programado en PAI. | Programado íntegramente en código ABAP. |
| Declaración | CONTROLES … TIPO DE VISTA DE TABLA USANDO PANTALLA | No hay estructura de control en el programa. |
| Ajustes de la pantalla | El usuario puede guardar un diseño personal. | No disponible |
Dado que el control de tabla es el elemento moderno, el resto de esta página se dedica a programar dicho control.
Cómo crear y programar un control de tabla
Un control de tabla requiere un elemento de pantalla, una estructura de control en el programa y un bucle tanto en PBO como en PAI. Las subsecciones siguientes siguen ese orden.
Declarar el control
Para manejar controles de tabla en programas ABAP, debe declarar un control en la parte de declaración del programa para cada control de tabla utilizando la siguiente declaración:
CONTROLS <ctrl> TYPE TABLEVIEW USING SCREEN <scr>
donde es el nombre del control de tabla en una pantalla del programa ABAP. El control permite al programa ABAP leer los atributos del control de tabla e influir en el control. Aquí, es el número de pantalla donde se cargan los valores iniciales de la tabla.
Establecer y leer la posición del cursor
La posición del cursor para un control de tabla se puede configurar de las siguientes maneras:
En PBO puede colocar el cursor en un campo específico de una fila específica de un control de tabla.
SET CURSOR FIELD <f> LINE <lin> [OFFSET <off>]
Usando la adición opcional OFFSET, puede ingresar el desplazamiento del cursor en el campo como se describe en Configuración de la posición del cursor.
En PAI puede leer la posición actual del cursor.
GET CURSOR FIELD <f> LINE <lin> ...
Además de la información proporcionada en Averiguar la posición del cursor, el campo contiene información sobre en qué fila del control de la tabla se encuentra actualmente el cursor. También puedes usar
GET CURSOR LINE <lin>.
Para determinar la fila del control de tabla. SY-SUBRC permite comprobar si el cursor está situado en una fila de un control de tabla.
Leyendo la línea correspondiente de la tabla interna
Para obtener la línea correspondiente del mesa interna:
GET CURSOR line <lin>. ind = <table_control>-top_line + <lin> - 1. Read table <itab> index ind.
La variable del sistema stepl – contiene el índice de la línea de la tabla actual en un bucle… endloop. Loopc: contiene el número de líneas visibles en la tabla
Creación del control en la pantalla Painter
Para crear un control de tabla
- Agregue un elemento de control de tabla a su pantalla.
- Asigne un nombre al control de tabla. En el programa ABAP declare una estructura con el mismo ( CONTROLES tipo TABLEVIEW USING SCREEN )
- Para crear campos, vaya a la función Campos de diccionario/programa.
- Ingrese el nombre de la estructura cuyos campos desea. (Si desea seleccionarlo del diccionario de su programa, haga clic en el botón correspondiente).
- En la lista de campos, elija los campos que desee y elija Aceptar.
- Haga clic en el área de control de la tabla
Si desea una columna de selección, marque la casilla correspondiente en los atributos y asígnele un nombre. Cree el campo en el programa ABAP.
Codificación de los bucles PBO y PAI
En el PBO deberías tener la declaración
LOOP at <itab> USING CONTROL <cntrl_name>. ENDLOOP.
En el PAI deberías tener.
LOOP at <itab>. ENDLOOP.
Es dentro de los bucles donde se produce la transferencia de datos entre la pantalla y la tabla interna. Cuando se rellena la tabla interna, utilice DESCRIBE TABLE. LINES -líneas, para almacenar el número total de líneas en el control. La instrucción FIELD se puede utilizar para controlar cuándo se produce la transferencia de datos.
⚠️ Advertencia: El bucle PBO debe especificar el control con USING CONTROL. Sin esto, el control no sabe cuántas líneas existen y el desplazamiento vertical deja de funcionar.
Modificación de atributos de columna en tiempo de ejecución
Para cambiar los atributos de celdas individuales, cambie temporalmente la tabla PANTALLA en el PBO. Puede cambiar los atributos de la estructura creada por la declaración CONTROLS
<cntrl>-fixed_cols etc are the attributes of the control <cntrl>-cols-index etc are the attributes of the columns. <cntrl>-cols-screen-invisible etc are the screen attributes of each column.
💡 Consejo: Bucle sobre -cols en el PBO para ocultar o proteger una columna para un rol de usuario determinado, en lugar de crear una segunda pantalla.

