PDA

Ver la Versión Completa : Problema en sentencia IF


zehiter
27/08/09, 17:19:49
Hola

Quiero comparar dentro de un IF una variable con 5 posibles valores, esta es la expresion lógica:

IF l_matnr IN ( '100392' OR '100394' OR '100396' OR '100398' OR '100388' ).
"codigo
ENDIF.

pero al compilar me manda error de sintaxis :S.

Faltará algun espacio?, o en lugar de ( es [ ?

Ya probe de varias formas y no compila exitosamente :S.

En que estoy mal ? :(

Gracias de antemano

zocter
27/08/09, 17:49:51
Create un rango y mete los valores hay.

Imaginate que el elemento de datos de los numero es MATNR
pues haces..

DATA: i_rango TYPE RANGE OF matnr
DATA: w_rango LIKE LINE OF i_rango.

w_rango-sign = 'I'.
w_rango-option = 'EQ'
w_rango-low = '100392'
APPEND w_rango to i_rango.

w_rango-sign = 'I'.
w_rango-option = 'EQ'
w_rango-low = '100394'
APPEND w_rango to i_rango.

Asi con los 5...

Despues haces

IF l_matnr IN i_rango.

ENDIF.

Tonnyman
27/08/09, 17:54:17
O también podrías manejarlo de la siguiente forma

IF l_matnr = '100392' OR l_matnr = '100394' OR l_matnr = '100396' OR l_matnr = '100398' OR l_matnr = '100388'.
"codigo
ENDIF.

el_aviador
27/08/09, 20:33:01
Que tal,
Cuando usas IN luego vendría algo así IN ( '100392' , '12345' , '12222' )
Se que en las sentencias SQL en los where funcionan, pero en los IF no los he probado.

De todas formas el rango apuntado por el compañero si es seguro, pero escribiendo el sign y el option una vez, salvo que cambien de valor claro... (se incluyen en el append).

w_rango-sign = 'I'.
w_rango-option = 'EQ'

w_rango-low = '100392'. APPEND w_rango to i_rango.
w_rango-low = '100394'. APPEND w_rango to i_rango.
w_rango-low = '100396'. APPEND w_rango to i_rango.

Saludos

bisonye
28/08/09, 07:25:40
No hace falta rango ni or...

Como dice el Aviador la respuesta corresta es :
IF l_matnr IN ( '100392', '100394', '100396', '100398', '100388' ).
"codigo
ENDIF.

Saludos