Sumar campo de una misma fila

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Cyane
    Junior Member
    • jun
    • 1

    #1

    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
    blue
  • mialma
    Junior Member
    • mar
    • 19

    #2
    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.

    Comentario

    • MetalGod
      Senior Member
      • jun
      • 110

      #3
      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.

      Comentario

      • mialma
        Junior Member
        • mar
        • 19

        #4
        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

        Comentario

        • MetalGod
          Senior Member
          • jun
          • 110

          #5
          Gracias, justo lo habia resuelto de esa manera.

          Muchas gracias.

          Comentario

          Trabajando...