MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 29/10/09, 08:47:27
katanka3 katanka3 is offline
Junior Member
 
Fecha de Ingreso: nov 2007
Mensajes: 20
Sy-ucomm en Selection-screen

Hola buenas, despues de varios días sin obtener respuesta, lanzo mi pregunta de otras forma tal vez así me entendais mejor.

El problemas que tengo es que despues de lanzar un pantalla con el selecction screen, quiero controlar la navegacion de los botones back, up, cancel y el ejecutar.

En principio lo pensaba controlar con el sy-ucomm pero el problema es que cuando sale de la pantalla y va al report el sy-ucomm pasa de su valor al valor ONLI, para cualquier cosa que pulse por lo que no puedo controlar la navegacion enter varias pantallas de seleccion hechas con el selection-screen.


Gracias, de antemano, pero la verdad es que necesito vuestra, ayuda, llevo parado ya varios dias con este report y no veo que nadie sepa la respuesta.

POR FAVOR AYUDA!!!!!
Responder Con Cita
  #2  
Viejo 29/10/09, 11:09:42
miko-lynn miko-lynn is offline
Junior Member
 
Fecha de Ingreso: abr 2007
Mensajes: 21
en la pantalla de creación de la dynpro, en la pestaña lista elementos, en la lista que sale, hay una que pone tipo, busca el elemento que tiene valor = OK
y seguramente su nombre está en blanco. en nombre pon = OK_CODE.

el evento lógica de proceso de la dynpro pon:

PROCESS BEFORE OUTPUT.
MODULE STATUS_TuNumeroDeDynpro.

*

PROCESS AFTER INPUT.
MODULE USERCOMMAND_TuNumeroDeDynpro.
"aqui llamaremos al PAI.


En el USERCOMMAND, pon:




module USER_COMMAND_TuNumeroDeDynpro input.
OK_CODE = sy-ucomm. "aqui es donde le das valor al ok_code

CASE ok_code. "aquí es donde chequeas el ok_code.
WHEN 'BACK'.
LEAVE PROGRAM.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'CANC'.
LEAVE PROGRAM.
WHEN 'CLR'.
perform mirutina_clear.
WHEN 'BACK'.
perform mirutina_back.
WHEN 'NEXT'.
perform mirutina_next.
WHEN 'ONLY'.
perform mirutina_only.
WHEN OTHERS.
perform mirutina_others.

ENDCASE.
endmodule.



fijate que el sy-ucomm, no solo recoge el valor del botón o evento que hayamos ejecutado, SAP también le puede dar o quitar valor.
Si haces esto, antes de salir "fisicamente" de la dynpro, le traspasas el valor del sy-ucomm al ok_code y en función de uno u otro valor, ejecutas un perform u otro, y mientras no borres o cambies el valor de este ok_code, permanecera tal cual.

Espero haberte ayudado!
Responder Con Cita
  #3  
Viejo 29/10/09, 13:40:47
Avatar de Vique
Vique Vique is offline
Pregúntame por las Bolas Vique
 
Fecha de Ingreso: mar 2006
Mensajes: 146

Hola,
los botones a los que te refieres los defines tú en la pantalla de selección o son los botones estandar?

Si los defines tu: cuando hay definido un boton en la pantalla de selección, al pulsarlo salta el evento AT SELECTION-SCREEN. En ese momento el código de función asociado al botón se encuentra en el campo sscrfields-UCOMM y en el campo sy-ucomm.

Si son los estandar: para los botones Back, Exit y Cancel tienes el evento AT SELECTION-SCREEN ON EXIT-COMMAND para manejar esas acciones.

Espero te sirva de ayuda.
Un saludo.
__________________
¿Pero nadie me va a preguntar por las bolas Vique?
Responder Con Cita
  #4  
Viejo 29/10/09, 14:24:28
katanka3 katanka3 is offline
Junior Member
 
Fecha de Ingreso: nov 2007
Mensajes: 20

Hola,, gracias, por la ayuda, pero siguo con el problema de colocar el AT SELECTION-SCREEN ON EXIT-COMMAND. Ya que no lo puedo colocar dentro de ningun IF, CASE o similar. La verdad que ando perdido con el tema de las pantallas de seleccion creadas con el select-options, habrías sido mucho mas facil crearme una pantalla y yo asignar los botones, pero ya que estoy con esta duda me gustaria resolverla. Te pongo mi codigo para que veas.


* Primera pantalla de seleccion
SELECTION-SCREEN BEGIN OF BLOCK data.

PARAMETER p_dcnt RADIOBUTTON GROUP 001. " Detalle de contratos.
PARAMETER p_dcntb RADIOBUTTON GROUP 001. " Detalle de contratos con bonos
PARAMETER p_rescnt RADIOBUTTON GROUP 001. " Resumen de contratos
PARAMETER p_rcntb RADIOBUTTON GROUP 001. " Resumen de contratos con bonos

SELECTION-SCREEN END OF BLOCK data.
* Segunda pantalla de seleccion
SELECTION-SCREEN BEGIN OF SCREEN 1002 TITLE text-010.

* Contratos sin bonos - Sengunda ventana.

SELECTION-SCREEN BEGIN OF BLOCK screen01 WITH FRAME TITLE text-011.

SELECT-OPTIONS s_contra FOR ever-vertrag. " Contrato
SELECT-OPTIONS s_instal FOR ever-anlage. " Instalacion
SELECT-OPTIONS s_fechba FOR ever-auszdat. " Fecha de baja
SELECT-OPTIONS s_fecfin FOR eanlh-bis. " Fecha de fin de validez
SELECT-OPTIONS s_bloqca FOR ever-abrsperr. " Motivo de bloqueo de calculo
SELECT-OPTIONS s_tarifa FOR eanlh-tariftyp. " Tipo de tarifa
SELECT-OPTIONS s_debi FOR ever-xvera. " Contrato creado debido
SELECT-OPTIONS s_serv FOR eanlh-billing_party. " Productor de servicios

SELECTION-SCREEN END OF BLOCK screen01.


SELECTION-SCREEN BEGIN OF BLOCK screen02 WITH FRAME TITLE text-012.

PARAMETER p_dcnt1 AS CHECKBOX DEFAULT ' '. " Detalle de contratos.

SELECTION-SCREEN END OF BLOCK screen02.


SELECTION-SCREEN END OF SCREEN 1002.


* Contratos con bonos - Tercera panatalla de seleccion
SELECTION-SCREEN BEGIN OF SCREEN 1004 TITLE text-010.

SELECTION-SCREEN BEGIN OF BLOCK screen03 WITH FRAME TITLE text-012.
SELECT-OPTIONS s_contr2 FOR ever-vertrag. " Contrato
SELECT-OPTIONS s_insta2 FOR ever-anlage. " Instalacion
SELECT-OPTIONS s_fechb2 FOR ever-auszdat. " Fecha de baja
SELECT-OPTIONS s_fecfi2 FOR eanlh-bis. " Fecha de fin de validez
SELECT-OPTIONS s_debi2 FOR ever-xvera. " Contrato creado debido
SELECT-OPTIONS s_bloqc2 FOR ever-abrsperr." Motivo de bloqueo de alculo
SELECT-OPTIONS s_tarif2 FOR eanlh-tariftyp. " Tipo de tarifa
SELECT-OPTIONS s_opera2 FOR ettifn-operand. " Operando
SELECT-OPTIONS s_rate2 FOR ettifn-tarifart. " Rate Type
SELECT-OPTIONS s_serv2 FOR eanlh-billing_party. " Productor de servicios
SELECT-OPTIONS s_fecfi3 FOR ettifn-bis. " Fecha de fin de validez
SELECTION-SCREEN END OF BLOCK screen03.

SELECTION-SCREEN BEGIN OF BLOCK screen04 WITH FRAME TITLE text-012.

PARAMETER p_dcnt2 AS CHECKBOX DEFAULT ' '. " Detalle de contratos.

SELECTION-SCREEN END OF BLOCK screen04.
SELECTION-SCREEN END OF SCREEN 1004.


INITIALIZATION.

AT SELECTION-SCREEN ON EXIT-COMMAND.

START-OF-SELECTION.

IF p_dcnt IS NOT INITIAL. " Si elijo la primera opicion me lleva a un 2º pantalla
PERFORM pantalla_select_sin_bono. " Selecciono los datos en la 2º pantalla
PERFORM detalles_sin_bono. " lanzo una ALV en una 3ª pantalla

ELSEIF p_rescnt IS NOT INITIAL. " Si elijo la segunda opicion
* Cargo los datos para mostar en el resumen
PERFORM cargar_resumen_estadisticas. " Cargo la 2ª pantalla
* Lanzo el resumen
PERFORM lanzar_resumen. " lanzo la otra alv en una 4º pantalla

ELSEIF p_dcntb IS NOT INITIAL.
CALL SELECTION-SCREEN 1004.
* Se lanza la ALV de contratos sin bonos
* Llamamos al PBO de la pantanlla para que lance la carga y mostrar la alv.
CALL SCREEN 1005.


ELSEIF p_rcntb IS NOT INITIAL.
PERFORM cargar_res_bono.
PERFORM lanzar_resumen_bonos.

MESSAGE i001(00) WITH text-t01.

ENDIF.

No se como hacer para colocar el AT SELECTION-SCREEN ON EXIT-COMMAND.

Gracias de antemano
Responder Con Cita
  #5  
Viejo 29/10/09, 15:22:32
Avatar de Vique
Vique Vique is offline
Pregúntame por las Bolas Vique
 
Fecha de Ingreso: mar 2006
Mensajes: 146
Buenas,
lo del AT SELECTION-SCREEN ON EXIT-COMMAND es un evento mas, es igual que el evento START-OF-SELECTION.

Vamos... que no puedes hacer:
if (condicion).
at selection-screen on exit-command.
endif.

es mas bien:

** Definición de tus selection-screens

AT SELECTION-SCREEN ON EXIT-COMMAND.
case sscrfields-ucomm.
when 'CCAN'. "Cancel
* Haz lo que quieras
when....

encase.

START-OF-SELECTION.
* Logica del programa


La verdad es que viendo un poco el codigo que has puesto y si he entendido bien lo que pretendes hacer (dependiendo del radio-button seleccionado, mostrar una pantalla de seleccion u otra, es algo asi?), lo que podrias haber hecho era una sola selection-screen y hacer los campos visibles o invisibles dependiendo del radio-button seleccionado... los botones de atrás, salir y cancelar funcionarian de forma normal y no tendiras que codificar nada....a no se que necesites hacer algo especial cuando se pulsen los botones estandar?

Espero no haberte liado mas.
Un saludo.
__________________
¿Pero nadie me va a preguntar por las bolas Vique?
Responder Con Cita
  #6  
Viejo 30/10/09, 10:13:05
katanka3 katanka3 is offline
Junior Member
 
Fecha de Ingreso: nov 2007
Mensajes: 20
Gracias a todos por la ayuda,, al final lo he solucionado poniendo el siguiente codigo:


INITIALIZATION.

AT SELECTION-SCREEN ON EXIT-COMMAND.

ok_code = sy-ucomm.

START-OF-SELECTION.


IF p_dcnt IS NOT INITIAL. " Si seleccionamos la primera opcion.
* Cargo la segunda pantalla de seleccion
PERFORM pantalla_select_sin_bono.
* Lanzo la ALV sin bonos.
PERFORM detalles_sin_bono.

ELSEIF p_rescnt IS NOT INITIAL. " Si seleccionamos la segundas opcion.
* Cargo los datos para mostrar en el resumen.
PERFORM cargar_resumen_estadisticas.
* Lanzo el resumen
PERFORM lanzar_resumen.

ELSEIF p_dcntb IS NOT INITIAL.
* Cargo la segunda pantalla de seleccion
PERFORM pantalla_select_con_bono.
* Se lanza la ALV de contratos sin bonos
* Llamamos al PBO de la pantanlla para que lance la carga y mostrar la alv.
PERFORM detalles_con_bono.

ELSEIF p_rcntb IS NOT INITIAL.
* Cargo los datos para mostrar en el resumen.
PERFORM cargar_res_bono.
* Lanzo la ALV con los resumenes de los bonos.
PERFORM lanzar_resumen_bonos.

ENDIF.


Parece que la clave para manejar las ventanas estaba en poner el sy-ucomm despues del AT SELECTION-SCREEN ON EXIT-COMMAND y ahi lo guardo en ok_code y entre el STAR-OF-SELECTION.

Gracias a todos. Un saludo
Responder Con Cita
  #7  
Viejo 30/10/09, 11:49:48
katanka3 katanka3 is offline
Junior Member
 
Fecha de Ingreso: nov 2007
Mensajes: 20
Parece que sigo con problemas con mi codigo,,, el ok_code solo lo recoge si utilizo una variante,,, en cuanto,, meto algo en la pantalla de seleccion que filtre por un campo desaparece el ok_code, y sy-ucomm no sale nada.
Responder Con Cita
  #8  
Viejo 30/10/09, 15:42:49
Avatar de Vique
Vique Vique is offline
Pregúntame por las Bolas Vique
 
Fecha de Ingreso: mar 2006
Mensajes: 146

Buenas,
para los botones que no son los de atras, cancelar o salir... tienes que utilizar el evento AT SELECTION-SCREEN.

Por ejemplo, al pulsar el botón de Ejecutar(F8) no salta el evento AT SELECTION-SCREEN ON EXIT-COMMAND sino el evento AT SELECTION-SCREEN.
Tal vez te está faltando eso?

Un saludo.
__________________
¿Pero nadie me va a preguntar por las bolas Vique?
Responder Con Cita
  #9  
Viejo 03/11/09, 11:53:10
katanka3 katanka3 is offline
Junior Member
 
Fecha de Ingreso: nov 2007
Mensajes: 20
me encuentro en una situacion complicada, ya llevo mas tiempo del que debia con el mismo report.

El problema es que me he creado una subscreen para lanzar una screen creadas con selec-options para asi poder crear el module user_command y controlar la pantalla del select-option.

Para la 1002 (pantalla del selec option) ya cree variantes pero tenia el problema de que los botones standars de navegacion no hacian lo que queria. Asi que me cree la subscreen para tener una dynpro que si pudiera controlar.

Ahora puedo controlar los botones atras arriba y cancel de la pantalla del select-options, pero me creado el boton salvar que usa la funcion RS_VARIANT_SAVE_FROM_SELSCREEN y me da un error que dice "" La imagen de selección 0101 no contiene ningún objeto "" y la 0101 es la pantalla de la subscreen que llama al select-option..

Necesito ayuda, saber por que me esta dando este fallo
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 10:54:56.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web