
ABAP Confeccion de reportes
CORTE DE CONTROL: Reporte para sumarizar datos y mostrar totales
-> usar Tabla BD o tablas internas para hacer reportes para estructurar y formatear (organizar) datos para darles salida
Ejemplo
TYPES: BEGIN OF ty_clientes,
region(10) TYPE c,
distrito(10) TYPE c,
nrocliente(5) TYPE c,
importe TYPE i,
END OF ty_clientes.
DATA: ti_clientes TYPE STANDARD TABLE OF ty_clientes,
wa_clientes LIKE LINE OF ti_clientes,
wa_clientes_aux LIKE LINE OF ti_clientes,
v_importe_cliente TYPE i,
v_importe_distrito TYPE i,
v_importe_region TYPE i.
REFRESH ti_clientes. (buena practica limpiar las tablas)
CLEAR wa_clientes.
wa_clientes-region =
SORT ti_clientes BY region distrito nrocliente.
LOOP-ENDLOOP (Aqui inicia las sentencias para hacer el corte de control)
pasar el contenido de la tabla principal a la tabla auxiliar
LOOP AT ti_clientes INTO wa_clientes.
CLEAR wa_clientes_aux
wa_clientes_aux = wa_clientes.
Para hacer el CORTE DE CONTROL
Sentencias:
AT NEW campo. (se ejecuta x cada valor nuevo en campo, mirando y comparando hacia atras)
...
ENDAT.
AT END OF campo. (se ejecuta x cada valor nuevo en campo, mirando y comparando hacia adelante)
...
ENDAT.
por qué se necesita una tabla auxiliar?
luego de estas sentencias AT END, el sistema completa con * los campos a la derecha del campo del importe de n°cliente, se pierde la info y se visualiza mal.
Para evitar esto, entonces hay q copiar la cabecera de la tabla interna a una estructura auxiliar y luego en loop-endloop se trabaja con la estructura auxiliar
luego de ejecutar todos los AT NEW, se sumarizan:
ADD wa_clientes_aux-importe TO v_importe_total_cliente.
luego imprimir el total por cliente
sentencia
AT END OF nrocliente.