✒️ABAP Los cortes de control utilizando tablas internas
ABAP Los cortes de control utilizando tablas internas
CORTE DE CONTROL: Como programadores ABAP siempre debemos revisar la confección de reportes de salida por pantalla. Estos reportes se trabajan con tablas internas. Debemos estructurar y formatear la salida de los datos por pantalla, dándoles un formato determinado, agrupando los datos de salida, ordenado el reporte por determinados campos, sumarizando campos, mostrando totales por distintos campos, entre otras cuestiones posibles.
Es así que los cortes de control son una forma de estructurar un reporte de salida por pantalla de modo de poder sumarizar datos y mostrar totales por distintos campos del reporte.
PASO A PASO DE UN CORTE DE CONTROL: para el ejemplo se definirá la tabla interna como ti_clientes y la estructura
TYPES: BEGIN OF ty_clientes,
region(10) TYPE c,
distrito(10) TYPE c,
nrocliente(5) TYPE c,
importe TYPE i,
END OF ty_clientes.
* Tablas internas y estructuras
DATA: ti_clientes TYPE STANDARD TABLE OF ty_clientes,
wa_clientes LIKE LINE OF ti_clientes,
wa_clientes_aux LIKE LINE OF ti_clientes.
Por una particularidad de ABAP vamos a necesitar declarar siempre una estructura auxiliar, cuyo nombre para el ejemplo será WA_CLIENTES_AUX debido a que la tabla para el ejemplo será ti_clientes, a parte de la que ya declaramos al momento de declarar la tabla interna.
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.
DATA: v_importe_acumulado TYPE i.
Ahora bien luego de declarar todas las variables necesarias se debe borrar el contenido de la tabla interna ti_clientes, este paso es considerado una buena práctica en programación ya que si no se ha llenado la tabla interna, puede suceder que esta quede con basura en memoria de ejecuciones anteriores, por lo que se producirían errores en la ejecución del reporte, esto lo aplicamos con la sentencia. ej: REFRESH ti_clientes.
Ahora se procede con el llenado de la tabla interna con la cantidad de datos que se requiera:
CLEAR wa_clientes.
wa_clientes-region = 'CAPITAL'.
wa_clientes-distrito = 'Caballito'.
wa_clientes-nrocliente = '00001'.
wa_clientes-importe = 30.
APPEND wa_clientes TO ti_clientes.
Luego lo que vamos a necesitar es ordenar la tabla interna ti_clientes por lo campos con los cuales se va a realizar el corte de control. ej: SORT ti_clientes BY region distrito nrocliente.
A continuación vamos a recorrer la taba interna TI_CLIENTES y es aquí dentro de este LOOP-ENDLOOP en donde se realiza el corazón 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. ej: LOOP AT ti_clientes INTO wa_clientes.
Copiamos el contenido del registro a una estructura auxiliar
CLEAR wa_clientes_aux.
wa_clientes_aux = wa_clientes.
Para realizar un corte de control, ABAP utiliza 2 sentencias que nos facilitan el trabajo. La sentencia AT NEW cuya sintaxis es:
AT NEW campo.
.....
ENDAT.
AT NEW se ejecuta cuando se está procesando el último registro que tenga almacenado un valor determinado de campo. la sentencia AT END OF campo, mira hacia adelante es decir compara el contenido del campo del registro actual de la tabla interna que se está procesando contra el contenido del campo del registro siguiente de la tabla interna que todavía no se procesó.
- Si el resultado de esa comparación es que los contenidos de ambos campos son diferentes entonces se ejecuta la lógica ABAP que se encuentra dentro de AT END OF.
- Si el resultado de esa comparación es que los contenidos de ambos campos son iguales entonces no se ejecuta la lógica ABAP que se encuentra dentro del AT END OF.
- Si estamos procesado el último registro de la tabla interna entonces comprar el contenido del campo contra nada y el resultado de esa comparación es que son distintos por lo que se ejecuta a lógica ABAP que se encuentra dentro del AT END OF.
 
 
 
Sobre el autor
Publicación académica de Jean Carlos Lopez, en su ámbito de estudios para la Carrera Consultor ABAP.
Jean Carlos Lopez
Profesión: Ingeniero en Infomática - Venezuela - Legajo: AG33O
✒️Autor de: 63 Publicaciones Académicas
🎓Cursando Actualmente: Consultor ABAP Nivel Inicial
Disponibilidad Laboral: FullTime
Certificación Académica de Jean Lopez