Ayuda con un Select MAX( budat )

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Drako
    Member
    • nov
    • 60

    #1

    Ayuda con un Select MAX( budat )

    Alguien puede decirme de que manera hacer que esto funcione...

    SELECT ebeln MAX( budat )
    INTO CORRESPONDING FIELDS OF TABLE ti_budat
    FROM ekbe
    FOR ALL ENTRIES IN t_bseg
    WHERE ebeln = t_bseg-ebeln
    AND ebelp = t_bseg-ebelp.


    Quiero sacar el maximo valor del campo ekbe-budat donde el campo de la table t_bseg-ebeln y t_bseg-ebelp y meterlo en ti_budat.

    Nota: t_bseg y ti_budat son tablas internas.
    Drako
  • danny
    Member
    • mar
    • 36

    #2
    Holas,
    cuando haces un FOR ALL ENTRIES la unica funcion k te permite realizar es
    el COUNT.

    lo k podrias hacer es ordenarla en forma descendente luego de obtener la
    data

    SELECT ebeln budat
    INTO CORRESPONDING FIELDS OF TABLE ti_budat
    FROM ekbe
    FOR ALL ENTRIES IN t_bseg
    WHERE ebeln = t_bseg-ebeln
    AND ebelp = t_bseg-ebelp.

    sort ti_budat by budat descending.

    y leyendo el 1er registro obtienes la mayor fecha.

    Comentario

    • Drako
      Member
      • nov
      • 60

      #3
      Muchas gracias Danny por tu aportacion, ya quedo resuelto de otra forma pero te agradezco el tiempo invertido y la solucion aportada..
      Drako

      Comentario

      • rcanop
        Junior Member
        • ene
        • 5

        #4
        Originalmente publicado por Drako
        Muchas gracias Danny por tu aportacion, ya quedo resuelto de otra forma pero te agradezco el tiempo invertido y la solucion aportada..
        Si no es mucha molestía podrías poner cual es la solución que le has dado.
        Salu2 Rafael Cano
        Villamartín - Cádiz - España
        Jaén - España

        Comentario

        • Drako
          Member
          • nov
          • 60

          #5
          Originalmente publicado por rcanop
          Si no es mucha molestía podrías poner cual es la solución que le has dado.
          Aqui va...

          *Declare un rango para el valor que se usara como parametro de comparacion.

          DATA gd_lines TYPE i.
          RANGES: r_ebeln FOR bseg-ebeln.

          *Despues de la tabla interna principal llene el rango que iba a utilizar.

          SORT t_bseg BY ebeln.

          LOOP AT t_bseg .
          IF t_bseg-ebeln <> space.
          MOVE 'I' TO r_ebeln-sign.
          MOVE 'EQ' TO r_ebeln-option.
          MOVE t_bseg-ebeln TO r_ebeln-low.
          APPEND r_ebeln.
          ENDIF.
          ENDLOOP.

          *Borre los duplicados para tener un rango hecho correctamente.

          DELETE ADJACENT DUPLICATES FROM r_ebeln.

          *Llene una tabla interna generada solo con los datos que ocupaba en base al rango hecho.

          SELECT ebeln MAX( budat )
          INTO TABLE ti_budat
          FROM ekbe
          WHERE ebeln IN r_ebeln
          GROUP BY ebeln.

          *Agregue los datos de la tabla interna con los datos especificos en la tabla interna principal.

          DESCRIBE TABLE ti_budat LINES gd_lines.
          IF gd_lines > 0.
          LOOP AT t_bseg.
          READ TABLE ti_budat WITH KEY ebeln = t_bseg-ebeln.
          IF sy-subrc = 0.
          t_bseg-budat = ti_eindt-eindt.
          MODIFY t_bseg.
          ENDIF.
          ENDLOOP.
          ENDIF.

          y listo...
          Drako

          Comentario

          Trabajando...