✒️ABAP / Los cortes de control utilizando tablas internas Por Juan Romero
ABAP Los cortes de control utilizando tablas internas

Cortes de control en ABAP
Definición y Contexto de los Cortes de Control
Los cortes de control permiten estructurar y formatear la salida de datos en reportes ABAP, facilitando agrupamientos, totales y ordenamientos.
Se utilizan con tablas internas, donde se almacenan datos obtenidos tanto desde bases de datos como manualmente.
Ejemplo de aplicación: un reporte de clientes agrupados por región y distrito, mostrando totales por cada cliente, distrito y región.
Implementación Paso a Paso
Declarar la tabla interna de salida y su correspondiente estructura auxiliar (WA_CLIENTES_AUX).
Definir variables para acumular los importes totales por región, distrito y cliente (V_IMPORTE_TOTAL_REGIÓN, V_IMPORTE_TOTAL_DISTRITO, V_IMPORTE_TOTAL_CLIENTE).
Vaciar la tabla interna antes de llenarla para evitar datos residuales.
Llenar la tabla interna con los datos necesarios, provenientes generalmente de la base de datos.
Ordenar la tabla interna por los campos clave sobre los cuales se desea realizar el corte (región, distrito, número de cliente).
Recorrer la tabla interna dentro de un bucle (LOOP) y copiar el contenido de la estructura principal a la auxiliar al inicio de cada iteración.
Uso de Sentencias "AT NEW" y "AT END OF"
"AT NEW campo": Detecta el cambio de valor en un campo respecto al registro anterior y permite inicializar variables de acumulación e imprimir títulos o encabezados.
"AT END OF campo": Detecta el último registro de un grupo y permite mostrar los totales acumulados por cliente, distrito o región.
La lógica dentro de estas sentencias dependerá de si es el primer/último registro y del campo evaluado.
El orden correcto de emplear estas sentencias permite controlar la salida agrupada y sumarizada en pantalla.
Ejemplo Práctico en Reportes
Con cada cambio de región, distrito y cliente, se ejecuta su correspondiente "AT NEW" para inicializar la variable de acumulación y mostrar el encabezado.
Al finalizar cada grupo por cliente, se imprime el total acumulado mediante "AT END OF número de cliente".
De manera similar, se realiza la impresión de totales en "AT END OF distrito" y "AT END OF región".
El correcto uso asegura la visualización adecuada de los reportes y la presentación de subtotales por cada agrupamiento.
Implementación de cortes de control
Necesidad de una estructura auxiliar
Se requiere una estructura o área de trabajo auxiliar al implementar cortes de control en ABAP debido a cómo el lenguaje gestiona los datos tras las sentencias Addnew y Attendof.
ABAP rellena con asteriscos los campos a la derecha del campo de corte después de ejecutar esas sentencias, lo que provoca pérdida de datos en el reporte si no se usa una estructura auxiliar.
Antes de procesar un corte, se copia el contenido relevante a la estructura auxiliar para mantener la integridad de los datos.
Definición y preparación de datos para el reporte
El reporte se basa en una tabla interna con los campos: región, distrito, número de cliente e importe, ordenados según el orden de los cortes de control.
Se declaran tanto la tabla interna principal como la estructura auxiliar para manejar los registros correctamente.
El proceso inicia con la limpieza de la tabla interna de clientes como buena práctica para evitar residuos de ejecuciones previas.
Los registros se cargan manualmente con los datos mencionados y se ordenan por región, distrito y número de cliente (orden ascendente por defecto).
Proceso de corte de control en el loop
Durante el recorrido de la tabla interna:
Se transfiere el registro actual a la estructura auxiliar antes de ejecutar los cortes para evitar el problema de los asteriscos.
Por cada nueva región (a new región), se inicializa el acumulador del importe por región, se asigna un color distinto para el reporte y se imprime el nombre de la región.
Por cada nuevo distrito (a new distrito), se inicializa el acumulador de importe por distrito, se cambia el color y se imprime el distrito.
Por cada nuevo cliente (a new número de cliente), se inicializa el acumulador por cliente.
Los importes se acumulan para cliente, distrito y región simultáneamente.
Al finalizar cada cliente, distrito o región (attendof correspondiente), se imprimen los totales respectivos y se formatea la salida con colores diferenciados.
Ejecución y depuración del reporte
Se utiliza el modo debug para seguir el paso a paso del llenado, ordenamiento, recorrido y cortes dentro de la tabla interna.
Se confirman los 18 registros ingresados, su correcto ordenamiento y el funcionamiento esperado de los cortes y acumuladores.
Se verifica visualmente en la salida que los totales y la organización por región, distrito y cliente se muestran correctamente y en el formato esperado.
Reflexión y Práctica
Se recomienda repasar el código ABAP asociado y realizar los pasos indicados para comprender visualmente el funcionamiento de los cortes de control.
Practicar la implementación de cortes de control en reportes propios usando tablas internas de ejemplo.
Revisar los códigos y sentencias mencionadas para asimilar su funcionamiento en diferentes contextos de agrupamiento y totalización.
El uso de estructuras auxiliares es crucial para evitar pérdidas de datos durante los cortes en ABAP.
Diferenciar visualmente las salidas mediante colores facilita la interpretación del reporte.
 
 
 
Sobre el autor
Publicación académica de Juan Ignacio Romero, en su ámbito de estudios para la Carrera Consultor ABAP Nivel Inicial.
Juan Ignacio Romero
Profesión: Ing. Sistemas Computacionales - Mexico - Legajo: LJ26F
✒️Autor de: 138 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Juan Romero






Disponibilidad Laboral: FullTime


















