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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Монитор с периодическим обновлением
СообщениеДобавлено: Ср, дек 08 2004, 14:43 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Вс, сен 05 2004, 12:11
Сообщения: 420
Откуда: SAP ERP 2005
Добрый день ! Хочется сделать отчет на ALV Grid, который бы после первичного показа обновлялся бы автоматически (без нажатия кнопок оператором), с определенной периодичностью. Кому приходилось сталкиваться, поделитесь идеями, pls.

_________________
Чтоб у нас все было, и нам за это ничего не было ! :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 08 2004, 15:44 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, авг 18 2004, 09:17
Сообщения: 477
Откуда: Москва
Пол: Мужской
Для ALV Grid не пробовал, а для листингового отчета работает "на ура!". Больших проблем не должно возникнуть.
Посмотри help по CALL FUNCTION ..STARTING NEW TASK.
Нужно асинхронно в новой сессии запустить ф.м., например, RFC_PING_AND_WAIT. В нем есть параметр - кол-во секунд через которое он закончит выполняться - это и будет время обновления. В ON END OF TASK указываешь подпрограмму, которая вызовет обновление грида и затем перезапустит заново асинхронный процесс. :wink:
Вообще "классическое" решение - кнопка "обновления", которую нажимает пользователь, когда ему нужно.


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

Зарегистрирован:
Вс, сен 05 2004, 12:11
Сообщения: 420
Откуда: SAP ERP 2005
Большое спасибо, попробую.

_________________
Чтоб у нас все было, и нам за это ничего не было ! :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 08 2004, 17:17 
Гость
У класса CL_GUI_ALV_GRID есть метод SET_AUTOREDRAW, можно попробовать


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, дек 09 2004, 08:44 
Специалист
Специалист

Зарегистрирован:
Вт, авг 24 2004, 16:49
Сообщения: 186
Откуда: SAP ERP60
Пол: Мужской
Code:
REPORT z_alv_auto_refresh.
*>*********************************************************************
* This report displays User's info (SM04) using the FM :              *
* REUSE_ALV_LIST_DISPLAY                                              *
* The list is auto-refreshed (refresh time : 5 seconds)               *
*---------------------------------------------------------------------*

TYPE-POOLS: slis.                      " ALV Global Types

DATA :
  gt_user LIKE uinfo OCCURS 0 WITH HEADER LINE. " User info in SM04

*---------------------------------------------------------------------*
START-OF-SELECTION.

  PERFORM f_read_data.

  PERFORM f_display_data.

*---------------------------------------------------------------------*
*       Form  F_LIRE_DATA
*---------------------------------------------------------------------*
FORM f_read_data.

  REFRESH gt_user.

* Get User's info
  CALL FUNCTION 'THUSRINFO'
       TABLES
            usr_tabl = gt_user.

* Wait in a task
  PERFORM f_call_rfc_wait.

ENDFORM.                               " F_READ_DATA
*---------------------------------------------------------------------*
*      Form  F_DISPLAY_DATA
*---------------------------------------------------------------------*
FORM f_display_data.

  DEFINE m_sort.
    add 1 to ls_sort-spos.
    ls_sort-fieldname = &1.
    append ls_sort to lt_sort.
  END-OF-DEFINITION.

  DEFINE m_event_exit.
    clear ls_event_exit.
    ls_event_exit-ucomm = &1.
    ls_event_exit-after = 'X'.
    append ls_event_exit to lt_event_exit.
  END-OF-DEFINITION.

  DATA :
    ls_layout     TYPE slis_layout_alv,
    lt_sort       TYPE slis_t_sortinfo_alv,
    ls_sort       TYPE slis_sortinfo_alv,
    lt_event_exit TYPE slis_t_event_exit,
    ls_event_exit TYPE slis_event_exit.

* Build Sort Table
  m_sort 'ZEIT'.

* Build Event Exit Table
  m_event_exit '&NTE'.                 " Refresh

  ls_layout-zebra = 'X'.
  ls_layout-colwidth_optimize = 'X'.
  SET USER-COMMAND '&OPT'.         " Optimize columns width

  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
       EXPORTING
            i_callback_program      = sy-cprog
            i_callback_user_command = 'USER_COMMAND'
            is_layout               = ls_layout
            i_structure_name        = 'UINFO'
            it_sort                 = lt_sort
            it_event_exit           = lt_event_exit
       TABLES
            t_outtab                = gt_user.

ENDFORM.                               " F_DISPLAY_DATA
*---------------------------------------------------------------------*
*       FORM USER_COMMAND                                             *
*---------------------------------------------------------------------*
FORM user_command USING i_ucomm     TYPE syucomm
                        is_selfield TYPE slis_selfield.     "#EC CALLED

  CASE i_ucomm.
    WHEN '&NTE'.
      PERFORM f_read_data.
      is_selfield-refresh = 'X'.
      SET USER-COMMAND '&OPT'.         " Optimize columns width
  ENDCASE.

ENDFORM.                               " USER_COMMAND
*---------------------------------------------------------------------*
*      Form  F_CALL_RFC_WAIT
*---------------------------------------------------------------------*
FORM f_call_rfc_wait.

  DATA lv_mssg(80).                                         "#EC NEEDED

* Wait in a task
  CALL FUNCTION 'RFC_PING_AND_WAIT' STARTING NEW TASK '001'
    PERFORMING f_task_end ON END OF TASK
    EXPORTING
      seconds               = 5        " Refresh time
      busy_waiting          = space
    EXCEPTIONS
      RESOURCE_FAILURE      = 1
      communication_failure = 2  MESSAGE lv_mssg
      system_failure        = 3  MESSAGE lv_mssg
      OTHERS                = 4.

ENDFORM.                               " F_CALL_RFC_WAIT
*---------------------------------------------------------------------*
*      Form  F_TASK_END
*---------------------------------------------------------------------*
FORM f_task_end USING u_taskname.

  DATA lv_mssg(80).                                         "#EC NEEDED

* Receiving task results
  RECEIVE RESULTS FROM FUNCTION 'RFC_PING_AND_WAIT'
    EXCEPTIONS
      RESOURCE_FAILURE      = 1
      communication_failure = 2  MESSAGE lv_mssg
      system_failure        = 3  MESSAGE lv_mssg
      OTHERS                = 4.

  CHECK sy-subrc EQ 0.
  SET USER-COMMAND '&NTE'.             " Refresh

ENDFORM.                               " F_TASK_END
*************** END OF PROGRAM Z_ALV_AUTO_REFRESH *********************


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, дек 09 2004, 09:59 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Вс, сен 05 2004, 12:11
Сообщения: 420
Откуда: SAP ERP 2005
Ух, мощно :-) ! Stepan, большое спасибо !

_________________
Чтоб у нас все было, и нам за это ничего не было ! :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, дек 09 2004, 10:36 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
ИМХО, все делается несколько проще.
Вроде бы должен ФМ таймера (к сожалению, прямо сейчас не смог вспомнить). По событию просто вызывается нужный
SET USER-COMMAND <нужный фкод>.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 10 2004, 12:04 
Ассистент
Ассистент

Зарегистрирован:
Вт, авг 31 2004, 09:03
Сообщения: 33
можа кому будет интересно, Степанов пример и другое есть на сайте http://www.sap-basis-abap.com/abap/auto ... v-list.htm


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 14 2004, 13:28 
Модератор
Модератор

Зарегистрирован:
Пт, ноя 12 2004, 11:40
Сообщения: 542
Откуда: Москва
Пол: Мужской
Соррии за оффтопик...
А может сделать свой сборник рецептов ввиде отдельного топика CookBook, там складывать интересные , полезные, красивые решения
какой-нибудь проблеммы... ИМХО будет очень полезно...

Так же было бы супер завести FAQ со слылками для начинающих и примерами для самых маленьких :)) итд....


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 14 2004, 16:06 
Специалист
Специалист

Зарегистрирован:
Вт, авг 24 2004, 16:49
Сообщения: 186
Откуда: SAP ERP60
Пол: Мужской
[url]
http://www.sapfans.com/forums/viewforum.php?f=31
[/url]


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 09 2007, 07:12 
Ассистент
Ассистент

Зарегистрирован:
Пн, дек 04 2006, 08:43
Сообщения: 48
Добрый день.

Основываясь на вышеописанном примере сделал отчет.

С функцией 'REUSE_ALV_LIST_DISPLAY' обновление работает замечательно, но стоит заменить функцию на 'REUSE_ALV_GRID_DISPLAY' отчет перестает автоматически обновляться .

Кто решал данную проблемку, поделитесь опытом.


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

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Проблема не решается. Callback функции не работают с rfc вызовами.


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

Зарегистрирован:
Пн, авг 14 2006, 17:00
Сообщения: 9
andj написал(а):
Кто решал данную проблемку, поделитесь опытом.


Действительно, запустить автообновление ALV Grid с использованием rfc вызовов или класса CL_GUI_TIMER фактически невозможно. Но есть еще один способ.

Проблема может быть решена следующим образом.
1. Берем класс
    cl_gui_html_viewer

2. В него загружаем например следующую страничку:
Code:
<HTML>
<HEAD><meta http-equiv="Content-Type" content="text/html; codepage=1251">
<TITLE>sample form</TITLE>
<script>
function fnTimer() {
window.setInterval( "FORM1.submit()", 5000);
}
</script>
</HEAD>
<body onload="fnTimer( );">
<form id=FORM1 method="POST" action="SAPEVENT:TIMEOUT"><input type="hidden" name="hd1" value="0">
</form>
</BODY>
</HTML>

3. Пишем обработчик событий для класса, и в методе on_sapevent выполняем процедуру обновления своего грида и всего чего угодно.
Code:
class lcl_sapevent_receiver definition.

  public section.
    methods  on_sapevent
                for event sapevent of cl_gui_html_viewer
                  importing
                    action frame getdata postdata query_table
            .

endclass.   

4. Наслаждаемся творением рук своих...

Более подробную документацию по использованию класса cl_gui_html_viewer можно посмотреть в документации.


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

Зарегистрирован:
Пт, апр 28 2006, 22:39
Сообщения: 2514
Откуда: North Taxolina, USA
Пол: Женский
Ich Will написал:
Соррии за оффтопик...
А может сделать свой сборник рецептов ввиде отдельного топика CookBook, там складывать интересные , полезные, красивые решения
какой-нибудь проблеммы... ИМХО будет очень полезно...

Так же было бы супер завести FAQ со слылками для начинающих и примерами для самых маленьких :)) итд....


IMHO сборник рецептов рискует быстро превратиться в бесконечное обсуждение рецептов, если только не сделать топик закрытым со входом "по приглашению". :)

А вот простейший FAQ, состоящий из ссылок, очень даже напрашивается. Только нужен доброволец, чтобы этот FAQ составить и потом поддерживать. Остальные могли бы вносить свой вклад, сообщая тов. добровольцу (по ЛС) ссылки на топики-кандидаты.


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

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
за три года добровольцев не нашлось :roll:


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

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


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

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


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

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