PDA

Ver la Versión Completa : Sumar campo de una misma fila


Cyane
29/06/17, 20:15:01
Tengo una tabla interna tipo field symbol, y quiero sumar los campos de una misma fila.

total l campo1 l campo2 l campo3
10 l 3 l 5 l 2
15 l 4 l 8 l 3
7 l 4 l 1 l 2

Un saludo y gracias

mialma
30/06/17, 06:53:37
Ahi va un ejemplo de como puedes hacerlo:

REPORT suma.

types : begin of tipo,
total type i,
campo1 type i,
campo2 type i,
campo3 type i,
end of tipo.

data linea type tipo.
data tabla type table of tipo.

field-symbols <fst_tabla> type any table.
field-symbols <fsl_tabla> type any.
field-symbols <total> type any.
field-symbols <numero> type any .



linea-campo1 = 3.
linea-campo2 = 5.
linea-campo3 = 2.
append linea to tabla.

linea-campo1 = 4.
linea-campo2 = 8.
linea-campo3 = 3.
append linea to tabla.

linea-campo1 = 4.
linea-campo2 = 1.
linea-campo3 = 2.
append linea to tabla.

assign tabla[] to <fst_tabla>.

loop at <fst_tabla> assigning <fsl_tabla>.
assign ('<fsl_tabla>-total') to <total>.
assign ('<fsl_tabla>-campo1') to <numero>.
move <numero> to <total> .
assign ('<fsl_tabla>-campo2') to <numero>.
<total> = <total> + <numero> .
assign ('<fsl_tabla>-campo3') to <numero>.
<total> = <total> + <numero> .
endloop.

loop at <fst_tabla> assigning <fsl_tabla>.
assign ('<fsl_tabla>-total') to <total>.
write :/ <total>.
endloop.

MetalGod
08/08/17, 20:58:59
Hola, buenas tardes.

Estoy buscando exactamente lo mismo.

La unica diferencia es que las columas se arman de forma dinamica, asique no se de antemano que columnas son las que tengo que sumar, asique por ejemplo cuando haces

<fsl_tabla>-campo2

donde dice campo 2, deberi hacerlo dinamico, armando ese nombre en tiempo de ejecucion.

Esto es porque en la pantalla de seleccion me indican un rango que representa los meses por ejemlo del 3 al 6, solo tengo que dejar la sumatoria de los meses 1, 2, 3, 4, 5 y 6, o se si se entiende. Si o bueno, su tulucion me re sirve igual, aunque tenga que hacer 12 asignaciones, pero solo van a ser validas las de los meses que correspondan.

Muchas gracias.

mialma
09/08/17, 07:13:32
Buenas,

Si no sabes el nombre del campo previamente, cuando haces el assign puedes hacer algo tal que :

data : lv_campo(80), lv_nom_campo(40).
lv_nom_campo = 'NomCampo'.

concatenate '<fsl_tabla>-' lv_nom_campo to lv_campo.
assign (lv_campo) to <campo1>.

Salu2

MetalGod
10/08/17, 18:17:11
Gracias, justo lo habia resuelto de esa manera.

Muchas gracias.