PDA

Ver la Versión Completa : Select Option Doble


budista1
08/07/11, 15:19:26
Hola compañeros,


tengo una SELECT donde tengo que implementar un select option del campo AUART o clase de orden.
Pero no es un select option normal. Por custo, han limitado el matchcode que ahora va de PM01 a PM05.

Por tanto, el select tendría que ser algo así, pero no me funciona bien:

SELECT aufnr auart pspel objnr gltrp rsnum aufpl
FROM caufv
INTO TABLE pt_caufv
WHERE ( auart = 'PM01' OR auart = 'PM02' OR auart = 'PM03'
OR auart = 'PM04' OR auart = 'PM05' OR auart = 'PM06' ) OR
auart IN s_otype.


Alguien sabe donde está el error?

MUCHAS GRACIAS

stormshadow
08/07/11, 16:39:47
Intenta metiendo tú última condición entre paréntesis:

OR auart IN (s_otype)

mysmb2
08/07/11, 18:40:37
Segun ese select te va a traer del PM01 hasta el PM06 por la primer condicion y por la segunda condicion lo que este en s_otype en este caso de PM01 a PM05.
Es decir te pude traer PM06.
Yo dejaria el WHERE IN s_otype.(tene en cuenta que si s_otype es vacio te trae todos)

saludos.

DCErick
08/07/11, 18:40:38
Oye pero cual es el problema con tu select...

Que es lo que esperas que regrese y que es lo que te está regresando?
:confused:

budista1
08/07/11, 19:16:27
Hola,

prové como dijiste, pero sigue sin funcionar :(

SELECT aufnr auart pspel objnr gltrp rsnum aufpl
* gltrp rsnum aufpl
FROM caufv
INTO TABLE pt_caufv
WHERE auart IN (s_otype) OR ( auart = 'PM01' OR auart = 'PM02' OR auart = 'PM03' OR auart = 'PM04' OR auart = 'PM05' OR auart = 'PM06').


NO FILTRA BIEN, ALGUNA OTRA OPCIÓN? NO CREO QUE SEA ALGO COMPLICADO EN ABAP.

SALUDOS

budista1
08/07/11, 19:21:02
Hola Eric,

1 a ver, si el usuario no llena el select option de auart, auart será:

PM01 o PM02 o PM03 o PM04 o PM05

De hecho el matchcode del select option lo han customizado así, para que solo salgan estas opciones.

2-si el usuario llena el matchcode: pues entonces trabajo con el select option de auart.


UN SALUDO Y GRACIAS

budista1
08/07/11, 19:26:40
Perdón con el PM06, me confundí:

es de PM01 A PM05

A ver, podría quitar la condición de los PM01,PM02 etc
pero entonces perdería rendimiento.

Lo puse por un tema de PERFORMANCE, está claro, creo.

Un saludo abapero

DCErick
08/07/11, 20:06:37
Si te entendí bien... es algo sencillo

*Si usuario no captura nada en select option, llenamos el rango con los valores predefinidos.
IF s_otype[] is initial.
s_otype-SIGN = 'I'.
s_otype-OPTION = 'BT'.
s_otype-low = 'PM01'.
s_otype-high = 'PM05'.
append s_otype.
endif.

SELECT aufnr auart pspel objnr gltrp rsnum aufpl
FROM caufv
INTO TABLE pt_caufv
WHERE auart IN s_otype.


•SIGN (Tipo de Señal): Este campo de tipo C de longitud 1, este valor indica si es incluido o excluido el dato de la fila. Los posibles valores son: ’I’ (incluido) y ‘E’ (excluido).

•OPTION (Opción): Campo de tipo C de longitud 2, contiene el operador que vamos a utilizar. No puede estar vacio y sus valores posibles son: ‘EQ’ (=), ‘NE’ (<>), ‘GT’ (>), ‘LT’ (<), ‘GE’ (>=), ‘LE’ (<=), ‘BT’ (Between) y ‘NB’ (Not Between). El ‘CP’ (like ‘*’ o ‘+’) y ‘NP’ (not like ‘*’ o ‘+’) no están completamente funciones.

•LOW (Bajo): Es el valor o el más bajo cuando es una selección por rango.

•HIGH (Alto): El valor más alto del rango.

budista1
08/07/11, 23:27:49
:d Perfecto Eric!


Era Justo Eso, Muchas Gracias