Como sumar los registros de una tabla interna

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.

1 me gusta

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.

1 me gusta

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

1 me gusta

@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?

1 me gusta

@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.

2 Me gusta

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

Este tema está o no solucionado?
@neilagallardo lo marcaste como solución pero te da error? :neutral_face:

saludo @SidV, el tema esta solucionado, aplique lo que recomendó @sconoredhot, con el corte de control.

3 Me gusta