MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Sumar campo de una misma fila (foro/showthread.php?t=77255)

Cyane 29/06/17 21:15:01

Sumar campo de una misma fila
 
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 07:53:37

Ejemplo
 
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 21: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 08:13:32

Cuando...
 
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 19:17:11

Gracias, justo lo habia resuelto de esa manera.

Muchas gracias.


Husos Horarios son GMT. La hora en este momento es 19:24:30.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web