🚀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

Contre de control: es un a forma de estructurar un reporte de salida por pantalla de modo de poder sumarizar datos y mostrar totales por distintos campos del reporte.

Supongamos que tenemos que generar un reporte de cliente por región y distrito, en donde se muestre por cada regíon y distrito, los clientes existentes juntos con sus importes.

También se desea mostrar el importe total del cliente, el importe total por distrito y el importe total por región.

Luego de aplicar la técnica de corte de control la salida por pantalla del reporte de cliente

A continuación vamos a aprender a implementar los cortes de control en nuestros reportes ABAP.

El paso a paso para implementar uncorte de control:son una técnica, se encuentra compuesta por una serie de pasos que debemos seguir para que funcione correctamente.

Vamos a analizar detalladamente todos los pasos que debemos seguir para implementar cortes de contol.

Para ello vamos a tomar como ejemplo el Reporte de Clientes por Región y Distrito

Lo primero es declarar la tabla interna de salida del reporte. el orden en el que se declaran los campos en la tabla interna va a ser el mismo orden en el que se desea que esos campos se visualicen en pantalla.

Para nuestro reporte de clientes por rehión y distrito declaramos la tabla interna de salida TI_CLIENTES y la estructura o área de trabajo WA_CLIENTES de la siguiente forma:

* Tipo de datos

TYPES: BEGIN OF ty_clientes,

region (10) TYPE c,

distrito (10) TYPE c,

nrocliente (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.

Por una particularidad de ABAP vamos a necesitar declara siempre una estructura auxiliar, cuyo nombre será WA_CLIENTES_AUX, a aparte de la que ya declaramos al momento de declarar la tabla interna.

DATA: wa_clientes_AUX LIKE LINE OF ti_clientes.

Por último, vamos a declarar una variable de tipo I para cada uno de los importes que deseamos sumarizar. es desir, vamos a declarar las variables V_IMPORTE_TOTAL_REGION V_IMPORTE_TOTAL_DISTRITO y V_IMPORTE_TOTAL_CLIENTE.

DATA: v_importe_total_cliente TYPR i,

v_importe_total_distrito TYPE i,

v_importe_total_region TYPE i.

Ahora bien, luego de declarar todas las variables necesarias, vamos primeramente a borrar el contenido de la tabla interna TI_CLIENTES. Para prevenir situaciones erróneas ejecutamos el REFRESH de la tabla interna TI_CLIENTES.

A continuación, vamos a proceder con el llenado del contenido de la tabla interna TI_CLIENTE para ello vamos a cargar cada uno de los registros de datos de la tabla interna completando los campos REGION, DISTRITO, NROCLIENTE e IMPOERTE.

Luego lo que vamos a necesitar es ordenar la tabla interna TI_CLIENTES por los campos por los cuales se van a realizar el corte de control. En este caso tenemos que ordenar por REGION, DISTRITO y NROCLIENTE. Recordemos que si en la ejecución de la sentencia SORT no especificamos el tipo de ordenamiento entonces el mismo por defecto se realizará en forma ascendiente.

*-----------------------------------------------------------------------------*

*Ordenamos la tabla interna

*------------------------------------------------------------------------------*

SORT ti_clientes BY region distrito nrocliente.

A continuacion vamos a recorrer la tabla interna TI_CLIENTES y es aquí dentro de este LOOP-ENDLOOP en donde se realiza el corazon de la técnica de corte de control.

Una vez dentro del LOOP lo primero que vamos a hacer y que es sumamente importante es pasar el contenido de la estructura o área de trabajo WA_CLIENTES a WA_CLIENTES_AUX.

*-----------------------------------------------------------------------------*

*Recorremos la tabla interna

*-----------------------------------------------------------------------------*

LOOP AT ti_clientes INTO wa_clientes.

Copiamos el contenido del rtegistro a una estructura auxiliar

CLEAR wa_clientes_aux.

wa_clientes_aux = wa_clientes.

Para realizar un corte de control, ABAP pone a nuestra disposición dos sentencias que nos facilita el trabajob como programadores.

La sentencia AT NEW campo se ejecuta por cada valor nuevo que se encuentre almacenada en campo. Mira hacia atrás, es descir compara el contenido del campo del registro actual de la tabla interna que se esta procesando contra el cotenido del campo del registro anterior de la tabla interna que se procesó.

  • Si el resultado de esa comparación es que los contenidos de ambos campos son diferente entonces se ejecuta la lógica ABAP que se encuentra dentro del AT NEW.

  • Si el resultado de esa comparación es que los contenidos de ambos campos son iguales entonces no ejecuta la lógica ABAP que se encuentra dentro del AT NEW.
  • Si estamos presentando el primer registro de la tabla interna entonces compara el contenido del campo contra nada y el resultado de esa comparaciíon es que son distintos por lo que se ejecuta la lógica ABAP que se encuentra dentro del AT NEW

Y la sentencia AT END OF campo mira hacia adelante, es decir compara el contenido del campo del registro autual de la tabla interna que se está procesando contra elcontenido del campo del registro siguiente de la tabla interna que todavia no se procesó.

  • Si el resultado de esa comparación es que los contenidos de ambos campos son diferente entonces se ejecuta la lógica ABAP que se encuentra dentro del AT END OF.
  • Si el resultado de esa comparación es que los contenidos de ambos campos son iguales entonces no ejecuta la lógica ABAP que se encuentra dentro del AT END OF.
  • Si estamos presentando el primer registro de la tabla interna entonces compara el contenido del campo contra nada y el resultado de esa comparaciíon es que son distintos por lo que se ejecuta la lógica ABAP que se encuentra dentro del AT END OF.

Si volvemos a nuestro reportes de clientes por región y distrito entnces implementaremos de la siguente forma esta sentencia.

Por cada nueva región vamos a ejecutar un AT NEW REGION y aqie dentro vamos a haceder dos puntos fundamentales que se inicializar la variable V_IMPOTE _TOTAL_REGION que sumariza el importe por región e imprimer la región que estamos procesando.

*--------------------------------------------------------------*

* Por cada nueva región

*--------------------------------------------------------------*

AT NEW region.

clear v_importe_total_region.

FORMAT COLOR 1.

WRITE:/ sy-uline (83).

WRITE:/ 'Región:', wa_clientes_aux_region.

WRITE:/ sy-uline (83).

ENDAT.

Por cada nuevo distrito a ejecutar un AT NEW DISTRITO y aqui dentro vamos a hacer dos puntos fundamentales que son inisializar la variable V_IMPORTE _TOTAL_DISTRITO que sumariza el importe por distrito e imprimir el ditrito que estamos procesando.

*--------------------------------------------------------------*

* Por cada nueva distrito

*--------------------------------------------------------------*

AT NEW distrito.

clear v_importe_total_distrito.

FORMAT COLOR 5.

WRITE:/ 10 'distrito:', wa_clientes_aux_distrito.

ENDAT.

Por cada nuevo número de cliente vamos a ejecutar un AT NEW NROCLIENTE y aqui dentro vamos a inicializar la variable V_IMPORTE_TOTAL_CLIENTE que sumaria el importe por cliente.

*--------------------------------------------------------------*

* Por cada nueva distrito

*--------------------------------------------------------------*

AT NEW distrito.

clear v_importe_total_distrito.

FORMAT COLOR 5.

WRITE:/ 10 'distrito:', wa_clientes_aux_distrito.

ENDAT.

Una vez que se ejecutaron cada uno de los AT NEW entonces fuera de ellos será nesesario sumarizar o acumular cada uno de los importes que mostramos a continuación en el reporte.

* Acumulamos los importes

ADD wa_clientres_aux-importe TO v_importe_total_cliente.

ADD wa_clientres_aux-importe TO v_importe_total_distrito.

ADD wa_clientres_aux-importe TO v_importe_total_region.

Luego vamos a imprimir el total de cliente. esto lo vamos hacer cuando se ejecute el último registro correspondiente al número de cliente que estemos procesamdo.

Para ello vamos a ejecutar la sentencia AT END NROCLIENTE y en caso de ser el último número de cliente se ejecuta la lógica que se encuentra dentro del END OF, que consisste básicamente en imprimir en pantalla el número de cliente y el importe total acumulado por cliente tal como vemos a continueción

*--------------------------------------------------------------*

* Imprimimos total por cliente

*--------------------------------------------------------------*

AT END OF nrocliente.

FORMAT COLOR 3.

WRITE:/ 30 'cliente:', wa_clientes_aux_nrocliente,

50 'Importe Toltal Clientes', v_importe_total_cliente.

ENDAT.

Luego vamos a imprimir el total por distrito. esto lo vamos hacer cuando se ejecuta el último registro corespondiente al distrito que estamos procesando.

Para ello vamos a ejecutar la sentencia AT AND OF DISTRITO y en caso de ser el último distrito se ejecutará la lágica que se encientra dentro del AT END OF, que consiste básicamente en imprimir en pantalla el importe total acumulado por distrito tal como vemos a continuación.

*--------------------------------------------------------------*

* Inprimimos todo por distrito

*--------------------------------------------------------------*

AT END OF distrito.

FORMAT COLOR 5.

WRITE:/ 10 'Importe Total distrito', v_importe_total_distrito.

ENDAT.

Y por último vamos a imprimir el total por región. esto lo vamso hacer cuando se ejecute el último registro correspondiente a la región que estamos procesando.

Para ello vamos a ejecutar la sentencea del AT END OF, que consiste básicamente en imprimir en pantalla el importe total aculado por región tal como vamos a continuación:

*--------------------------------------------------------------*

* Inprimimos todo por region

*--------------------------------------------------------------*

AT END OF region.

FORMAT COLOR 1.

WRITE:/ 'Importe Total region', v_importe_total_region.

ENDT.

ENDLOOP.


 

 

 


Sobre el autor

Publicación académica de Javier Miguel Angel Barcelo, en su ámbito de estudios para la Carrera Consultor ABAP.

Javier Miguel Angel Barcelo

Profesión: Militar - Argentina - Legajo: DQ34X

✒️Autor de: 29 Publicaciones Académicas

🎓Cursando Actualmente: Consultor ABAP Nivel Inicial

Certificación Académica de Javier Angel

✒️+Comunidad Académica CVOSOFT

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

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

Lección 2/9: Cortes de Control utilizando tablas internas La técnica de corte de control es utilizada cuando se presenta la necesidad de ordenar la tabla interna de salida del reporte, de una determinada manera donde se agrupen los datos a mostrar en la pantalla. Una condición esencial que presentan los cortes de control es que la tabla de salida del reporte debe ordenarse por los campos por los cuales se va a realizar el corte. Es indispensable utilizar una estructura auxiliar para almacenar los datos 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...

Acceder a esta publicación

Creado y Compartido por: Ruben Santiago Cuenca Balanza / Disponibilidad Laboral: FullTime + Carta Presentación

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

SAP Senior

CORTES DE CONTROL UTILIZANDO TABLAS INTERNAS Corte de control: es una forma de estructurar un reporte de salida de modo de poder sumarisar datos y mostrar totales por distintos campos del reporte. Una condicion esencial que presentan los cortes de control es que la tabla de salida del reporte debe ordenarse por los campos por los cuales se va a realizar el corte de control. Es indispensable utilizar una estructura auxiliar para almacenar los datos del registro de la tabla interna del reporte, ya que ABAP completara con asteriscos los campos que se encuentren a la derecha a la derecha del campo por el cual realizamos el corte y se perdera la informacion almacenada en ello. Principalmente vamos a utilizar las sentencias ADD NEW y ADD END. La...

Acceder a esta publicación

Creado y Compartido por: Miguel Ochoa

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

SAP SemiSenior

Resumen Lección: 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 ordenarse por los campos por los cuales se va a realizar el cortes de control. Es indispensable utilizar una estructura auxiliar para almacenar los datos del registro de la tabla interna del reporte, ya que, ABAP completara con astericos los campos que se encuentren a la derecha del campos por el cual realizamos el corte y se perderá la información almacenada en ellos. Principalmente vamos a utilizar las...

Acceder a esta publicación

Creado y Compartido por: Alexander José Tovar Rodríguez

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

SAP Senior

Cortes de control utilizando tablas internas. Los cortes de control es una forma de estructurar un reporte de salida en el que acumular datos de distintos campos. Condición. La tabla de salida debe ordenarse por los campos que se va a realizar el corte de control. Se debe utilizar una estructura auxiliar para almacenar los datos del registro de la tabla interna ya que ABAP completará con asteriscos los campos que se encuentren a la derecha por el cual se esta realizando el corte de control. Sentencias usadas en los cortes de control. AT NEW. esta compara el valor actual del campo con el anterior, si son distintos se procesa el código que se encuentra dentro del AT NEW. AT END. esta compara el valor actual del campo con...

Acceder a esta publicación

Creado y Compartido por: Carlos Rodriguez Escudero / Disponibilidad Laboral: FullTime

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

SAP SemiSenior

Unidad 3. Lección 2: Cortes de Control utilizando tablas internas. Uno corte de control es una forma de estructura, un reporte de salida que sumariza datos y mostrar totales por distintos campos del reporte. Una condición especial que presentan los cortes de control es que la tabla de salida del reporte debe ordenarse por los campos por los cuales se va a realizar el corte de control. Es indispensable utilizar una estructura auxiliar para almacenar los datos 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 de control y se perderá la información almacenada en ello. Principalmente se emplean...

Acceder a esta publicación

Creado y Compartido por: Kelly Rocio Nino Ramirez

 


 

👌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!