Dudas sobre Select options.

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Oscar Lugo
    Junior Member
    • ago
    • 4

    #1

    Dudas sobre Select options.

    Hola, que tal soy nuevo en el foro y tampoco tengo mucha experiencia programando.

    Les quisiera pedir ayuda para lo siguiente:

    Creé un ALV con dynpro y en el llenado de los parametros para que me salga el cliente forzosamente tengo que poner los 10 digitos, aunque mis clientes solo utilizan 6 digitos ! alguien me puede ayudar a resolver esto para evadir los 4 "ceros" anteriores.

    Y tambien quisiera saber si se puede en la dynpro seleccionar que los campos de entrada y salida sean obligatorios !

    Mil gracias de antemano, espero sus respuestas.

    Oscar Lugo.
    Oscar Lugo !
  • calanis
    Senior Member
    • oct
    • 147

    #2
    Hola Oscar!

    Mi recomendación es que apliques un código similar al siguiente
    TABLES:KNA1."-->Maestro de Clientes
    SELECT-OPTIONS S_KUNNR FOR KNA1-KUNNR OBLIGATORY.
    *El agregado OBLIGATORY hace que el campo sea obligatorio
    Veras que el tipo definido del campo KNA1-KUNNR es un NUMC de 10 de largo que hace que sea visible un valor como 1045, pero internamente observaras 0000001045.

    Para ver más detalles de opciones adicionales, mira la siguiente dirección:
    Ayuda de SAP online
    O bien selecciona la sentencia y presiona F1 y te traera la ayuda del sistema.

    Espero te sirva

    Saludos
    Carlos D. Alanis
    <=<< Compartir conocimiento es una manera de innovar >>=>

    Comentario

    • Oscar Lugo
      Junior Member
      • ago
      • 4

      #3
      Hola Carlos ! Gracias por la ayuda ! mira la sentencia *Obligatory* si la ubico , lo que pasa es que aqui no estoy declarando select-options, sino que la estoy mandando directo a la dynpro. Y ahi es donde no le puedo meter el "Obligatory" porque lo estoy metiendo en un "where".

      En cuanto a lo del KUNNR, lo que sucede es que si le pongo 0000550000 me trae todos los datos perfectamente ! Lo que quiero es solo tener que ponerle despues del 550000. Pero no busca esa seleccion !

      Gracias de antemano!
      Oscar Lugo !

      Comentario

      • calanis
        Senior Member
        • oct
        • 147

        #4
        Buenas tardes Oscar!

        Creo que igualemente puedes aplicar la sentecia SELECT-OPTIONS, dado que puedes incorporarlo como una SUBSCREEN a tú Dynpro.
        Mira los siguientes Links para guiarte
        Link 1
        Link 2

        Ahora eso de que no puedes asociar un campo a Where, no lo entiendo bien.
        Eso depende como definas el parametro que envias a tú consulta.
        Si es un parametro Simple o Si es un rango.

        En cuanto al parametro que se te pone mal, te reitero es por que tienes mal definido el campo con el que llegas a la consulta.
        Puedes tomar 2 caminos:
        1-Redefinir el Parametro para que se ingresen los valores correctamente
        EJ: Si buscas clientes defines la variable como:
        DATA:
        LV_KUNNR TYPE KNA1-KUNNR, "-->SI
        LV_KUNN1(10), "-->NO
        LV_KUNN2 TYPE CHAR10.-->NO

        2-Ajustar el valor para que llegue bien a la consulta.
        Para ello utilizar las funciones
        CONVERSION_EXIT_ALPHA_INPUT Conversion exit ALPHA, external->internal
        CONVERSION_EXIT_ALPHA_OUTPUT Conversion exit ALPHA, internal->external
        Por ejemplo:
        DATA:LV_KUNN1(10)."Mal definido
        LV_KUNN1 = '550000'.
        write:/0 LV_KUNN1.
        call function 'CONVERSION_EXIT_ALPHA_INPUT'
        exporting
        input = lv_kunn1
        importing
        output = lv_kunn1.
        write:/0 LV_KUNN1." te deberia Mostrar 0000550000 osea le coloca los '0'
        Para llamar a tú Select
        DATA:
        lt_kna1 type standart table of kna1,
        ls_kna1 type kna1.
        *Si es parametro ==> p_kunnr
        Select *
        INTO table lt_kna1
        where kunnr = p_kunnr.
        IF sy-subrc is initial.
        endif.

        *Si es rango ==>s_kunnr
        Select *
        INTO table lt_kna1
        where kunnr in s_kunnr.
        IF sy-subrc is initial.
        endif.
        Saludos espero te sirva
        Carlos D. Alanis
        <=<< Compartir conocimiento es una manera de innovar >>=>

        Comentario

        • Oscar Lugo
          Junior Member
          • ago
          • 4

          #5
          Carlos, Gracias ! =D

          Tus ejemplos ya los vi y son bastante funcionales !

          Sin embargo ya me acerque con mi jefe el día de ayer y me ayudo a resolver mis dudas, de igual manera te agradezco mucho, espero contar con tu ayuda para las siguientes dudas que se me vayan presentando!

          Saludos y gracias.
          Oscar Lugo !

          Comentario

          Trabajando...