✒️ABAP Los cortes de control utilizando tablas internas
ABAP Los cortes de control utilizando tablas internas
3.2. - Cortes de control utilizando tablas internas en reportes
Generación de cortes de control para la generación de listados, utilizando las sentencias “AT”.
En una tabla interna con registros de clientes, en el que hay un importe entre sus campos y se requiere un listado de clientes donde se muestre en una sola línea el total por clientes. Habría que realizar un corte de control por cada cliente y otro corte para imprimir los resultados.
1. Cargar la tabla interna de clientes con distintos registros.
st_clientes-nrocli = '00001'.
st_clientes-region = 'RECA'.
st_clientes-distrito = '202'.
st_clientes-cuenta = '47100'.
st_clientes-concepto = 'IVA100%'.
st_clientes-importe = 30.
INSERT st_clientes INTO TABLE ti_clientes.
2. Posteriormente, ordenar la tabla interna en el orden que se necesite visualizar los datos.
SORT ti_clientes BY nrocli region distrito cuenta concepto.
3. Recorrer la tabla para realizar el listado.
LOOP AT ti_clientes INTO st_clientes.
4. Antes de realizar el corte de control, se deben pasar los datos que se están recorriendo a una estructura auxiliar (ABAP completa con asteriscos todos los campos a la derecha del campo desde donde se realiza el corte).
CLEAR st_clientes_aux.
st_clientes_aux = st_clientes.
5. Para realizar el corte de control por cliente se utiliza la sentencia AT NEW, seguido del campo
a. Internamente compara el campo actual con el anterior. Si son distintos, se procesa el código dentro del AT NEW.
b. Para cerrar el bucle, ENDAT.
c. AT NEW campo1
AT NEW nrocli.
CLEAR v_importe_acumulado.
FORMAT COLOR 1.
WRITE:/ 'Cliente:', st_clientes_aux-nrocli.
ENDAT.
6. Acumulación del importe
ADD st_clientes_aux-importe TO v_importe_acumulado.
7. Para realizar la impresión de los datos, se utiliza la sentencia “AT END OF campo1”. El campo es en el que se realiza el corte.
a. AT END compara el actual campo con el siguiente campo. Si son distintos, se procesa el código dentro de la sentencia.
AT END OF nrocli.
* Imprimo titulos de los detalles
FORMAT COLOR 1.
WRITE:/10 'Region',
20 'Distrito',
30 'Cuenta',
45 'Concepto',
55 'Importe Total'.
WRITE: /10 st_clientes_aux-region,
20 st_clientes_aux-distrito,
30 st_clientes_aux-cuenta,
45 st_clientes_aux-concepto,
55 v_importe_acumulado.
WRITE:/ sy-uline.
ENDAT.
Un corte de control es una forma de estructurar un reporte de salida de modo de poder sumar 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 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 se realiza al corte y se perderá la información almacenada en ellos.
Principalmente se utilizan las sentencias “AT NEW” y “AT END”.
La sentencia “AT NEW campo” comparará el valor actual del campo con el valor anterior. En caso de ser distintos, se procesará el código que hay dentro de la sentencia.
La sentencia “AT END campo” comparará el actual valor del campo con el valor siguiente, es decir, el que se encuentra en la siguiente vuelta de la tabla interna. En caso de ser distintos, se procesará el código dentro de la sentencia.
Para sumar campos dentro del “LOOP” a la tabla interna dentro del reporte, se puede utilizar la sentencia “ADD” o la sentencia “SUM”, que se utiliza para sumar variables de tipo i, p,f.
Es posible realizar un corte de control por más de un campo. En este caso, se colocará en la sentencia “AT NEW” o “AT END” el campo que esté más a la derecha.
 
 
 
Favorito:
Está publicación ha sido agregada a sus favoritos por: Ninoska Marquez
Sobre el autor
Publicación académica de Adrian Fernandez Marcos, en su ámbito de estudios para la Carrera Consultor ABAP.
Adrian Fernandez Marcos
Profesión: Técnico de Sistemas - España - Legajo: FQ91J
✒️Autor de: 116 Publicaciones Académicas
🎓Cursando Actualmente: Consultor ABAP Nivel Avanzado
🎓Egresado de los módulos:
Certificación Académica de Adrian Fernandez