✒️ABAP Los cortes de control utilizando tablas internas
ABAP Los cortes de control utilizando tablas internas
Cortes de control:
Los cortes de control son formas de estructurar un reporte de salida de modo de poder sumar datos y mostrar totales por distintos campos del reporte.
Para el ejercicio mostrado en el video es preciso generar un corte de control por cada nuevo cliente y un corte de control para poder imprimir los datos en pantalla cuando se termina de recorrer cada cliente.
Para este tipo de ejercicios con las sentencias AT NEW y a AT END es muy importante ordenar la tabla con la sentencia SORT según el campo clave, en este caso como se quiere sumar los importes de todas las líneas por cliente se ordenara según el campo nrocli.
Para este ejercicio debemos declarar una variable de tipo número entero (i) que nos permita sumarizas los importes por clientes y una estructura de cabecera auxiliar (ya que cuando se usa la función AT NEW <campo específico de tabla>, los demás campos que no son los especificados en <campo específico de tabla> se reemplazan por asteriscos.
Al iniciar el loop pasamos los datos de la estructura original a la estructura auxiliar.
Sentencia AT NEW-ENDAT: se utiliza dentro de loop que recorren tablas y se ejecuta el contenido del bloque cuando se identifica que aparece un nuevo valor de un campo en específico (en el caso del ejemplo es el campo nrocli). Si al iterar la tabla el campo nrocli no cambia no se ejecutará el codigo fuente que esta dentro del bloque AT NEW-ENDAT. Conceptualmente la sentencia AT NEW compara el valor anterior del campo de corte con el valor actual del campo de corte.
Sentencia AT END OF-ENDAT: el código dentro de este bloque se ejecutará cuando se vea que en la iteración siguiente del LOOP aparezca un nuevo valor para el campo clave que se esta tomando de referencia para sumar importes.
Conceptualmente la sentencia AT END OF compara el valor actual del campo de corte con el valor siguiente del campo de corte.
Si se quiere hacer un corte de control por más de un campo se debe colocar en la función AT NEW o AT END OF el campo que se encuentre mas a la derecha. Por ejemplo, tenemos una tabla interna con los campos v_campo1 v_campo2 y v_campo3 y queremos hacer un corte de control incluyendo el campo 1 y 2. Se debe ordenar la tabla con la función SORT BY v_campo1 v_campo2 y posteriormente en la sentencia de cortes de control (AT NEW o AT END OF) se debe especificar el campo mas a la derecha y que incluya con anterioridad todos los campos que se quieren tener en cuenta para hacer el corte de control.
También existen las sentencias AT FIRST y AT LAST.
 
 
 
Sobre el autor
Publicación académica de German Ariel Fritsch, en su ámbito de estudios para la Carrera Consultor ABAP.
German Ariel Fritsch
Profesión: Ingeniero Industrial - Argentina - Legajo: EW95G
✒️Autor de: 20 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: FullTime
Certificación Académica de German Fritsch