✒️ABAP / Los cortes de control utilizando tablas internas Por Candela Calzada

Selector Alummnos / Empresas

ABAP Los cortes de control utilizando tablas internas

ABAP Los cortes de control utilizando tablas internas

Unidad n°3: el diccionario de datos
Lección n°2: Los cortes de control usando tablas internas (ti)

Corte de control:

Es la forma de estructurar un reporte de salida por pantalla de modo de poder sumarizar datos y mostrar totales por distintos campos del reporte.
Para hacer estos reportes trabajaremos con ti, para almacenar los registros que obtengamos de las tablas base de datos o cargar manualmente los registros de datos que surjan. Luego vamos a estructurar y formatear los datos que se mostrarán como salida del programa.

Estructurar y formatear será la forma de organizar la salida de los datos en la pantalla, dándoles un formato determinado, agrupando los campos de salida, etc.


Paso a paso para implementar un corte de control:

Para esto, tomaremos como ejemplo el Reporte de Clientes por Región y Distrito:

  1. Declarar la ti "ti_clientes" de salida del reporte. Tendrá una particularidad esta tabla y es que estará compuesta por cada uno de los campos que se desean incluir en el reporte de salida y el orden en el que se declaran los campos en la ti será el mismo en el que se desea que esos campos se vean por pantalla. Su wa será "wa_clientes":
    "Tipos de datos:
    TYPES: BEGIN OF ty_clientes,
    region(10) TYPE c,
    distrito(10) TYPE c,
    numcliente(5) TYPE c,
    importe TYPE i,
    END OF ty_clientes.

    "Tabla interna y estructura
    DATA: ti_clientes TYPE STANDARD TABLE OF ty_clientes,
    wa_clientes LIKE LINE OF ti_clientes

  2. Por una particularidad de ABAP, debemos declarar siempre una estructura auxiliar "wa_clientes_aux", a parte de la que ya declaramos al momento declarar la ti:
    DATA: wa_clientes_aux LIKE LINE OF ti_clientes.
  3. Declarar la variable de tipo i para cada importe que deseamos sumarizar, es decir, declararemos las variables:
    DATA: v_importe_total_cliente TYPE i,
    v_importe_total_distrito TYPE i,
    v_importe_total_region TYPE i.
  4. Ahora hay que borrar el contenido de la ti "ti_clientes" con REFRESH, se hace ya que a pesar de que no hayamos llenado los registros, podrían quedar con basura en memoria de ejecuciones anteriores.
  5. Llenaremos la ti cargando cada registro completando los campos; región, distrito, num. cliente e importe:
    REFRESH ti_clientes.

    CLEAR wa_clientes.
    wa_clientes-region = 'CAPITAL'.
    wa_clientes-distrito = 'Caballito'.
    wa_clientes-numcliente = '000001'.
    wa_clientes-importe = 30.
    APPEND wa_clientes TO ti_clientes.

    CLEAR wa_clientes.
    wa_clientes-region = 'CAPITAL'.
    wa_clientes-distrito = 'Caballito'.
    wa_clientes-numcliente = '00700'.
    wa_clientes-importe = 1000.
    APPEND wa_clientes TO ti_clientes.
  6. Ordenar la ti por los campos por los que se hará el corte de control (por región, distrito y num cliente). Recordemos que si usamos la sentencia SORT no especificamos el ordenamiento, por ende se ordenará ascendientemente:
    SORT ti_cliente BY region distrito numcliente.
  7. Recorreremos la ti y es donde el LOOP-ENDLOOP se hará el corte de control. Una vez dentro del LOOP, primero hay que pasar el contenido de la wa "wa_clientes" a "wa_clientes_aux".
  8. Para hacer el corte de control podemos usar:

    Sentencia AT NEW "AT NEW campo. ... ENDAT." Que se ejecuta por cada valor nuevo que se encuentra almacenado en el campo. Esta sentencia compara el contenido del campo del registro actual con el anterior de la ti que se procesó
    Si el resultado de la comparación es que los contenidos son diferentes, se ejecuta la lógica que está dentro del AT NEW.
    Si el resultado es que el contenido de ambos son iguales, no se ejecuta la lógica que está dentro del AT NEW.
    Si estamos procesando el 1er registro de la ti, entonces compara el contenido del campo contra nada y el resultado de esa comparación es que son distintos, por ende se ejecuta la lógica del AT NEW.

    Sentencia AT END OF (AT END OF campo. ... ENDAT.):se ejecuta cuando se está procesando el último registro que tenga almacenado un valor de campo. La sentencia compara el contenido del campo del registro actual de la ti contra el contenido del campo del registro siguiente de la ti que no se procesó.
    Si el resultado de la comparación es que ambos campos son diferentes, se ejecuta la lógica del AT END OF.
    Si el resultado de la comparación es que ambos campos son iguales, no se ejecuta la lógica.
    Si se está procesando el último registro de la ti, entonces compara el contenido del campo contra nada y el resultado de esa comparación es que son distintos por loq ue se ejecuta la lógica.
  9. Por cada nueva región a ejecutar un AT NEW REGION, inicializaremos la variable "v_importe_total_region" que sumariza el importe x región e imprimir la región que es procesada:
    AT NEW region.

    CLEAR v_importe_total_region.
    FORMAT COLOR 1.

    WRITE:/ sy-uline(83).
    WRITE:/ 'Region', wa_clientes_aux-region.
    WRITE:/ sy-uline(83).

    ENDAT.
  10. Para cada nuevo distrito ejecutaremos un AT NEW DISTRITO e inicializaremos la variable "v_importe_total_distrito" (sumariza e importa por distrito e imprime el distrito que estamos procesando).
    AT NEW

    CLEAR v_importe_total_distrito.
    FORMAT COLOR 5.
    WRITE:/10 'Distrito:' wa_clientes_aux-distrito.

    ENDAT.
  11. Por cada nuevo num de cliente ejecutaremos un "AT NEW numcliente" e inicializaremos la variable "v_importe_total_cliente" que sumariza el importe x cliente:
    AT NEW

    CLEAR v_importe_total_cliente.

    ENDAT.
  12. Fuera de los AT NEW hay que sumarizar o acumular cada importe que mostraremos en el reporte:
    ADD wa_clientes_aux-importe TO v_total_cliente.
    ADD wa_clientes_aux-importe TO v_total_distrito.
    ADD wa_clientes_aux-importe TO v_total_region.
  13. Imprimir el total por cliente, usando AT END OF NUMCLIENTE y en caso de ser el último núm. de cliente, se ejecutará la lógica que está dentro del AT END OF (que es imprimir en pantalla el núm de cliente y el importe total acumulado x cliente):
    AT END OF numcliente.

    FORMAT COLOR 3.
    WRITE:/30 'Cliente:', wa_clientes_aux-numcliente.
    50 'Importe total cliente', v_importe_total_cliente.
    ENDAT.
  14. Imprimir el total por distrito, cuando el último registro del distrito se ejecute. Para ello usaremos AT END OF DISTRITO. En caso de ser el último, se ejecutará la lógica que se encuentra dentro del AT END OF (imprimir en pantalla el importe total acumulado por distrito):
    AT END OF distrito.

    FORMAT COLOR 5.
    WRITE:/10 'Importe total distrito:', v_importe_total_cliente.

    ENDAT.
  15. Imprimir el total por región, cuando se ejecute el último registro correspondiente a la región que estamos procesando. Usaremos AT END OF REGION; en caso de ser la última, se ejecutará la lógica que está dentro del AT END OF (imprimir por pantalla el importe total acumulado x region):
    AT END OF region.

    FORMAT COLOR 1.
    WRITE:/ 'Importe total region:', v_importe_total_region.

    ENDAT.

    ENDLOOP.

 

Escanear / Compartir

 

 


Sobre el autor

Publicación académica de Candela Calzada, en su ámbito de estudios para el Curso SAP ABAP.

SAP Expert


Candela Calzada

Profesión: Técnica Electrónica - Argentina - Legajo: JW91W

✒️Autor de: 160 Publicaciones Académicas

🎓Cursando Actualmente: Curso SAP ABAP Avanzado

🎓Egresado de los módulos:

Disponibilidad Laboral: FullTime

Presentación:

Me encuentro estudiando la ingeniería en sistemas de información. poseo amplia experiencia en edición de videos. tengo bases entorno a la programación que quiero continuar consolidando.

Certificación Académica de Candela Calzada

✒️+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!