Ayuda con un selection screen

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Drako
    Member
    • nov
    • 60

    #1

    Ayuda con un selection screen

    Hola a todos, me han pedido que realize un selection screen con checkbox y radio buttons pero no me sale, si alguien tuviera una solucion se las agradeceria mucho, saludos...
    Archivos Adjuntos
    Drako
  • Mauricio Hidalgo
    Senior Member
    • may
    • 481

    #2
    ESPERO TE ORIENTE BIEN.

    program ztest2.

    selection-screen begin of block archivo with frame title text-008.
    parameters: p_obj1 TYPE C no-display.
    parameters: p_obj2 TYPE C no-display.
    parameters: p_obj3 TYPE C no-display.
    parameters: p_obj4 TYPE C no-display.
    parameters: p_obj5 TYPE C no-display.
    parameters: p_obj6 TYPE C no-display.

    parameters: p_pc like ibipparms-pc radiobutton group radi
    user-command UCOMM1.
    parameters: p_unix like ibipparms-unix radiobutton group radi.
    parameters: p_server like ibipparms-server.
    parameters: p_path like IBIPPARMS-PATH.
    parameters: p_modi type char1 as checkbox .
    selection-screen end of block archivo.

    parameters p_dato1 type c as checkbox user-command c1.
    parameters p_dato2 type c as checkbox user-command c2.
    parameters p_dato3 type c as checkbox user-command c3.

    at selection-screen.
    case sy-ucomm.
    when 'C1'.
    message S001(00) with 'c1'.
    when 'C2'.
    message S001(00) with 'c2'.
    when 'C3'.
    message S001(00) with 'c3'.
    endcase.


    * F4 PARA SELECCION DE ARCHIVOS
    at selection-screen on value-request for p_path.
    IF p_pc = 'X'.
    CALL FUNCTION 'F4_FILENAME'
    EXPORTING
    field_name = 'P_PATH'
    IMPORTING
    file_name = P_PATH.
    ELSEIF p_unix = 'X'.
    CALL FUNCTION 'F4_FILENAME_SERVER' DESTINATION p_server
    EXPORTING
    pfad = P_PATH
    EXCEPTIONS
    no_file_on_server = 1
    OTHERS = 2.
    ENDIF.

    Comentario

    • Drako
      Member
      • nov
      • 60

      #3
      Gracias

      Muchas gracias, me oriento en lo que estoy realizando, saludos...
      Drako

      Comentario

      • Drako
        Member
        • nov
        • 60

        #4
        Hola a todos de nuevo, lamentablemente y despues de muchos intentos lo que quiero hacer funcionar no me sale, espero que alguien sepa como hacer lo que requiero, en la imagen viene el tipo de selection screen que ocupo, ya logre que se vea de esa manera pero no me sale la funcionalidad de habilitar/deshabilitar los campos de captura de la direccion a usar por el programa.
        Drako

        Comentario

        • Claudia Valdespino
          Member
          • mar
          • 54

          #5
          Hola Drako, lo que quieres hacer es que cuando selecciones el primer radiobutton se deshabilite el de abajo?? Si es asi usa un LOOP AT SCREEN de esta manera:

          AT SELECTION-SCREEN OUTPUT.
          LOOP AT SCREEN.
          IF rb_op1 EQ 'X'.
          IF screen-name EQ 'P_ARCH1'.
          MOVE '1' TO screen-input.
          ENDIF.
          IF screen-name EQ 'P_ARCH2'.
          MOVE '0' TO screen-input.
          ENDIF.
          ELSE.
          IF rb_op2 EQ 'X'.
          IF screen-name EQ 'P_ARCH1'.
          MOVE '0' TO screen-input.
          ENDIF.
          IF screen-name EQ 'P_ARCH2'.
          MOVE '1' TO screen-input.
          ENDIF.
          ENDIF.
          ENDIF.

          MODIFY SCREEN.
          ENDLOOP.
          Saludos,

          Claudia V.

          Comentario

          • Drako
            Member
            • nov
            • 60

            #6
            Hola Claudia, creo que tu respuesta se acerca a lo que quiero mas no se como aplicarlo al codigo, ya intente meter lo que tengo dentro del codigo que me mandaste pero no me funciona, te voy a poner el codigo que tengo para ver si puedes darte una idea de lo que quiero hacer, gracias de antemano...

            SELECTION-SCREEN BEGIN OF BLOCK scr2 WITH FRAME TITLE text-010.

            PARAMETER: descarga AS CHECKBOX.

            SELECTION-SCREEN BEGIN OF LINE.
            PARAMETERS rad_pc RADIOBUTTON GROUP r1.
            SELECTION-SCREEN COMMENT 4(28) text-011.
            SELECTION-SCREEN POSITION 32.
            PARAMETERS dir_pc(200).
            SELECTION-SCREEN END OF LINE.

            SELECTION-SCREEN BEGIN OF LINE.
            PARAMETERS rad_unix RADIOBUTTON GROUP r1.
            SELECTION-SCREEN COMMENT 4(28) text-012.
            SELECTION-SCREEN POSITION 32.
            PARAMETERS dir_unix(200).
            SELECTION-SCREEN END OF LINE.

            SELECTION-SCREEN END OF BLOCK scr2.

            [IMG]C:\Documents and Settings\Administrator.E\Desktop\CONTROLES[/IMG]
            Drako

            Comentario

            • Claudia Valdespino
              Member
              • mar
              • 54

              #7
              Listooooo!!!! jejejeje. Vi tu código y te faltaba una pequeñez después de declarar tu radiobutton: USER-COMMAND enter. Y tus parámetros debes declararlos del tipo RLGRAP-FILENAME para que puedas llamar al explorador de windows y esgojas la ruta de tu archivo. Ahora tu código quedaria de la siguiente manera:

              SELECTION-SCREEN BEGIN OF BLOCK scr2 WITH FRAME TITLE text-010.

              PARAMETER: descarga AS CHECKBOX.

              SELECTION-SCREEN BEGIN OF LINE.
              PARAMETERS rad_pc RADIOBUTTON GROUP r1 USER-COMMAND enter.
              SELECTION-SCREEN COMMENT 4(28) text-011.
              SELECTION-SCREEN POSITION 32.
              *PARAMETERS dir_pc(200).
              PARAMETERs dir_pc LIKE RLGRAP-FILENAME.
              SELECTION-SCREEN END OF LINE.

              SELECTION-SCREEN BEGIN OF LINE.
              PARAMETERS rad_unix RADIOBUTTON GROUP r1.
              SELECTION-SCREEN COMMENT 4(28) text-012.
              SELECTION-SCREEN POSITION 32.
              *PARAMETERS dir_unix(200).
              PARAMETERs dir_unix LIKE RLGRAP-FILENAME.
              SELECTION-SCREEN END OF LINE.

              SELECTION-SCREEN END OF BLOCK scr2.


              AT SELECTION-SCREEN OUTPUT.
              LOOP AT SCREEN.
              IF rad_pc EQ 'X'.
              IF screen-name EQ 'DIR_PC'.
              MOVE '1' TO screen-input.
              ENDIF.
              IF screen-name EQ 'DIR_UNIX'.
              MOVE '0' TO screen-input.
              ENDIF.
              ELSEIF rad_unix EQ 'X'.
              IF screen-name EQ 'DIR_PC'.
              MOVE '0' TO screen-input.
              ENDIF.
              IF screen-name EQ 'DIR_UNIX'.
              MOVE '1' TO screen-input.
              ENDIF.
              ENDIF.

              MODIFY SCREEN.
              ENDLOOP.

              AT SELECTION-SCREEN ON VALUE-REQUEST FOR dir_pc.
              CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
              CHANGING
              FILE_NAME = dir_pc
              EXCEPTIONS
              MASK_TOO_LONG = 1
              OTHERS = 2.

              AT SELECTION-SCREEN ON VALUE-REQUEST FOR dir_unix.
              CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
              CHANGING
              FILE_NAME = dir_unix
              EXCEPTIONS
              MASK_TOO_LONG = 1
              OTHERS = 2.

              START-OF-SELECTION.
              IF rad_pc EQ 'X'.
              perform descarga_pc.
              elseif rad_unix eq 'X'.
              perform descarga_unix.
              endif.

              Ahora si te va a salir
              Saludos,

              Claudia V.

              Comentario

              • Drako
                Member
                • nov
                • 60

                #8
                Muchas gracias!!

                En efecto era lo necesario para que funcionara, mis mas sinceras gratificaciones y si en cualquier cosa que te pueda ayudar no dudes en escribirme al mail

                Saludos y espero que estes bien...
                Drako

                Comentario

                Trabajando...