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

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


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

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


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

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