De una tabla interna agrupar por el campo y que sume

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • tate
    Senior Member
    • feb
    • 106

    #1

    De una tabla interna agrupar por el campo y que sume

    Hola, tengo esta tabla interna:
    campo1 campo2
    1| 0000000001 | 0002 | |
    2| 0000000001 | 0001 | |
    3| 0000000017 | 0001 |

    lo que quiero esque si el campo 1 hay repetido, que me lo saque en una linea y me sume el campo2, quedando asi:


    campo1 campo2
    1| 0000000001 | 0003 |
    2| 0000000017 | 0001 |
  • mysmb2
    Senior Member
    • ene
    • 406

    #2
    tenes que usar la sentencia collect.
    Saludos
    Sebastián Chiavia
    http://www.programacionabap.com.ar

    Comentario

    • tate
      Senior Member
      • feb
      • 106

      #3
      Pero como, porque no consigo hacer el collect.

      Yo tengo esta select.

      SELECT leist imeng
      FROM nlei
      INTO CORRESPONDING FIELDS OF TABLE v_nlei
      WHERE einri EQ centrosanitario
      AND falnr EQ episodio
      AND lfdbew EQ movimiento
      AND storn EQ ' '.

      SORT v_nlei BY leist.

      Comentario

      • mysmb2
        Senior Member
        • ene
        • 406

        #4
        la clave primaria debe ser de tipo i, p,dec,float16,f en tu caso el campo1 y por supuesto el campo2 debe ser numerico para que sumarize. verifica como tenes definida la tabla interna v_nlei
        Sebastián Chiavia
        http://www.programacionabap.com.ar

        Comentario

        • tate
          Senior Member
          • feb
          • 106

          #5
          claro esque mi tabla interna es esta

          DATA: BEGIN OF v_nlei OCCURS 0,
          leist TYPE nlei-leist, "char de 10
          imeng TYPE nlei-imeng, "numc de 4
          tratado TYPE c,
          END OF v_nlei.

          Porque solo necesito esos datos de la tabla nlei.

          y yo lo que quiero esque si hay mas de un campo LEIST igual, que me sume el campo IMENG, resultando que solo quedara un campo LEIST con la suma de los campos IMENG correspondientes.

          Comentario

          • yapbig
            Senior Member
            • may
            • 261

            #6
            Hace lo que necesitás diréctamente con el GROUP BY de la sentencia SELECT y listo ya te quedan los registros de la tabla interna agrupados y sumarizados. Tenes que agregar la función SUM al campo numérico correspondiente.

            Saludos...
            Gustavo A. Biglia
            Consultor SAP FI

            Comentario

            • tate
              Senior Member
              • feb
              • 106

              #7
              y como ago eso???

              Comentario

              • yapbig
                Senior Member
                • may
                • 261

                #8
                SELECT leist SUM( imeng )
                FROM nlei
                INTO CORRESPONDING FIELDS OF TABLE v_nlei
                WHERE einri EQ centrosanitario
                AND falnr EQ episodio
                AND lfdbew EQ movimiento
                AND storn EQ ' '
                GROUP BY leist.


                Saludos...
                Gustavo A. Biglia
                Consultor SAP FI

                Comentario

                • tate
                  Senior Member
                  • feb
                  • 106

                  #9
                  Buenas.
                  No puedo hacer ese SUM( imeng ),
                  ya que en la tabla esta definido com NUMC de 4, asi que no se como hacerlo.

                  Seguro que es una tonteria pero esque no se como hacerlo.

                  Comentario

                  • zonanet
                    Senior Member
                    • mar
                    • 195

                    #10
                    Originalmente publicado por tate
                    Hola, tengo esta tabla interna:
                    campo1 campo2
                    1| 0000000001 | 0002 | |
                    2| 0000000001 | 0001 | |
                    3| 0000000017 | 0001 |

                    lo que quiero esque si el campo 1 hay repetido, que me lo saque en una linea y me sume el campo2, quedando asi:


                    campo1 campo2
                    1| 0000000001 | 0003 |
                    2| 0000000017 | 0001 |
                    Prueba así:

                    sort Tabla_interna.
                    collect Tabla_interna.

                    Comentario

                    Trabajando...