PDA

Ver la Versión Completa : Mensaje de error en reporte de acuerdo a radio button y parametro


yvrn
03/04/09, 03:55:27
Hola! Estoy haciendo un reporte, cuya pantalla de selección contiene unos radio button y unos campos de selección. Si el usuario marca una de las opciones del grupo de radio buttons se esconden ciertos campos. Los campos obligatorios varian segun la opcion de radio button. Estoy verificando los campos obligatorios al dispararse el evento START-OF-SELECTION. El problema es que el mensaje de error me sale en la siguiente pantalla y cuando continuo, me lleva a la pantalla de SAP EASY ACCESS y me gustaria es que fuera a mi pantalla de selección del reporte o hacer que el mensaje de error me saliera en la primera pantalla en vez de la siguiente. Intenté colocar los mensajes de error en el evento AT SELECTION SCREEN pero el problema es que no toma en cuenta el manejo de campos que hago para ocultarlos segun el radio button.

Mi codigo para esa parte es el siguiente:

*&---------------------------------------------------------------------*
*& S E L E C T I O N - S C R E E N
*&---------------------------------------------------------------------*

selection-screen begin of block form3 with frame title text-003.
parameters:
pd radiobutton group rad1 user-command uc1, "Precio & Disponibilidad
pr radiobutton group rad1, "Lista de Precio
di radiobutton group rad1. "Disponibilidad

selection-screen end of block form3.


selection-screen begin of block form1 with frame title text-001.

parameters: centro like v_t001w-werks.
select-options:
material for mara-matnr,
grupo for v023-matkl.


selection-screen end of block form1.

selection-screen begin of block form2 with frame title text-002.
parameters:
fecha like sy-datum obligatory default sy-datum.
select-options:
org for v_tvko-vkorg ,
canal for v_tvtw-vtweg ,
lista for v_t189-pltyp,
cliente for v_tvko-kunnr.
selection-screen end of block form2.



*&---------------------------------------------------------------------*
*& A T - S E L E C T I O N - S C R E E N
*&---------------------------------------------------------------------*

at selection-screen output.

*Dependiendo de la opción que escoja el usuario se ocultan ciertos campos
loop at screen.
if di = 'X'.
if screen-name cs 'fecha' or screen-name cs 'org' or screen-name cs 'canal' or screen-name cs 'lista' or screen-name cs 'cliente'.
screen-invisible = '1'.
screen-input = '0'.
endif.
elseif pr = 'X'.

if screen-name cs 'centro'.

screen-invisible = '1'.
screen-input = '0'.

endif.


endif.


modify screen.

endloop.




*&---------------------------------------------------------------------*
*& S T A R T - O F - S E L E C T I O N
*&---------------------------------------------------------------------*
start-of-selection.

" Revisión de los campos obligatorios según la opción elegida
if di = 'X' and centro is initial.
message 'Para conocer la disponibilidad, es requerido indicar centro' type 'E'.

elseif pr = 'X' and ( org is initial or canal is initial ).
message 'Para conocer el precio, es requerido indicar organización y canal' type 'E'.

elseif pd = 'X' and ( centro is initial or org is initial or canal is initial ).
message 'Para conocer la disponibilidad y el precio, es requerido indicar centro, organización y canal' type 'E'.

endif.

Alguna idea?

Graciaaaas!

Mike
03/04/09, 12:42:50
Puedes hacer que el mensaje de error tipo E sea tipo I y luego de la instrucccion del mensaje colocas un exit. de esa manera te saldra el mensaje y volveras a la pantalla de seleccion.


*&---------------------------------------------------------------------*
*& S T A R T - O F - S E L E C T I O N
*&---------------------------------------------------------------------*
start-of-selection.

" Revisión de los campos obligatorios según la opción elegida
if di = 'X' and centro is initial.
message 'Para conocer la disponibilidad, es requerido indicar centro' type 'I'.
EXIT.
elseif pr = 'X' and ( org is initial or canal is initial ).
message 'Para conocer el precio, es requerido indicar organización y canal' type 'I'.
EXIT.
elseif pd = 'X' and ( centro is initial or org is initial or canal is initial ).
message 'Para conocer la disponibilidad y el precio, es requerido indicar centro, organización y canal' type 'I'.
EXIT.
endif.

y si quieres que se vea el icono del triangulo rojo en el mensaje agregale display like 'E'. asi:

message 'Para conocer la disponibilidad, es requerido indicar centro' type 'I' display like 'E'.