¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo mantener abierta una ventana emergente al no pasar las comprobaciones - Guía paso a paso

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 11 Vistas
0
Cargando...

Hi experts,

There is a popup window, with two button:

SAVE

CANCEL.

i create the popup in this way:


lr_popup = lr_window_manager->create_window(
    modal               = abap_true
    window_name         = 'WND_POPUP'
    title               = lv_text
    close_button        = abap_true
    button_kind         = if_wd_window=>co_buttons_yesno
    message_type        = if_wd_window=>CO_MSG_TYPE_NONE 
    close_in_any_case   = abap_true
    ).

 lr_view_controller = wd_this->wd_get_api( ).

   lr_popup->subscribe_to_button_event(
                   button            = if_wd_window=>co_button_yes
                   button_text       =  'Save'
                   action_name       = 'SAVE'
                   action_view       = lr_view_controller
                   is_default_button = abap_true ).


   lr_popup->subscribe_to_button_event(
                   button            = if_wd_window=>co_button_no
                   button_text       = 'Cancel'
                   action_name       = 'CANCEL'
                   action_view       = lr_view_controller
                   is_default_button = abap_true ).

   lr_popup->open( ).

My problem is that, if the user press the SAVE button, then I have to make some checks, and if they don't pass, an error message should be created, and the popup shouldn't close.

My question is: How can I do that?

It's ok that if I use the paramter:


 close_in_any_case   = abap_false

then the popup isn't closed, but how can I close it in the action handler method of the Close button (or the save when the cehcks are fine)

Thnaks.

N.

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola,

Sí, pero si escribo las validaciones en la vista principal (los métodos están en la vista principal) entonces el mensaje de error se muestra en la vista principal, y no en la ventana emergente. ¿Estoy en lo correcto?

Adiós

N.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola,

Como ya has creado acciones (GUARDAR, CANCELAR) usando el método subscribe. Las acciones/métodos relevantes se muestran en la pestaña MÉTODOS de la vista.

Por favor escribe el código relevante en el método GUARDAR para realizar validaciones. No es necesario utilizar WDDOBEFOREACTION.

Y si hay errores y se hace clic en el botón CANCELAR, entonces en el enlace que proporcioné, borra los mensajes y cierra la ventana.

¿Está claro?

Saludos,

Lekha.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola,

Tienes razón, me gustaría mostrar el mensaje de error en la ventana emergente. Lo implementé en el WDDOBEFOREACTION,

Pero el problema es que no puedo distinguir entre el botón GUARDAR y el botón CANCELAR, porque no hay información sobre la acción aquí:


data lo_api_controller type ref to if_wd_view_controller.
  data lo_action         type ref to if_wd_action.

  lo_api_controller = wd_this->wd_get_api( ).
  lo_action = lo_api_controller->get_current_action( ).

  if lo_action is bound.
    case lo_action->name.
      when '...'.
    endcase.
  endif.

Estas comprobaciones y el mensaje de error solo son necesarios si el usuario presiona el botón Guardar. El botón Cancelar solo cierra la ventana.

Adiós

N.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola,

¿Cuando hay errores, quieres mostrarlos en un popup? Si hay errores y el usuario cierra la ventana (haciendo clic en el botón de cerrar), entonces estos errores se muestran en la vista principal en lugar de en la ventana emergente.

¿Quieres manejar esto también?

Además de hacer que el botón de cerrar sea abap_false, hay un método para manejar el cierre del botón en la interfaz if_wd_window.

Intenta usar y escribir el código para cerrar la ventana.

Si no deseas mostrar los errores en la vista principal, en el método anterior para cerrar la ventana, elimina todos los mensajes y luego cierra la ventana.

Revisa este enlace -

Saludos,

Lekha.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?