PDA

Ver la Versión Completa : Ayuda con un Select MAX( budat )


Drako
18/01/08, 15:36:00
Alguien puede decirme de que manera hacer que esto funcione... :confused:

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.

danny
21/01/08, 17:02:04
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.

Drako
21/01/08, 19:17:45
Muchas gracias Danny por tu aportacion, ya quedo resuelto de otra forma pero te agradezco el tiempo invertido y la solucion aportada.. :D

rcanop
23/01/08, 17:12:21
Muchas gracias Danny por tu aportacion, ya quedo resuelto de otra forma pero te agradezco el tiempo invertido y la solucion aportada.. :D

Si no es mucha molestía podrías poner cual es la solución que le has dado.

Drako
23/01/08, 20:53:55
Si no es mucha molestía podrías poner cual es la solución que le has dado.

Aqui va... :cool:

*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... :D