PDA

Ver la Versión Completa : Ayuda con un selection screen


Drako
03/05/07, 21:18:21
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...

Mauricio Hidalgo
04/05/07, 15:25:47
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.

Drako
04/05/07, 20:53:51
Muchas gracias, me oriento en lo que estoy realizando, saludos... :)

Drako
07/05/07, 23:11:03
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.

Claudia Valdespino
08/05/07, 14:59:37
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.

Drako
08/05/07, 16:48:11
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.

C:\Documents and Settings\Administrator.E\Desktop\CONTROLES

Claudia Valdespino
08/05/07, 17:51:05
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 :cool:

Drako
08/05/07, 19:35:46
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... :cool: