En este video veremos cómo realizar un corte de control a una tabla interna para poder imprimir un listado por pantalla:
Supongamos que tenemos una tabla interna con registros de clientes que incluye un importe entre sus campos y queremos obtener un listado de clientes donde se muestre en una sola línea el total por clientes.
En este caso tendríamos que realizar un corte de control por cada nuevo cliente y otro corte para imprimir los resultados. Lo primero que hacemos es cargar la tabla interna de clientes con distintos registros
Luego debemos ordenar la tabla interna de clientes según en el orden que queremos que se visualicen los datos
Ahora recorremos la tabla para listar el listado.
Antes de realizar el corte de control debemos pasar los datos que se están recorriendo a una estructura auxiliar.
Esto se debe a que ABAP completa con * todos los campos a la derecha del campo por el cual hacemos el corte.
Para realizar el corte de control por cliente vamos a utilizar la sentencia AT NEW seguida del campo número de cliente.
Internamente la sentencia AT NEW compara el actual número de cliente con el nuevo número de cliente si estos son distintos entonces se procesará el código que está dentro del AT NEW. Luego, como queremos imprimir por pantalla el total por cliente acumulamos el importe.
Para realizar la impresión de los datos utilizamos la sentencia AT END seguida del campo por el cual hacemos el corte.
Internamente la sentencia AT END compara el actual número de cliente con el próximo número de cliente, si estos son distintos entonces se procesará el código que está dentro del AT END
Ejecutamos el programa, finalmente vemos el listado ordenado por cliente donde se muestra el total acumulado para cada uno de ellos.
AUDIO: Un corte de control es una forma de estructurar un reporte de salida, de modo de poder sumarizar datos y mostrar totales.
• La tabla de salida del reporte debe de ordenarse por los campos por los cuales se va a realizar el corte de control.
• Crear una estructura auxiliar para almacenar los datos del registro de la tabla interna del reporte ya que ABAP completará con * 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.
• Utilizar la sentencia:
o AT NEW <campo>: comparará el valor actual del campo con respecto al anterior, en caso de ser distintos entonces se procesara el código dentro del AT NEW.
o AT END <campo>: comparará el valor actual del campo con el valor siguiente, en caso de ser distintos entonces se procesara el código dentro del AT END.
• Para sumar campos dentro del LOOP a la tabla interna del reporte podemos utilizar ADD o SUM.