🚀PROMO #PLANCARRERA2024 - 🔥Bonificaciones, Precios Congelados y Cuotas

 X 

✒️ABAP Los cortes de control utilizando tablas internas

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


 

 

 


Sobre el autor

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

SAP Master

Jaime Eduardo Gomez Arango

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

✒️Autor de: 105 Publicaciones Académicas

🎓Cursando Actualmente: Consultor ABAP Nivel Avanzado

🎓Egresado del módulo:

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 SemiSenior

Cortes de control con tablas internas. Puedo realizar el corte segun el acumulado que desee realizar muy util. utilizando sentencias at.

Acceder a esta publicación

Creado y Compartido por: Christian Camilo Alzate Duque

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

SAP Master


LECCION 2. UNIDAD 3. CORTES DE CONTROL UTILIZANDO TABLAS INTERNAS. Abap cortes de control utilizando tablas internas: cuando se trabaja realizando reportes, se puede presentar la necesidad de ordenar la tabla interna de salida del reporte, de una determinada forma en donde se agrupen los datos a mostrar en la pantalla. Para realizar cortes de control se utilizan las sentencias que se relacionan a continuación: AT NEW: esta sentencia comparara el actual valor del campo con el valor anterior, en caso de ser distintos entonces se procesara el código dentro del AT NEW. AT END: esta sentencia comparara el actual valor del campo con el valor siguiente, es decir el que se encuentra en la proxima vuelta de la tabla interna. En caso de...

Acceder a esta publicación

Creado y Compartido por: Jose Dario Angel Vanegas

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

SAP Expert


En ABAP, los cortes de control utilizando tablas internas son una técnica útil para organizar y resumir datos de manera jerárquica o agrupada. Los cortes de control permiten realizar cálculos o análisis específicos en grupos de datos y mostrar los resultados de manera estructurada. Esta técnica es comúnmente utilizada para generar informes o listados que presentan datos de manera organizada y resumida.Final del formulario Los cortes de control utilizando tablas internas en ABAP son una técnica poderosa para organizar y resumir datos de manera eficiente. Esta técnica permite generar informes y análisis más legibles y comprensibles, especialmente cuando se manejan...

Acceder a esta publicación

Creado y Compartido por: Darling Geraldino

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

SAP SemiSenior

Cortes de control utilizando tablas internas. En este ejemplo ilustran la manera de hacer cortes de control los pasos a seguir son. 1. Cargar tabla interna con distintos registros. 2. Ordenar la tabla interna según orden que se quiere que se visualicen los datos. 3. Recorrer la tabla para realizar listado. 4. Dentro del LOOP se deben pasar los datos que se están recorriendo a una estructura auxiliar. 5. AT NEW compara los campos por los cuales se desea realizar el corte de control. 6. Se acumulan los valores por los cuales se quieren sumar, contar. 7. Para la impresión de los datos se utiliza la sentencia AT END seguida del campo por el cual se realiza el corte.

Acceder a esta publicación

Creado y Compartido por: Fabio Gallo

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

SAP Master

CORTES DE CONTROL UTILIZANDO TABLAS INTERNAS Estructura un reporte, de modo de poder sumarizar datos y mostrarlos por distintos campos del reporte, proceso. Cargar las tablas internas con distintos registros Ordenar las tablas Recorrer las tablas para visualizar el listado Para realizar el corte de control por cliente utilizamos las siguientes sentencias: AT NEW <campo>. Compara el actual numero del cliente con el anterior, si son distintos el codigo se procesa dentro del AT NEW AT END <campo>. Compara el actual numero del cliente con el siguiente, si son distintos se procesa el codigo dentro del AT END NOTA: Para sumarizar campos dentro del LOOP a la tabla interna del reporte utilizamos la sentencia ADD o...

Acceder a esta publicación

Creado y Compartido por: Ixhel Magai Lopez Valencia / Disponibilidad Laboral: PartTime + Carta Presentación

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

SAP Master

video para crear cortes de control utilizndo tablas internas. con la sentencia AT NEW se realiza el corte de control.

Acceder a esta publicación

Creado y Compartido por: Rainer Diaz

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

SAP Senior

1. CORTES DE CONTROL UTILIZANDO TABLAS INTERNAS EN REPORTES Un corte de control es una forma de estructurar un reporte de salida de modo que se puede sumar y mostrar datos totales por los distintos campos del reporte Condición Escencial: Primero deben ordenarse los campos por los cuales se hara el corte de control. Es indispensable, crear una estructura auxiliar para almacenar los datos del registro de la tabla interna del reporte ya que abap completa con (*) los campos que se encuentren a la derecha de los campos donde se hizo el corte y se perderá la información almacenada At new y At end

Acceder a esta publicación

Creado y Compartido por: Javier Mirabal

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

SAP Expert


Cortes de control en tablas internas Son agrupaciones en el procesamiento de las tablas internas, donde es necesario definir el orden para la generación de la salida esperada, para ello podemos utilizar las siguientes sintaxis: AT FIRST/ENDAT - Que realice el primer corte AT LAST/ENDAT - Que realice el corte al final del corte AT NEW/ENDAT - Que realice el corte cada vez que inicie un valor (valor que necesitemos diferenciar) AT END/ENDAT - Que realice el corte al final de un valor (valor que necesitemos diferenciar) al realizar el recorrido se debe asignar a una area de trabajo temporal, para evitar que se reemplace la información con asteriscos o bien utilizando FIELD-SYMBOLS.

Acceder a esta publicación

Creado y Compartido por: Marvin Raul Lopez Morales / Disponibilidad Laboral: FullTime + Carta Presentación

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

SAP Senior

Unidad 3 - 2 - Cortes de control utilizando tablas internas en reportes. Los cortes de control son utilizados para la generacion e listados, utilizando la sentencia AT. **Antes de realizar el corto de control dentro de un loop. Debemos pasar los datos que se estan recorriendo a una estructura auxiliar.. Esto se debe a que ABAP complete con * todos los campos a la derecha del campo por el cual realizamos el corte.corte. AT NEW: INternamente compara el actual campo con el valr anterior. Si estos son disitntos entonces se preocesa el codigo que esta dentro del AT NEW. AT END: para realizar la impresion de los datos, utilizamos la sentencia AT END. Intermente compara el campo actual con el proximo, si estos son disitintos entonces se procesara...

Acceder a esta publicación

Creado y Compartido por: Matias Ciutat

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

SAP Senior

Cortes de control utilizando tablas internas en reportes. Veremos como realizar corte de control a una tabla interna para poder imprimir un listado por pantalla. una tabla interna con Registro de clientes que incluyen un importe entre los campos. Y queremos obtener un listado de clientes donde se muestre una solo linea el total por clientes. En este caso se realizaría un corte de control por cada nuevo cliente y un corte para imprimir los resultados. Cargar tabla de clientes con diferentes registros. Abap completa con asteriscos todos los campos a la derecha del campo por el cual hacemos el corte. Sentencia AT NEW= compara el actual numero de cliente con el anterior numero de cliente. en caso de ser distintos se procederá....

Acceder a esta publicación

Creado y Compartido por: Rafael Razo

 


 

👌Genial!, estos fueron los últimos artículos sobre más de 79.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!