✒️ABAP Los cortes de control utilizando tablas internas
ABAP Los cortes de control utilizando tablas internas
SPAN { font-family: "Courier New"; color: #000000; background: #FFFFFF; } .L0S31 { font-style: italic; color: #808080; } .L0S32 { color: #3399FF; } .L0S33 { color: #4DA619; } .L0S52 { color: #0000FF; } .L0S55 { color: #800080; } .L0S70 { color: #808080; } Solución al ejercicio propuesto con banderas (entrado, entrado1), sin estructura aux como en el ejercicio de solución:
*&---------------------------------------------------------------------*
*& Report Y_PRUEBA_ABAP_3_3_V2
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT y_prueba_abap_3_3_v2.
* Tipo de la estructura de clientes
TYPES: BEGIN OF ty_clientes,
distrito(3) TYPE c,
nrocli(5) TYPE c,
region(4) 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,
entrado, entrado1: TYPE boolean VALUE 'false'.
"st_clientes_aux LIKE LINE OF ti_clientes.
DATA: v_importe_acumulado_distrito TYPE i,
v_importe_cliente 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.
* 2
st_clientes-nrocli = '00005'.
st_clientes-region = 'RECA'.
st_clientes-distrito = '202'.
st_clientes-cuenta = '47100'.
st_clientes-concepto = 'RECARGOS NPRIV'.
st_clientes-importe = 90.
INSERT st_clientes INTO TABLE ti_clientes.
* 3*
st_clientes-nrocli = '00012'.
st_clientes-region = 'RECA'.
st_clientes-distrito = '203'.
st_clientes-cuenta = '47100'.
st_clientes-concepto = 'IVA21%'.
st_clientes-importe = 20.
INSERT st_clientes INTO TABLE ti_clientes.
* 4
st_clientes-nrocli = '00012'.
st_clientes-region = 'RECA'.
st_clientes-distrito = '203'.
st_clientes-cuenta = '47100'.
st_clientes-concepto = 'IVA21%'.
st_clientes-importe = 40.
INSERT st_clientes INTO TABLE ti_clientes.
* 5
st_clientes-nrocli = '00005'.
st_clientes-region = 'RECA'.
st_clientes-distrito = '204'.
st_clientes-cuenta = '47100'.
st_clientes-concepto = 'RECARGOS NPRIV'.
st_clientes-importe = 30.
INSERT st_clientes INTO TABLE ti_clientes.
* 6
st_clientes-nrocli = '00001'.
st_clientes-region = 'RECA'.
st_clientes-distrito = '204'.
st_clientes-cuenta = '47100'.
st_clientes-concepto = 'IVA100%'.
st_clientes-importe = 10.
INSERT st_clientes INTO TABLE ti_clientes.
* Ordeno la tabla interna
SORT ti_clientes BY distrito nrocli region 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 distrito
AT NEW distrito.
entrado = 'true'.
ENDAT.
IF entrado = 't'.
CLEAR v_importe_acumulado_distrito.
FORMAT COLOR 1.
WRITE:/ 'Distrito:', st_clientes-distrito.
* Imprimo titulos de los detalles
SKIP 1.
WRITE:/10 'Cliente',
20 'Region',
30 'Cuenta',
45 'Concepto',
65 'Importe Total'.
entrado = 'false'.
ENDIF.
* Acumulo el importe por cliente
ADD st_clientes-importe TO v_importe_cliente.
AT END OF nrocli.
entrado1 = 'true'.
ENDAT.
IF entrado1 = 't'.
* Imprimo titulos de los detalles
WRITE: /10 st_clientes-nrocli,
20 st_clientes-region,
30 st_clientes-cuenta,
45 st_clientes-concepto,
65 v_importe_cliente.
* Acumulo el importe por distrito
ADD v_importe_cliente TO v_importe_acumulado_distrito.
CLEAR v_importe_cliente.
entrado1 = 'false'.
ENDIF.
AT END OF distrito.
SKIP 1.
WRITE:/ 'El importe total del distrito es: ', v_importe_acumulado_distrito.
WRITE:/ sy-uline.
ENDAT.
ENDLOOP.
 
 
 
Sobre el autor
Publicación académica de Lorena Amoretti, en su ámbito de estudios para la Carrera Consultor ABAP.
Lorena Amoretti
Profesión: Profesor Sup. Informática Aplicada - Argentina - Legajo: DE30K
✒️Autor de: 7 Publicaciones Académicas
🎓Egresado del módulo:
Disponibilidad Laboral: PartTime
Certificación Académica de Lorena Amoretti