Текущее время: Ср, июл 30 2025, 10:43

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: cl_salv_table=>factory
СообщениеДобавлено: Сб, ноя 17 2012, 14:33 
Начинающий
Начинающий

Зарегистрирован:
Сб, ноя 17 2012, 14:28
Сообщения: 2
Добрый день.
Есть необходимость при выходе из ALV на селекционный экран задавать пользователю вопрос, уверен ли он, в том, что хочет выйти ))

Делаю так:

Code:
cl_salv_table=>factory(
          IMPORTING
             r_salv_table = gr_table
          CHANGING
             t_table      = at_alv ).

  gc_functions = gr_table->get_functions( ).
  gc_functions->set_all( 'X' ).

  gc_display = gr_table->get_display_settings( ).
  gc_display->set_list_header( 'Формирование запроса' ).

  lo_events = gr_table->get_event( ).
  SET HANDLER lcl_handler=>on_link_click FOR lo_events.

  go_columns = gr_table->get_columns( ).

TRY.
      go_column ?= go_columns->get_column( 'SEL' ).
      go_column->set_cell_type( if_salv_c_cell_type=>checkbox_hotspot ).
      go_column->set_key( ).
    CATCH cx_salv_not_found.
ENDTRY.

   gr_table->set_screen_status( report   = sy-repid
                             pfstatus = 'ZSTANDARD'
                             set_functions = gr_table->c_functions_all ).

gr_table->display( ).


try.
case sy-ucomm.
    when 'BACK'.
    CLEAR: answer.
CALL FUNCTION 'POPUP_TO_CONFIRM'
            EXPORTING
                titlebar              = 'Confirmation'
                text_question         = 'Вы уверены что хотите вернуться на экран выбора?'
                text_button_1         = 'Да'
                text_button_2         = 'Нет'
           IMPORTING
                answer                = answer
              EXCEPTIONS
                   text_not_found        = 1
                   OTHERS                = 2.

if answer = '2'.
  gr_table->display( ).
ENDIF.

ENDCASE.
ENDTRY.


Первый раз вопрос выводится и при нажатии "НЕТ", идет возврат на ALV... При нажатии на BACK второй раз, вопрос не задается и просто происхолит возврат на селекционный экран..
В чем может быть причина?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: cl_salv_table=>factory
СообщениеДобавлено: Сб, ноя 17 2012, 15:45 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июл 15 2009, 05:55
Сообщения: 174
Откуда: Мегион - > СПб
Пол: Мужской
Вам к данному объекту необходимо во-первых: зарегистрировать событие on_user_command в этом блоке

Code:
 
   ...
  lo_events = gr_table->get_event( ).
  SET HANDLER lcl_handler=>on_link_click FOR lo_events.
  ...

Обработчик данного события избавит от использования sy-ucomm и соответственно подчистки его, что необходимо делать всегда в таких случаях.

И для вторичного вывода лучше использовать не метод display, а refresh.

Задача очень красиво решается на ООП. Я бы вообще на вашем месте объявил свой внутренний класс, в методах которого и со свойствами алв работал, и обрабатывал необходимые события (главные принципы ООП не были бы нарушены)

_________________
Ничто так не заразительно, как смех начальника...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: cl_salv_table=>factory
СообщениеДобавлено: Пн, ноя 19 2012, 09:14 
Специалист
Специалист

Зарегистрирован:
Чт, дек 16 2010, 15:23
Сообщения: 133
Откуда: Набережные Челны
Пол: Мужской
Вызывайте после DISPLAY подпрограмму примерно следующего содержания:
Code:
FORM dialog.
  DATA: answer.

  CALL FUNCTION 'POPUP_TO_CONFIRM'
    EXPORTING
      titlebar       = 'Confirmation'
      text_question  = 'Вы уверены что хотите вернуться на экран выбора?'
      text_button_1  = 'Да'
      text_button_2  = 'Нет'
    IMPORTING
      answer         = answer
    EXCEPTIONS
      text_not_found = 1
      OTHERS         = 2.

  IF answer = '2'.
    gr_table->refresh( ).
    PERFORM dialog.
  ENDIF.
ENDFORM. 


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB