Buenas Tardes
Espero que me puedan ayudar, el problema es el siguiente tengo una tabla interna y deseo sumar el importe si y solo que sean de la misma sociedad.
Buenos días @neilagallardo, eso lo puedes hacer por ejemplo con una sentencia collect:
También con una loop/end loop y un at new bukrs por ejemplo.
Saludos @Salco, te explico, tengo un tabla interna con n registros, esos registros tiene un campo que es identificador y otro que es importe o monto, necesito hacer una suma de todo los identificadores que sean igual. Mi pregunta es si tengo 6 registros 3 de ellos de un identificador X y los restante de otro identificador XX. Como hago para hacer la suma.
Hola,
se puede hacer con un corte de control, como dice @Salco
loop at tabla.
v_valor = v_valor + valor_identificador.
AT END OF identifi.
lw_tablafinal-identificador = identificador.
lw_tablafinal-sumatoria = v_valor.
append lw_tablafinal TO lt_tablafinal.
clear v_valor.
ENDAT.
endloop.
saludos @sconoredhot. Lo que tengo que sumar es el monto de esos registros pero mi pregunta es como seria y tengo varios registros como explique, que 3 registros con el identificador X y 4 registros con un identificador XX, cada registro deben sumarse por separado. Movi los registros a otra tabla interna y los estoy comparando pero me suma todo, y necesito que me sume los de Registro X y registros XX por separado.
es que, te lo acabo de pasar en el ejemplo, como seria.
debes recorrer tu tabla… (que entiendo tiene un campo identificador y un campo con el valor del identificador). Debe tener algo asi:
CAMPO1 CAMPO2
IDENT1 55
IDENT1 77
IDENT1 43
IDENT2 33
IDENT2 66
IDENT3 44
IDENT3 11
entonces vas sumando el valor de campo2:
v_valor = v_valor + campo2.
El AT END OF CAMPO1, va a hacer que entre en esa parte de codigo en el ultimo registro perteneciente a cada identificador, la primera vez va a ingresar en el registro numero 3, que es cuando no tiene que sumar mas para el primer identificador.
Entonces ahi pasamos a una tabla interna. el identificador, y la suma.
Al final, te va a quedar esta tabla con 3 registros:
IDENTIFICADOR SUMATORIA
IDENT1 175
IDENT2 99
IDENT2 55
Por favor avisa si aún no entendimos bien lo que precisas.
Gracias!
Sebastián
@sconoredhot mi tabla interna es it_pago, los registro de la tabla son it_pago-laufi (Identificador), it_pago-RBETR (campo monto.)
loop at it_pago,.
lv_suma = lv_suma + it_pago-RBETR .
AT END OF laufi.
lw_tablafinal-laufi = identificador.
lw_tablafinal-RBETR . = lv_suma.
append lw_tablafinal TO lt_tablafinal.
clear lv_suma.
ENDAT.
endloop.
declare la tabla lw_tablafinal de tipo ty_pago.
Pero me esta dando error
creo que ahi deberia ir it_pago-laufi en lugar de identificador (yo te puse eso porque no sabia los nombres de tu tabla interna).
Que error te está dando?
@sconoredhot si correcto ahí va it_pago-laufi, pero no me esta sumando, solo me lo esta guardando en la tabla nueva.
Hola @neilagallardo,
si la tabla lt_tablafinal la has definido bien con esto bastaría:
[CODE]
loop at it_pago.
collect it_pago into lt_tablafinal.
endloop.
[/CODE]
En tabla final tendrás en la primera columna el identificador único y en la segunda columna la suma.
Saludos @Salco, Pero la cosa no es sumar todo si no por separados es decir tengo 4 registros 2 de ellos con identificador X n su importe y los 2 con XX identificador, tengo que obtener el total de registros X y registros XX
Efectivamente @neilagallardo, justo eso hace el collect.
Por favor, mira el segundo post de este esta que viene un ejemplo
saludo @SidV, el tema esta solucionado, aplique lo que recomendó @sconoredhot, con el corte de control.