Текущее время: Ср, июн 18 2025, 00:20

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: GUI-статус при использовании REUSE_ALV_GRID_DISPLAY
СообщениеДобавлено: Пт, дек 21 2007, 14:27 
Начинающий
Начинающий

Зарегистрирован:
Пт, дек 21 2007, 14:16
Сообщения: 8
Откуда: Беларусь
Столкнулся с такой проблемой, нужно чтобы по нажатию кнопки Back на панели управления программа возвращалась на SELECTION SCREEN, а у меня оно вываливается из проги. Прикрутил свой статус, хотел сменить событие на кнопке на LEAVE TO CURRENT TRANSACTION и вот как-то не нашел где. В форме USER COMMAND оно не ловится.

Code:
*****************************************************************
* Form Set_pf_status
* Notes: Called by FM REUSE_ALV_GRID_DISPLAY
*****************************************************************
FORM set_pf_status USING rt_extab TYPE slis_t_extab.
SET PF-STATUS 'ZSTANDARD'.
ENDFORM. "Set_pf_status

*&--------------------------------------------------------------------*
*&      Form  USER_COMMAND
*&--------------------------------------------------------------------*

form user_command using r_ucomm like sy-ucomm
rs_selfield type slis_selfield.
case r_ucomm.
when '&IC1'.
  IF rs_selfield-fieldname EQ 'EBELN'.
    SET PARAMETER ID 'BES' FIELD rs_selfield-value.
    CALL TRANSACTION 'ME22N'.
  ELSE.
    MESSAGE 'Доступно только для номера заказа' TYPE 'E'.
  ENDIF.
endcase.
endform.                    "USER_COMMAND

call function 'REUSE_ALV_GRID_DISPLAY'
*  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
      exporting
           i_callback_program = g_repid
           i_callback_user_command      = 'USER_COMMAND'
           i_callback_html_top_of_page  = 'HTML_TOP_OF_PAGE'
           i_callback_pf_status_set     = 'SET_PF_STATUS'
           is_layout                = gs_layout
            is_variant = gs_variant
          i_save = 'A'
          it_sort                  = gt_sort[]
           it_fieldcat              = gt_fcat[]
*           it_excluding             = lt_extab
*           it_events                = lt_events[]
*           is_variant               = gs_variant
        tables
           t_outtab = gt_grid.



Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 21 2007, 14:45 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, май 14 2007, 13:05
Сообщения: 561
Откуда: Москва
Имена статусов должны совпадать
Code:
SET PF-STATUS 'ZSTANDARD'.

Code:
i_callback_pf_status_set     = 'SET_PF_STATUS'


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 21 2007, 14:46 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Не надо никакие статусы прикручивать. Просто вызов ФМ REUSE_ALV_GRID_DISPLAY должен находиться в событии START-OF-SELECTION. Просто впишите это перед вызовом ФМ.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 21 2007, 14:51 
Начинающий
Начинающий

Зарегистрирован:
Пт, дек 21 2007, 14:16
Сообщения: 8
Откуда: Беларусь
N/A написал(а):
Имена статусов должны совпадать
Code:
SET PF-STATUS 'ZSTANDARD'.

Code:
i_callback_pf_status_set     = 'SET_PF_STATUS'

Т.е имя формы должно быть таким же, как и название статуса? Переименовал, все равно не работает


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 21 2007, 14:52 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
N/A написал(а):
Имена статусов должны совпадать
Code:
SET PF-STATUS 'ZSTANDARD'.

Code:
i_callback_pf_status_set     = 'SET_PF_STATUS'


Никак нет - ибо вымысел... Какой угодно можно вызвать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 21 2007, 14:53 
Начинающий
Начинающий

Зарегистрирован:
Пт, дек 21 2007, 14:16
Сообщения: 8
Откуда: Беларусь
John Doe написал:
Не надо никакие статусы прикручивать. Просто вызов ФМ REUSE_ALV_GRID_DISPLAY должен находиться в событии START-OF-SELECTION. Просто впишите это перед вызовом ФМ.

Он там и находится, кнопки и без прикручивания статуса работают, но там происходит событие LEAVE PROGRAM, а мне надо его сменить на LEAVE TO CURRENT TRANSACTION.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 21 2007, 14:59 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Станислав Пищалов написал(а):
... но там происходит событие LEAVE PROGRAM

Можно поподробнее - где там? Сейчас проверяю у себя в системе (erp2005) - прекрасно по беку возвращается на селекционник.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 21 2007, 15:06 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
John Doe написал:
Станислав Пищалов написал(а):
... но там происходит событие LEAVE PROGRAM

Можно поподробнее - где там? Сейчас проверяю у себя в системе (erp2005) - прекрасно по беку возвращается на селекционник.

Я так думаю что LEAVE происходит внутри
Code:
CALL TRANSACTION 'ME22N'.

И из внешней программы это непреодолимо.

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 21 2007, 15:06 
Начинающий
Начинающий

Зарегистрирован:
Пт, дек 21 2007, 14:16
Сообщения: 8
Откуда: Беларусь
John Doe написал:
Станислав Пищалов написал(а):
... но там происходит событие LEAVE PROGRAM

Можно поподробнее - где там? Сейчас проверяю у себя в системе (erp2005) - прекрасно по беку возвращается на селекционник.

Тоже на ER5. Там? а хрен его знает где там. У меня по бэку вываливается сразу в SE80. В других прогах, в которых использовались скрины с гридом лечил это дело прописыванием в PAI, что-то типа
Code:
*&---------------------------------------------------------------------*
*&      Module  USER_EXIT  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*

MODULE user_exit INPUT.
  CASE sy-ucomm.
    WHEN 'BACK'.
      LEAVE TO CURRENT TRANSACTION.
    WHEN 'EXIT'.
      LEAVE TO SCREEN 0.
    WHEN 'CANCEL'.
      LEAVE TO SCREEN 0.
  ENDCASE.
  CLEAR sy-ucomm.
ENDMODULE.                 " user_exit  INPUT


а тут не знаю, что куда и как писать. Статус используется, но в форме USER COMMAND евент не ловится


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 21 2007, 15:09 
Начинающий
Начинающий

Зарегистрирован:
Пт, дек 21 2007, 14:16
Сообщения: 8
Откуда: Беларусь
sy-uname написал(а):
John Doe написал:
Станислав Пищалов написал(а):
... но там происходит событие LEAVE PROGRAM

Можно поподробнее - где там? Сейчас проверяю у себя в системе (erp2005) - прекрасно по беку возвращается на селекционник.

Я так думаю что LEAVE происходит внутри
Code:
CALL TRANSACTION 'ME22N'.

И из внешней программы это непреодолимо.

Вы по-видимому немного не поняли. Это:
Code:
when '&IC1'.
  IF rs_selfield-fieldname EQ 'EBELN'.
    SET PARAMETER ID 'BES' FIELD rs_selfield-value.
    CALL TRANSACTION 'ME22N'.
просто обработка двойного клика по гриду. Где ловить евенты, которые генерятся не гридом, а панелью управления - вот в чем вопрос


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 21 2007, 15:12 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
to sy-uname: я пас...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 21 2007, 15:23 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
Станислав Пищалов написал(а):
... Где ловить евенты, которые генерятся не гридом, а панелью управления - вот в чем вопрос

События ловятся:
в DYNPRO-экране - это PAI-логика
список - событие отчёта AT USER-COMMAND

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 21 2007, 15:52 
Начинающий
Начинающий

Зарегистрирован:
Пт, дек 21 2007, 14:16
Сообщения: 8
Откуда: Беларусь
sy-uname написал(а):
Станислав Пищалов написал(а):
... Где ловить евенты, которые генерятся не гридом, а панелью управления - вот в чем вопрос

События ловятся:
в DYNPRO-экране - это PAI-логика
список - событие отчёта AT USER-COMMAND

ну да. а где его прописывать надо
Code:
AT USER-COMMAND.

  CASE SY-UCOMM.
    WHEN '&F03'.
      LEAVE TO SCREEN 0.

    WHEN 'EXIT'.
      LEAVE SCREEN.

    WHEN 'CANCEL'.
      LEAVE SCREEN.
  ENDCASE.

Прописал сразу после вызова ФМ, не работает. В дебаггере по нажатию кнопки проваливается в PAI и PBO грида


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 21 2007, 16:10 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, май 14 2007, 13:05
Сообщения: 561
Откуда: Москва
Цитата:
N/A писал(а):
Имена статусов должны совпадать
Код:
SET PF-STATUS 'ZSTANDARD'.

Код:
i_callback_pf_status_set = 'SET_PF_STATUS'



Никак нет - ибо вымысел... Какой угодно можно вызвать.

блин.. точно прогнал :oops: сорри


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 21 2007, 16:28 
Начинающий
Начинающий

Зарегистрирован:
Пт, дек 21 2007, 14:16
Сообщения: 8
Откуда: Беларусь
Все, проблема решилась другим путем. Достаточно просто тупо вызвать слекшн скрин после грида
Code:
call function 'REUSE_ALV_GRID_DISPLAY'
*  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
      exporting
*           i_buffer_active    = p_buffer
           i_callback_program = g_repid
*         i_structure_name = 'SFLIGHT'
           i_callback_user_command      = 'USER_COMMAND'
           i_callback_html_top_of_page  = 'HTML_TOP_OF_PAGE'
*           i_callback_pf_status_set     = 'SET_STATUS'
           is_layout                = gs_layout
            is_variant = gs_variant
          i_save = 'A'
          it_sort                  = gt_sort[]
*         it_filter                = gt_filter
*        I_SCREEN_START_COLUMN    = 0     "Use coordinates for
*        I_SCREEN_START_LINE      = 0     "display as dialog box
*        I_SCREEN_END_COLUMN      = 0
*        I_SCREEN_END_LINE        = 0
           it_fieldcat              = gt_fcat[]
*           it_excluding             = lt_extab
*           it_events                = lt_events[]
*           is_variant               = gs_variant
        tables
           t_outtab = gt_grid.

CALL SELECTION-SCREEN '0500'.


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.

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


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

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


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

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