✒️ABAP Los cortes de control utilizando tablas internas
ABAP Los cortes de control utilizando tablas internas
Ejemplo de CORTES DE CONTROL:
* Tipo de la estructura de clientes
TYPES: BEGIN OF ty_clientes,
nrocli(5) TYPE c,
region(4) TYPE c,
distrito(3) TYPE c,
cuenta(5) TYPE c,
concepto(30) TYPE c,
importe TYPE i,
END OF ty_clientes.
* Tablas internas y estructuras
DATA: ti_clientes TYPE STANDARD TABLE OF ty_clientes,
st_clientes LIKE LINE OF ti_clientes,
st_clientes_aux LIKE LINE OF ti_clientes.
* Flag DATA: v_importe_acumulado TYPE i. *----------------------------------------------------------------------* START-OF-SELECTION. *----------------------------------------------------------------------* * 1 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.…… etc…..
* Ordeno la tabla interna SORT ti_clientes BY nrocli region distrito cuenta concepto. * Recorro la tabla interna LOOP AT ti_clientes INTO st_clientes. * Copio el contenido del registro a una estructura auxiliar CLEAR st_clientes_aux. st_clientes_aux = st_clientes. * Por cada nuevo cliente AT NEW nrocli. CLEAR v_importe_acumulado. FORMAT COLOR 1. WRITE:/ 'Cliente:', st_clientes_aux-nrocli. ENDAT. * Acumulo el importe ADD st_clientes_aux-importe TO v_importe_acumulado. 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. ENDLOOP.____________________________________
LOS CORTES 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 muestran los cortes de control, es que la tabla de salida del reporte debe ordenarse por los campos por los cuales va realizarse el corte de control. Es indispensable utilizar una estructura auxiliar para almacenar los datos de la tabla interna del reporte ya que ABAP completara 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 en ellos.
PRINCIPALES SENTENCIAS PARA REALIZAR CORTES DE CONTROL:
AT NEW campo: comparara el valor actual del campo con el valor anterior, en caso de ser distintos se procesara el código dentro del ADD NEW
AT END campo: comparara el valor actual del campo con el valor siguiente,es decir el que se encuentra en la proxima vuelta de la tabla interna, en caso de ser distintos se procesara el codigo dentro del AT END.
Para sumar campos dentro del LOOP a la tabla interna del reporte podemos utilizar la sentencia ADD o también la sentencia SUM que se utiliza para sumar variables de tipo integer p o float.
TIPS: Es posible realizar un corte de control por mas de un campo, para ello colocaremos en el AT END o AT NEW el campo que se encuentre mas a la derecha.
 
 
 
Sobre el autor
Publicación académica de Alexander Castellanos, en su ámbito de estudios para la Carrera Consultor ABAP.
Alexander Castellanos
Profesión: Ingeniero de Sistemas - Colombia - Legajo: JS42A
✒️Autor de: 67 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Alexander Castellanos