![](/cvo_files/imgs_sap_abap/logos/logo_cvo_academy_it.png)
✒️ABAP Los cortes de control utilizando tablas internas
ABAP Los cortes de control utilizando tablas internas
![ABAP Los cortes de control utilizando tablas internas ABAP Los cortes de control utilizando tablas internas](https://www.cvosoft.com/cvo_files/imgs_sap_abap/og-images/121.jpg)
CORTES DE CONTROL UTILIZANDO TABLAS INTERNAS
Un corte de control es una forma de estructurar un reporte de salida de modo de poder sumarizar datos y mostrar totales por distintos campos del reporte. Una condición esencial que presentan los cortes de control es que la tabla de salida del reporte debe organizarse por los campos por los cuales va a realizarse el corte de control.
Es indispensable utilizar una estructura auxiliar para almacenar los del registro de la tabla interna del reporte ya que ABAP completará con asteriscos los campos que se encuentren a la derecha del campo por el cual realizamos el corte y se perderá la información almacenada en ello.
Principalmente vamos a utilizar las sentencias AT NEW/AT END. La sentencia AT NEW campo comparará el valor actual del campo con el valor anterior, y en caso de ser distintos entonces se procesará el código dentro del AT NEW. La sentencia AT END campo comparará el actual valor del campo con el valor siguiente, es decir, el que se encuentra en la próxima vuelta de la tabla interna. En caso de ser distintos se procesará el código dentro del AT END.
Para sumar campos dentro del LOOP a la tabla interna del Reporte podemos utilizar la sentencia ADD. Es posible realizar un corte de control por más de un campo, en ese caso colocaremos en el AT NEW o en el AT END el campo que se encuentre más a la derecha. Por ejemplo, suponiendo que tenemos nuestra tabla interna
DATA: ti_tabla
campo 1
campo 2
campo 3
Si quisiéramos realizar un corte de control por campo 3 sólo colocaríamos
AT NEW campo 3
O
AT END campo 3
También existen las sentencias AT FIRST/ AT LAST que aunque no se usan de manera común pero que sirven en un requerimiento muy específico.
Ejemplo de los CORTES DE CONTROL:
Suponiendo que dentro de los registros de una tabla interna (clientes) tenemos un campo “importe”. Ahora bien, queremos obtener un listado de clientes en donde se muestre en una sola línea el total por clientes. Lo que se tiene que hacer es, primero, realizar un corte de control por cada uno de los clientes y otro corte para imprimir los resultados.
Primero hay que tener la tabla interna de clientes cargada con distintos registros. A continuación lo que se tiene que hacer es ordenar la tabla según el orden en que queremos que se visualicen los datos mediante la sentencia SORT. Loopeamos la tabla. Antes de realizar el corte de control, dentro del Loop hay que pasar los datos que se están recurriendo a una estructura auxiliar, esto debido a que ABAP completa con asteriscos todos los campos a la derecha del campo por el cual hacemos el corte.
Para realizar el corte de control por número de cliente vamos a utilizar la sentencia AT NEW seguida de la sentencia de número de cliente nrocli. Internatmente la sentencia AT NEW compara al actual número de cliente con el anterior número de cliente. Si estos son distintos entonces se procesa el código que está dentro del ATNEW.
Por último, como lo que se busca es mostrar por pantalla el total por cliente, acumulamos el importe. Para realizar dicha impresión utilizamos la sentencia ATEND seguida del campo por el cual hacemos el corte.
Internamente la sentencia ATEND compara el actual número de cliente con el próximos número de cliente. Si ambos son distintos entonces se procesará el código que está dentro del ATEND.
 
 
 
Sobre el autor
Publicación académica de Jose Alberto Rivera Gonzalez, en su ámbito de estudios para la Carrera Consultor ABAP.
Jose Alberto Rivera Gonzalez
Profesión: Técnico Informático - Mexico - Legajo: LG32F
✒️Autor de: 102 Publicaciones Académicas
🎓Egresado de los módulos:
Certificación Académica de Jose Rivera