Select Option Doble

Colapsar
Este tema está cerrado
X
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • budista1
    Senior Member
    • sep
    • 154

    #1

    Select Option Doble

    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
    Senior Member
    • jun
    • 117

    #2
    Intenta metiendo tú última condición entre paréntesis:

    OR auart IN (s_otype)
    "Si quieres resultados distintos, no hagas siempre lo mismo" .... Einstein

    Comentario

    • mysmb2
      Senior Member
      • ene
      • 406

      #3
      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.
      Sebastián Chiavia
      http://www.programacionabap.com.ar

      Comentario

      • DCErick
        Moderator
        • mar
        • 1090

        #4
        Oye pero cual es el problema con tu select...

        Que es lo que esperas que regrese y que es lo que te está regresando?
        -------------------
        ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

        Comentario

        • budista1
          Senior Member
          • sep
          • 154

          #5
          Sigue Sin Funcionar

          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

          Comentario

          • budista1
            Senior Member
            • sep
            • 154

            #6
            para Eric

            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

            Comentario

            • budista1
              Senior Member
              • sep
              • 154

              #7
              sorry

              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

              Comentario

              • DCErick
                Moderator
                • mar
                • 1090

                #8
                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.
                -------------------
                ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

                Comentario

                • budista1
                  Senior Member
                  • sep
                  • 154

                  #9
                  Merci

                  :d Perfecto Eric!


                  Era Justo Eso, Muchas Gracias

                  Comentario

                  Trabajando...