Текущее время: Вт, июн 17 2025, 23:42

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


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

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


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

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