✒️ABAP Los cortes de control utilizando tablas internas
ABAP Los cortes de control utilizando tablas internas
Cortes de Control en reportes usando tablas internas
Definición:
- Forma de estructurar un reporte de salida para sumarizar datos y mostrar totales por campos de reporte (consolidados).
- Tabla de salida del reporte debe ordenarse por campos los cuales se realizarán cortes de control.
- Uso de estructura auxiliar para almacenar datos de registros de tabla interna, ya que ABAP completa con *** los campos que se encuentren a la derecha del campo por el cual realizamos el corte y se perderá la info almacenada.
- Cortes se pueden realizar por más de un campo, especificando campo más a la derecha.
- AT FIRST, AT LAST.
Descripción de ejemplo:
- Corte de control para imprimir listado por pantalla.
- Tabla interna con registros de clientes que incluyen importe entre sus campos (importe).
- Listado de clientes mostrando : total importe por cliente.
- Realizar corte de control por cada nuevo cliente y otro para impresión de resultados.
1. Insertar registros en tabla interna.
Ejm.: st_clientes-nrocli = '10101'.
st_clientes-region='RECA'.
st_clientes-importe=30.
INSERT st_clientes INTO TABLE ti_clientes
Nota: previamente la tabla se creó con estructura:
TYPES: BEGIN OF ty_clientes,
nrocli(5) TYPE c,
region(4) TYPE c,
importe TYPE i,
END OF ty_clientes.
DATA: ti_clientes TYPE STANDARD TABLE OF ty_clientes,
st_clientes LIKE LINE OF ti_clientes,
st_clientes LIKE LINE OF ti_clientes.
2. Ordenar la tabla de acuerdo al orden de visualización de los datos requerido.
Ejm.: SORT ti_clientes BY nrocli region distrito cuenta concepto
3. Recorrer tabla para hacer listado (LOOP).
Ejm.: LOOP AT ti_clientes INTO st_clientes
<Sentencias>
ENDLOOP.
4. Asignar registro que se está recorriendo a estructura auxiliar.
Ejm.: CLEAR st_clientes_aux.
st_clientes_aux=st_clientes
Nota: ABAP completa con **** todos los campos a la derecha del campo por el cual hacemos el corte
5. Uso de la sentencia AT NEW como Corte de control dentro de ciclo que se ejecuta con cada nuevo registro de la tabla. Este corte se debe especificar columna del registro por el cual haremos el corte.
Ejm.:
AT NEW nrocli.
CLEAR v_importe_acumulado.
FORMAT COLOR 1.
WRITE:/ 'Cliente: ', st_clientes_aux-nrocli.
ENDAT.
AT NEW: Compara valor actual del campo con valor anterior. En caso de ser distintos, se procesarán sentencias dentro de cláusula. Para el ejemplo, compara el actual valor para columna nrocli en registro actual con el valor de la misma columna pero del registro anterior. En caso de ser distintos, se procesará código dentro de sentencia.
6. Uso de la sentencia AT END como sentencia de corte de control para la impresión de los datos, esto seguido del campo por el cual se hará el corte.
Ejm.: AT END OF nrocli.
FORMAT COLOR 1.
WRITE: 10 'Región',
20 'Importe total'.
FORMAT COLOR 1.
WRITE: / 10 st_clientes_aux-region,
20 st_clientes_aux-importe-_acumulado.
WRITE:/ sy-uline.
ENDAT.
AT END: Compara el valor actual del campo con el valor siguiente (próximo ciclo). Si estos son diferentes, se procesará código dentro de la sentencia.
 
 
 
Sobre el autor
Publicación académica de Darwin Enrique Terraza Berdugo, en su ámbito de estudios para la Carrera Consultor ABAP.
Darwin Enrique Terraza Berdugo
Colombia - Legajo: MM57E
✒️Autor de: 60 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor ABAP Nivel Inicial
- Carrera Consultor Basis NetWeaver Nivel Avanzado
- Carrera Consultor Basis NetWeaver Nivel Inicial
Disponibilidad Laboral: PartTime
Certificación Académica de Darwin Terraza