Текущее время: Вт, июл 29 2025, 02:30

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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