✒️ABAP / Los cortes de control utilizando tablas internas Por Jaime Gomez Arango

Selector Alummnos / Empresas

ABAP Los cortes de control utilizando tablas internas

ABAP Los cortes de control utilizando tablas internas

Control Breaks - Internal Tables

Definition of Control Break:

A control break is a technique used to structure a screen output report in order to summarize data and display totals for different fields in the report.

Implementation Steps for a Control Break:

Control breaks are a technique composed of several steps for correct functionality. Taking the example of the "Customer Report by Region and District"

  • The initial step is to declare the internal output table for the report.


TYPES: BEGIN OF ty_customer,
region(10) TYPE c,
district(10) TYPE c,
customer_no(5) TYPE c,
amount TYPE i,
END OF ty_customer.

DATA: it_customers TYPE STANDARD TABLE OF ty_customer,
wa_customer LIKE LINE OF it_customers.


  • Declaration of Auxiliary Structure: Due to an ABAP specificity, an auxiliary structure, named wa_customers_aux, needs to be declared.

DATA: wa_customer_aux LIKE LINE OF it_customers.


  • Declaration of Summation Variables: Variables of type I are declared for each amount to be summarized.

DATA: v_total_amount_customers TYPE i,
v_total_amount_district TYPE i,
v_total_amount_region TYPE i.

  • Table Initialization and Population: As a programming best practice, the internal table is cleared to ensure no content errors. After this, the table is filled with content.

REFRESH it_customers.
CLEAR it_customers.

wa_customer-region = 'CAPITAL'.
wa_customer-district = 'Caballito'.
wa_customer-customer_no = '00001'.
wa_customer-amount = 30.

APPEND wa_customer TO it_customers.

  • Sorting the Internal Table: The internal table it_customers needs to be sorted based on the fields used for the control break: REGION, DISTRICT, and CUSTOMER_NO.

SORT it_customers BY region district customer_no.

  • Control Break Technique Implementation: Within a LOOP-ENDLOOP construct, the core of the control break technique is executed. It involves copying the content of the wa_customers structure to wa_customers_aux.

LOOP AT it_customers INTO wa_customer.
CLEAR wa_customer_aux.
wa_customer_aux = wa_customer.

ENDLOOP.


  • AT NEW and AT END OF Statements: ABAP provides two statements, AT NEW and AT END OF, for control breaks. AT NEW is executed for each new value in the field, while AT END OF is executed when processing the last record with a specific field value.
AT NEW district.
CLEAR v_total_amount_district.
FORMAT COLOR 5.
WRITE:/ sy-uline(83).
WRITE:/ 'District:', wa_customer_aux-district.
WRITE:/ sy-uline(83).
ENDAT.

AT END OF district.
FORMAT COLOR 5.
WRITE:/10 'Total Amount District', v_total_amount_district.
ENDAT.

  • Total Calculation and Printing: For each new region, district, and customer number, AT NEW statements are executed to initialize corresponding total variables. Then, the accumulated totals are printed.

AT END OF district.
FORMAT COLOR 5.
WRITE:/10 'Total Amount District', v_total_amount_district.
ENDAT.

Summary:

Control breaks involve declaring structures, initializing variables, populating tables, implementing sorting, and utilizing AT NEW and AT END OF statements for effective control break implementation in ABAP.

E.g

* Structure type for customers
TYPES: BEGIN OF ty_customers,
region(10) TYPE c,
district(10) TYPE c,
customer_no(5) TYPE c,
amount TYPE i,
END OF ty_customers.

* Internal tables and structures
DATA: it_customers TYPE STANDARD TABLE OF ty_customers,
wa_customers LIKE LINE OF it_customers,
wa_customers_aux LIKE LINE OF it_customers.

* Accumulation flag
DATA: v_total_amount_accumulated TYPE i.

*----------------------------------------------------------------------*
START-OF-SELECTION.
*----------------------------------------------------------------------*

*----------------------------------------------------------------------*
* Adding records to the internal table
*----------------------------------------------------------------------*
CLEAR wa_customers.
wa_customers-region = 'CAPITAL'.
wa_customers-district = 'Caballito'.
wa_customers-customer_no = '00001'.
wa_customers-amount = 30.
APPEND wa_customers TO it_customers.

CLEAR wa_customers.
wa_customers-region = 'CAPITAL'.
wa_customers-district = 'Caballito'.
wa_customers-customer_no = '00700'.
wa_customers-amount = 1000.
APPEND wa_customers TO it_customers.

CLEAR wa_customers.
wa_customers-region = 'CAPITAL'.
wa_customers-district = 'Caballito'.
wa_customers-customer_no = '00705'.
wa_customers-amount = 10000.
APPEND wa_customers TO it_customers.

CLEAR wa_customers.
wa_customers-region = 'CAPITAL'.
wa_customers-district = 'Flores'.
wa_customers-customer_no = '00005'.
wa_customers-amount = 90.
APPEND wa_customers TO it_customers.

CLEAR wa_customers.
wa_customers-region = 'CAPITAL'.
wa_customers-district = 'Flores'.
wa_customers-customer_no = '00122'.
wa_customers-amount = 900.
APPEND wa_customers TO it_customers.

CLEAR wa_customers.
wa_customers-region = 'CAPITAL'.
wa_customers-district = 'Palermo'.
wa_customers-customer_no = '00011'.
wa_customers-amount = 120.
APPEND wa_customers TO it_customers.

CLEAR wa_customers.
wa_customers-region = 'CAPITAL'.
wa_customers-district = 'Palermo'.
wa_customers-customer_no = '00111'.
wa_customers-amount = 1200.
APPEND wa_customers TO it_customers.

CLEAR wa_customers.
wa_customers-region = 'CAPITAL'.
wa_customers-district = 'Belgrano'.
wa_customers-customer_no = '00012'.
wa_customers-amount = 20.
APPEND wa_customers TO it_customers.

CLEAR wa_customers.
wa_customers-region = 'CAPITAL'.
wa_customers-district = 'Belgrano'.
wa_customers-customer_no = '05512'.
wa_customers-amount = 2000.
APPEND wa_customers TO it_customers.

CLEAR wa_customers.
wa_customers-region = 'CAPITAL'.
wa_customers-district = 'Caballito'.
wa_customers-customer_no = '00001'.
wa_customers-amount = 70.
APPEND wa_customers TO it_customers.

CLEAR wa_customers.
wa_customers-region = 'AVELLANEDA'.
wa_customers-district = 'Sur'.
wa_customers-customer_no = '00022'.
wa_customers-amount = 30.
APPEND wa_customers TO it_customers.

CLEAR wa_customers.
wa_customers-region = 'AVELLANEDA'.
wa_customers-district = 'Sur'.
wa_customers-customer_no = '00100'.
wa_customers-amount = 3000.
APPEND wa_customers TO it_customers.

CLEAR wa_customers.
wa_customers-region = 'AVELLANEDA'.
wa_customers-district = 'Sur'.
wa_customers-customer_no = '00099'.
wa_customers-amount = 6000.
APPEND wa_customers TO it_customers.

CLEAR wa_customers.
wa_customers-region = 'AVELLANEDA'.
wa_customers-district = 'Norte'.
wa_customers-customer_no = '00029'.
wa_customers-amount = 190.
APPEND wa_customers TO it_customers.

CLEAR wa_customers.
wa_customers-region = 'AVELLANEDA'.
wa_customers-district = 'Norte'.
wa_customers-customer_no = '00029'.
wa_customers-amount = 190.
APPEND wa_customers TO it_customers.

CLEAR wa_customers.
wa_customers-region = 'AVELLANEDA'.
wa_customers-district = 'Norte'.
wa_customers-customer_no = '00301'.
wa_customers-amount = 500.
APPEND wa_customers TO it_customers.

CLEAR wa_customers.
wa_customers-region = 'QUILMES'.
wa_customers-district = 'Centro'.
wa_customers-customer_no = '00084'.
wa_customers-amount = 300.
APPEND wa_customers TO it_customers.

CLEAR wa_customers.
wa_customers-region = 'QUILMES'.
wa_customers-district = 'Ezpeleta'.
wa_customers-customer_no = '00172'.
wa_customers-amount = 50.
APPEND wa_customers TO it_customers.

*----------------------------------------------------------------------*
* Sorting the internal table
*----------------------------------------------------------------------*
SORT it_customers BY region district customer_no.

*----------------------------------------------------------------------*
* Looping through the internal table
*----------------------------------------------------------------------*
LOOP AT it_customers INTO wa_customers.

* Copying the content of the record to an auxiliary structure
CLEAR wa_customers_aux.
wa_customers_aux = wa_customers.

*----------------------------------------------------------------------*
* For each new customer
*----------------------------------------------------------------------*
AT NEW region.
CLEAR v_total_amount_accumulated.
FORMAT COLOR 1.
WRITE:/ sy-uline(55).
WRITE:/ 'Region:', wa_customers_aux-region.
WRITE:/ sy-uline(55).
ENDAT.

AT NEW district.
FORMAT COLOR 5.
WRITE:/ 'District:', wa_customers_aux-district.
ENDAT.

AT NEW customer_no.
CLEAR v_total_amount_accumulated.
ENDAT.

* Accumulating the amount
ADD wa_customers_aux-amount TO v_total_amount_accumulated.

*----------------------------------------------------------------------*
* Printing detail titles
*----------------------------------------------------------------------*
AT END OF customer_no.
FORMAT COLOR 3.
WRITE:/10 'Customer:', wa_customers_aux-customer_no,
30 'Total Amount', v_total_amount_accumulated.
ENDAT.
ENDLOOP.

WRITE:/ sy-uline(55).


 

Escanear / Compartir

 

 


Sobre el autor

Publicación académica de Jaime Eduardo Gomez Arango, en su ámbito de estudios para la Carrera Consultor ABAP Nivel Inicial.

SAP Expert


Jaime Eduardo Gomez Arango

Profesión: Ingeniero de Sistemas y Computación - España - Legajo: SW34C

✒️Autor de: 149 Publicaciones Académicas

🎓Egresado de los módulos:

Disponibilidad Laboral: FullTime

Presentación:

Ingeniero de sistemas y computación con 8 años de experiencia el desarrollo frontend & backend (react/node) y en cloud (aws), actualmente desarrollando habilidades en sap btp, ui5, abap y fiori.

Certificación Académica de Jaime Gomez

✒️+Comunidad Académica CVOSOFT

Continúe aprendiendo sobre el tema "Los cortes de control utilizando tablas internas" de la mano de nuestros alumnos.

SAP Expert


1. Concepto y Utilidad Un corte de control es una técnica utilizada para estructurar y formatear la salida de un reporte. Su objetivo principal es organizar los datos en pantalla, permitiendo agrupar información, sumarizar campos y mostrar totales o subtotales por distintos criterios (por ejemplo, totales por cliente, distrito o región),. 2. Requisitos Previos (Preparación) Para implementar un corte de control correctamente, se deben seguir ciertos pasos antes de procesar los datos: Estructura de la tabla: La tabla interna de salida debe declararse con los campos en el mismo orden en que se desean visualizar y agrupar. Estructura auxiliar: Es necesario declarar una estructura o área de trabajo auxiliar...

Acceder a esta publicación

Creado y Compartido por: Gabriel José Luces González

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

Los cortes de control utilizando tablas internas 1|¿Qué es un Corte de control? Tal como vimos anteriormente de una de las tareas que más vamos a realizar como programadores ABAP es la confección de reportes de salida por pantalla. Para realizar estos reportes vamos a trabajar con tablas internas, ya que de esta forma podremos almacenar los registros que obtenemos de las tablas base de datos o cargar manualmente los registros de datos que surgen del procesamiento del programa y luego vamos a estructurar y formatear los datos que se mostrarán como salida del programa. Cuando hablamos de estructura y formatear nos referimos a organizar la salida de los datos en la pantalla, dándoles un formato determinado,...

Acceder a esta publicación

Creado y Compartido por: Felipe De Jesus Arrona Rodriguez

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master


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,...

Acceder a esta publicación

Creado y Compartido por: Juan Ignacio Romero

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

Tal como vimos anteriormente una de las tareas que más vamos a realizar como programadores ABAP es la confección de reportes de salida por pantalla. Para realizar estos reportes vamos a trabajar con tablas internas, ya que de esta forma podremos almacenar los registros que obtenemos de las tablas base de datos o cargar manualmente los registros de datos que surgen del procesamiento del programa y luego vamos a estructurar y formatear los datos que se mostrarán como salida del programa. Cuando hablamos de estructurar y formatear nos referimos a: organizar la salida de los datos en la pantalla, dándoles un formato determinado, agrupando los campos de salida, ordenando el reporte por determinados campos, sumarizando...

Acceder a esta publicación

Creado y Compartido por: Mara Fadua Romero Hernandez

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Master

Introducción: Los cortes de control son una técnica esencial para estructurar reportes ABAP, permitiendo agrupar datos por campos clave (ej: región, distrito) y calcular totales parciales. ¡Convierte tus listados en informes profesionales con resúmenes jerárquicos! 1. ¿Qué es un Corte de Control? Definición: Mecanismo que divide un reporte en grupos basados en campos, calculando totales por cada grupo. Funcionalidad: Agrupa registros por campos específicos (ej: región → distrito → cliente). Genera totales parciales y generales automáticamente. Ejemplo:...

Acceder a esta publicación

Creado y Compartido por: Oscar Aravena Muller / Disponibilidad Laboral: FullTime

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Junior

1 | ¿Qué es un Corte de control? Tal como vimos anteriormente una de las tareas que más vamos a realizar como programadores ABAP es la confección de reportes de salida por pantalla. Para realizar estos reportes vamos a trabajar con tablas internas, ya que de esta forma podremos almacenar los registros que obtenemos de las tablas base de datos o cargar manualmente los registros de datos que surgen del procesamiento del programa y luego vamos a estructurar y formatear los datos que se mostrarán como salida del programa. Cuando hablamos de estructurar y formatear nos referimos a: organizar la salida de los datos en la pantalla, dándoles un formato determinado, agrupando los campos de salida, ordenando el...

Acceder a esta publicación

Creado y Compartido por: Gustavo Jose Rondon Hernandez / Disponibilidad Laboral: FullTime + Carta Presentación

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert


Los cortes de control utilizando tablas internas 1 Qué es un corte de control Un corte de control en ABAP es una técnica que permite agrupar y procesar datos similares dentro de una tabla interna ordenada, ejecutando determinadas acciones cuando el valor de un campo clave cambia. Finalidad: Es muy útil en la generación de reportes agrupados, por ejemplo, informes por cliente, por proveedor o por fecha. Permite realizar subtotales, encabezados intermedios o contadores cada vez que el valor del campo de control cambia. Funcionamiento: La tabla interna debe estar ordenada previamente con SORT por el campo que se desea controlar. Se utiliza un LOOP AT con bloques específicos...

Acceder a esta publicación

Creado y Compartido por: Geovanny Martínez Campoverde

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Expert



Los cortes de control utilizando tablas internes En SAP ABAP, los cortes de control (control breaks) se utilizan comúnmente en la programación de reportes cuando se trabaja con tablas internas ordenadas, especialmente en bucles LOOP AT. Estos cortes permiten ejecutar operaciones específicas cuando hay un cambio en el valor de un campo clave dentro de la tabla. Por ejemplo, se puede usar AT NEW, AT END OF o AT LAST para agrupar datos, calcular subtotales o generar encabezados y totales por grupo. Para que los cortes de control funcionen correctamente, la tabla interna debe estar ordenada previamente por los campos relevantes. Esta técnica facilita la generación de reportes estructurados, agrupados y con cálculos...

Acceder a esta publicación

Creado y Compartido por: David Ibarra / Disponibilidad Laboral: FullTime + Carta Presentación

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Senior

Los cortes de control utilizando tablas internas 1. Qué es un corte de control? Una de las tareas que más vamos a realizar como programadores ABAP es la confección de reportes de salida por pantalla. Para realizar estos reportes vamos a trabajar con tablas internas, ya que de esta forma podremos almacenar los registros que obtenemos de las tablas bases de datos o cargar manualmente los registros de datos que surgen del procesamiento del programa y luego vamos a estructurar y formatear los datos que se mostrarán como salida del programa. Cuando hablamos de estructurar y formatear nos referimos a: organizar la salida de los datos en la pantalla, dándoles un formato determinado, agrupando los campos de salida,...

Acceder a esta publicación

Creado y Compartido por: Yeny Gisela Yanes Bautista

*** CVOSOFT - Nuestros Alumnos - Nuestro Mayor Orgullo como Academia ***

SAP Junior

Los Cortes de Control Utilizando Tablas Internas Es una forma de estructurar un reporte de salida por pantalla de modo de poder sumarizar datos mostrar totales por distintos campos del reporte. Los Cortes de Control en definitiva son una toda una técnica, se encuentra compuesta por una serie de pasos que debemos seguir para que funcione correctamente. Para realizar un Corte de Control, ABAP pone a nuestra disposición dos sentencias que nos facilita el trabajo como programadores. La sentencia AT NEW campo, que se ejecuta por cada nuevo valor que se encuentre almacenado en campo. La sentencia mira hacia atrás, es decir, compara el contenido del campo del registro actual de la tabla interna que se está procesando contra...

Acceder a esta publicación

Creado y Compartido por: Carvajal Encina Franco Erasmo / Disponibilidad Laboral: FullTime

 


 

👌Genial!, estos fueron los últimos artículos sobre más de 99.000 publicaciones académicas abiertas, libres y gratuitas compartidas con la comunidad, para acceder a ellas le dejamos el enlace a CVOPEN ACADEMY.

🔎Buscador de Publicaciones:

 


 

No sea Juan... Solo podrá llegar alto si realiza su formación con los mejores!