¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como manter uma janela pop-up aberta ao não passar nas verificações - Guia passo a passo

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

Olá especialistas,

Existe uma janela pop-up, com dois botões:

SALVAR

CANCELAR.

Eu crio o pop-up desta maneira:


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       =  'Salvar'
                   action_name       = 'SALVAR'
                   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       = 'Cancelar'
                   action_name       = 'CANCELAR'
                   action_view       = lr_view_controller
                   is_default_button = abap_true ).

   lr_popup->open( ).

Meu problema é que, se o usuário pressionar o botão SALVAR, então tenho que fazer algumas verificações e, se elas não passarem, uma mensagem de erro deve ser criada e o pop-up não deve fechar.

Minha pergunta é: Como posso fazer isso?

Está bem se eu usar o parâmetro:


 close_in_any_case   = abap_false

então o pop-up não é fechado, mas como posso fechá-lo no método manipulador da ação do botão Fechar (ou salvar quando as verificações estiverem corretas)

Obrigado.

N.

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

4 Respuestas

0
Cargando...

Olá,

Sim, mas se eu escrever as validações na visualização principal (os métodos estão na visualização principal) então a mensagem de erro é exibida na visualização principal e não na janela pop-up. Estou correto?

Adeus

N.

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

Olá,

Como você já criou ações (SALVAR, CANCELAR) usando o método subscribe. As ações/métodos relevantes são exibidos na aba MÉTODOS da visualização.

Por favor, escreva o código relevante no método SALVAR para realizar validações. Não é necessário utilizar WDDOBEFOREACTION.

E se houver erros e o botão CANCELAR for clicado, então no link fornecido, limpe as mensagens e feche a janela.

Está claro?

Saudações,

Lekha.

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

Olá,

Você está certo, eu gostaria de exibir a mensagem de erro na janela pop-up. Eu o implementei no WDDOBEFOREACTION,

Mas o problema é que não consigo distinguir entre o botão SALVAR e o botão CANCELAR, porque não há informações sobre a ação aqui:


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.

Essas verificações e a mensagem de erro são necessárias apenas se o usuário pressionar o botão Salvar. O botão Cancelar apenas fecha a janela.

Adeus

N.

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

Olá,

Quando houver erros, você deseja exibi-los em um pop-up? Se houver erros e o usuário fechar a janela (clicando no botão de fechar), então esses erros serão exibidos na visualização principal em vez da janela pop-up.

Você deseja lidar com isso também?

Além de tornar o botão de fechar abap_false, há um método para lidar com o fechamento do botão na interface if_wd_window.

Tente usar e escrever o código para fechar a janela.

Se não deseja exibir os erros na visualização principal, no método anterior para fechar a janela, limpe todas as mensagens e então feche a janela.

Verifique este link -

Saudações,

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?