PDA

Ver la Versión Completa : Ayuda con select options


Irua
04/06/08, 16:48:22
Hola tengo unselect options que me trae la sociedad, si el usuario elige filtrar por varias sociedades, debo comparar el tipo de moneda de cada sociedad y si no son iguales ejecutar un msj.


El asunto que no tengo ni idea de como comparar los valores, en estos casos cual seria la instruccion a utilizar?????????????? :(

Mauricio Hidalgo
04/06/08, 17:49:41
La tabla de Sociedades es la T001. Ahí tienes el campo WAERS que corresponde a la moneda.

Espero te sirva

Irua
04/06/08, 17:52:11
La tabla de Sociedades es la T001. Ahí tienes el campo WAERS que corresponde a la moneda.

Espero te sirva


ok y como comparo pa_soc con el campo moneda

es decir como seria el select si tengo por ejemplo 5 valores distintos, la cosa es que no se como funciona muy bien el select options

gracias

smontenegro
04/06/08, 18:42:29
Primero definite una tabla interna igual a t001(que en este ejemplo llamo ti_t001) y luego armas asi el select:

select * from t001 into ti_t001 where BUKRS IN pa_soc .

Hasta aca lo que hiciste fue cargar la tabla interna ti_t001 con los datos de t001 para todas las sociedades del select option pa_soc.
Luego lo recorres con un loop para ver si las monedas son iguales. si no lo son mandas el mensaje.

Otra opcion es no cargar la tabla interna y hacer un SELECT/ENDSELECT verificando en cada pasada que la moneda sea igual a la anterior y sino mandas el mensaje.

Saludos!

Irua
04/06/08, 18:55:24
Primero definite una tabla interna igual a t001(que en este ejemplo llamo ti_t001) y luego armas asi el select:

select * from t001 into ti_t001 where BUKRS IN pa_soc .

Hasta aca lo que hiciste fue cargar la tabla interna ti_t001 con los datos de t001 para todas las sociedades del select option pa_soc.
Luego lo recorres con un loop para ver si las monedas son iguales. si no lo son mandas el mensaje.

Otra opcion es no cargar la tabla interna y hacer un SELECT/ENDSELECT verificando en cada pasada que la moneda sea igual a la anterior y sino mandas el mensaje.

Saludos!


ok seria algo asi por favor corrigeme, y como seria la sintaxis para comparar com un registro anterior gracias

select waers BUKRS into it_moneda from t001 WHERE BUKRS in s_tsoc.

LOOP at it_moneda.
if it_moneda-waers = it_moneda-waers .

write 'dhhd'.

endif.
ENDLOOP.
ENDSELECT.

smontenegro
04/06/08, 19:23:11
:) Exacto, salvo que yo usaria otra variable para guardar la moneda anterior y asi poder comparar con la nueva. Seria asi:

select waers BUKRS into it_moneda from t001 WHERE BUKRS in s_tsoc.

LOOP at it_moneda.
if it_moneda-waers = moneda_old.
write 'dhhd'.
endif.
moneda_old = it_moneda-waers.
ENDLOOP

Si lo guardas en un tabla interna no hace falta el ENDSELECT.
Tambien estoy presuponiendo que ya definiste la tabla it_moneda con los campos waers y bukrs.


Saludos!

Irua
04/06/08, 20:09:33
Listo mil gracias :)