Problema en sentencia IF

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • zehiter
    Member
    • oct
    • 92

    #1

    Problema en sentencia IF

    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
    Member
    • nov
    • 36

    #2
    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.

    Comentario

    • Tonnyman
      Member
      • dic
      • 53

      #3
      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.

      Comentario

      • el_aviador
        Junior Member
        • ene
        • 6

        #4
        En la misma linea

        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

        Comentario

        • bisonye
          Senior Member
          • ago
          • 635

          #5
          No hace falta rango ni or...

          Como dice el Aviador la respuesta corresta es :
          Código:
          IF l_matnr IN ( '100392', '100394', '100396', '100398', '100388' ).
          "codigo
          ENDIF.
          Saludos
          http://sapymas.blogspot.com/

          Comentario

          Trabajando...