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)
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
www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web