Parametros Obligatorios Dinamicos

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • andresf02
    Senior Member
    • nov
    • 190

    #1

    Parametros Obligatorios Dinamicos

    Buenas Tardes.

    Tengo una pantalla de Seleccion con SELECT-OPTIONS dinamicos que segun la eleccion del usuario muestraran los campos para Filtrar por Entrega o por Transporte. (modulo SD).

    Código:
    Seleccion por Entrega     __________ O
    Seleccion por Transporte __________ O
    
    -----------------------------------------
    |                                                       |
    |     Area de Select Oprions Dinmicos       |
    |                                                       |
    -----------------------------------------
    Los Select-option para la Entrega son:
    Entrega (VBELN)
    Fecha de Entrega (ERDAT)
    Cliente (KUNNR)

    Los Select-option para el Transporte son:
    Transporte (TKNUM)
    Fecha TRansporte (ERDAT2)
    Ruta (ROUTE)


    Lo que necesito es lo siguiente:

    1- Que la seleccion de parametros por Entrega o por transporte sea excluyente. Es decir, si el usuario selecciona parametros por entrega, automaticamente todos los campos de seleccion por Transporte quedan vacios (asi el usuario haya escrito datos en ellos) y viceversa.

    2- Que al seleccionar parametros por entrega o por transporte, la fecha del registro (ERDAT o ERDAT2 para este ejemplo) se vuelva obligatoria.
    Aclaro que si defino estos campos con OBLIGATORY, los select-option dinamicos dejan de funcionar porque no deja refrecar la pantalla si hay alguna campo obligatorio vacio. Es decir, el campo quiero que se vuelva obligatorio una vez el usuario seleccion una de las dos formas de filtro , por entrega o por transporte.




    Gracias!
  • Neo_25
    Member
    • jun
    • 51

    #2
    Te pongo el código, pero no he acertado para ponerlo obligatorio la fecha cuando se ha seleccionado un radiobutton.

    Para poner obligatoria la fecha, puedes hacerlo por código y si no la ha escrito le das un mensaje de error y se para la ejecución del programa y ya está, se keda en la pantalla de selección de datos.

    Te he puesto como se pide q la fecha sea requerida (obligatoria), pero da el error q dices, al cambiar de radiobutton te sigue pidiendo obligatoria la fecha del otro radiobutton.

    A mi me funciona tal y como está, espero q te sirva.

    TABLES: eskn, mscs, vtfa, valw.
    ************************************************** **********************
    *** SELECTION-SCREEN / PARAMETERS / SELECT-OPTIONS
    ************************************************** **********************
    * Selección de datos
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-010.
    PARAMETERS:
    r_entre RADIOBUTTON GROUP grup USER-COMMAND r DEFAULT 'X',
    r_trans RADIOBUTTON GROUP grup.
    SELECTION-SCREEN END OF BLOCK b1.

    *Datos Entrega
    SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-011.
    SELECT-OPTIONS: so_vbeln FOR eskn-vbeln MODIF ID ent, "Número de documento comercial
    so_aedat FOR eskn-aedat MODIF ID ent, "Fecha de creación del registro
    so_kunnr FOR mscs-kunnr MODIF ID ent. "Nº de cliente
    SELECTION-SCREEN END OF BLOCK b2.

    *Datos Transporte
    SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-012.
    SELECT-OPTIONS: so_tknum FOR vtfa-tknum MODIF ID tra, "Nº de transporte
    so_erdat FOR vtfa-erdat MODIF ID tra, "Fecha de creación del registro
    so_route FOR valw-route MODIF ID tra. "Ruta
    SELECTION-SCREEN END OF BLOCK b3.

    *########################*
    *AT SELECTION-SCREEN.
    *########################*
    AT SELECTION-SCREEN OUTPUT.
    LOOP AT SCREEN.
    IF screen-group1 = 'TRA'.
    CASE r_trans.
    WHEN 'X'.
    screen-active = 1. "* no invisible
    ** Fecha obligatoria
    * IF screen-name = 'SO_ERDAT-LOW'.
    ** or screen-name = 'SO_ERDAT-HIGH'.
    * screen-required = 1. "Obligatoria
    * ENDIF.
    WHEN OTHERS.
    screen-active = 0. "* invisible
    ENDCASE.
    ELSEIF screen-group1 = 'ENT'.
    CASE r_trans.
    WHEN 'X'.
    screen-active = 0.

    WHEN OTHERS.
    screen-active = 1.
    ** Fecha obligatoria
    * IF screen-name = 'SO_AEDAT-LOW'.
    ** or screen-name = 'SO_AEDAT-HIGH'.
    * screen-required = 1.
    * ENDIF.
    ENDCASE.
    ENDIF.
    MODIFY SCREEN.
    ENDLOOP.

    Comentario

    • seimeinomi
      Member
      • oct
      • 75

      #3
      validar

      hola

      recuerda que cada select-option es una tabla.

      validas que no este vacia y listo mandas un mensaje.


      Saludos.
      Edward Manrique A.

      Comentario

      Trabajando...