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.

  • ๐Ÿ–ฅ๏ธ Definiciรณn bรกsica: Un control de tabla es un bucle de pasos mejorado que muestra datos de tabla con la apariencia de una cuadrรญcula de aplicaciรณn de escritorio.
  • ๐Ÿงฐ Funciones integradas: El desplazamiento, el redimensionamiento de columnas, la reordenaciรณn de columnas, la selecciรณn de filas y la configuraciรณn de visualizaciรณn guardada son gestionados por el SAPInterfaz grรกfica de usuario.
  • ๐Ÿ“œ Regla de una sola lรญnea: Una fila de bucle de pasos puede abarcar varias lรญneas de pantalla, mientras que una fila de control de tabla siempre debe caber en una sola lรญnea.
  • โŒจ๏ธ Declaraciรณn: CONTROLES TIPO DE VISTA DE TABLA USANDO PANTALLA Vincula el elemento de pantalla con el programa ABAP.
  • ๐ŸŽฏ Manejo del cursor: SET CURSOR posiciona el cursor en PBO, y GET CURSOR lee el campo y la fila en PAI.
  • ๐Ÿ” Transferencia de datos: LOOP AT โ€ฆ USING CONTROL se ejecuta en PBO y un LOOP AT simple se ejecuta en PAI, y los datos se mueven entre la pantalla y la tabla interna dentro de esos bucles.
  • ???? Atributos dinรกmicos: La tabla SCREEN y la La estructura -cols cambia la visibilidad y el formato de las columnas en tiempo de ejecuciรณn.

SAP Control de tabla ABAP

ยฟ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)

SAP Control de tabla ABAP

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

  1. Agregue un elemento de control de tabla a su pantalla.
  2. Asigne un nombre al control de tabla. En el programa ABAP declare una estructura con el mismo ( CONTROLES tipo TABLEVIEW USING SCREEN )
  3. 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.

Preguntas Frecuentes

La interfaz de usuario gestiona el desplazamiento horizontal, pero el desplazamiento vertical estรก codificado en PAI. Evalรบe SY-UCOMM para obtener los cรณdigos de la funciรณn de desplazamiento y mueva el campo top_line de la estructura de control antes de que se ejecute el siguiente PBO.

An rejilla ALV Ofrece funciones de ordenaciรณn, filtrado, totales y exportaciรณn sin necesidad de cรณdigo adicional, por lo que resulta ideal para mostrar listas. Se prefiere un control de tabla cuando la pantalla requiere lรณgica de entrada personalizada y control total sobre cada celda.

SY-STEPL almacena el รญndice de la fila que se estรก procesando dentro del bucle de pantalla, y SY-LOOPC almacena el nรบmero de filas visibles en la pantalla. Ambos se rellenan รบnicamente dentro del bucle LOOP โ€ฆ ENDLOOP del control.

Sรญ. Los asistentes de IA en las herramientas de desarrollo ABAP elaboran la declaraciรณn CONTROLS, ambos bucles de pantalla y la lรณgica de desplazamiento a partir de una descripciรณn de la tabla interna. La lรณgica de flujo generada aรบn necesita ser probada en la pantalla. Painter.

Las herramientas de anรกlisis de IA leen la lรณgica de flujo de una dynpro, enumeran los campos y los cรณdigos de funciรณn, y proponen un diseรฑo equivalente basado en Fiori o ALV. Esta propuesta acorta la fase de anรกlisis de un proyecto de modernizaciรณn.

Resumir este post con: