✒️ABAP Los cortes de control utilizando tablas internas
ABAP Los cortes de control utilizando tablas internas
1 | Qué es un corte de control?
Es una forma de estructurar el contenido que se escribirá a la salida que consiste de agrupar los contenidos en secciones y formatear la salida usando eventos para el inicio y el final de cada sección. Lo usamos para sumarizar datos y mostrar totales.
2 | El paso a paso para implementar un corte de control
Para implementar un corte de control (conocidos en inglés como "control break") tenemos que tener en mente 4 cosas:
- El orden de los registros
- Las variables que usaremos para sumar los totales
- La estructura auxiliar
- Los eventos "AT NEW" y "AT END OF.
Y para explicar todo esto usaremos el siguiente ejemplo:
Tenemos a la empresa Argentina Omega que tiene varios locales en lugares diferentes. Esta empresa se plantea hacer un resumen en el que se muestra el ingreso generado por compras de clientes específicos, los ingresos totales de los distritos dentro de una región y los ingresos de cada región.
Con esto, ya tenemos la jerarquía con la que podemos generar nuestras secciones. Ya que tenemos regiones (que tienen un nombre), las cuales contienen distritos (que también tienen un nombre); distritos que contienen clientes (las cuales usan una ID numérica) y los clientes tienen un importe (un número entero). Habiendo notado esto, ya podemos diseñar la salida del programa.
El orden de los registros
Para que los eventos que vamos a crear funcionen bien tenemos que asegurarnos ordenar nuestra tabla interna, esto se logrará con la siguiente sentencia:
Esto ordenará las tablas priorizando el ordenado alfabético de las regiones por su nombre; de forma secundaria ordenará por distrito y de forma terciaria ordenará por el número de cliente.
Esto ordenará de la tabla de forma de que todo quede enlistado en grupos en todas las columnas que sea posible.
Las variables que usaremos para sumar los totales
Vamos a iterar a través de cada registro de la tabla usando un LOOP AT, por lo tanto necesitamos declara variables independientes a todo esto para acumular los importes para generar los totales. Los clientes solo pueden tener un importe así que no hace falta crearles un total, así que crearemos v_total_distrito y v_total_region.
La estructura auxiliar
Lo intuitivo sería que luego de usar el SORT en la tabla interna, trabajemos con la misma. Sin embargo, por una particularidad de ABAP hacer esto puede causar problemas, por lo tanto, lo que hacemos es crear una segunda estructura de la tabla interna, iteramos con la primera estructura y al comienzo de cada iteración de LOOP AT usamos el CLEAR con la estructura secundaria y luego le cargamos los contenidos del registro en el que se está iterando la tabla interna. Es decir, de la tabla interna "ti_clientes" generaríamos las estructuras "wa_clientes" y "wa_clientes_aux" y justo después del LOOP AT correríamos las sentencias:
2.1 | Los eventos "AT NEW" y "AT END OF"
Estas son las sentencias más importantes de todo este procedimiento. Son eventos cuya condición de ejecución es la similitud entre el registro actualmente seleccionado por el LOOP AT y los registros que le rodea.
Más en específico, AT NEW compara el registro actual con el registro anterior y verifica si hay una igualdad entre los dos campos de una columna a especificar. Caso negativo se ejecutan las instrucciones dentro del evento.
Mientras tanto, el AT END OF hace casi lo mismo, la diferencia es que este compara el registro actual con el registro que tiene adelante. Si hay una diferencia entre ambos campos se ejecutan las instrucciones dentro del evento.
Ambas usan la siguiente sintaxis:
Donde foo es AT END o AT NEW y bar es la columna en la que se hará la comparación.
Estos eventos son importantes porque nos permiten detectar cuando acabamos cada sección del resumen, permitiéndonos imprimir los totales y las cabeceras en el momento adecuado independientemente de la cantidad de registros que hayan en la tabla interna o de los contenidos de los campos ya establecidos.
 
 
 
Sobre el autor
Publicación académica de Mauricio Javier Solis Ibañez, en su ámbito de estudios para la Carrera Consultor ABAP.
Mauricio Javier Solis Ibañez
Profesión: Técnico Electrónico - Argentina - Legajo: CF20Z
✒️Autor de: 28 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime
Certificación Académica de Mauricio Solis