Текущее время: Чт, июл 31 2025, 18:08

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: "Часики" или progressbar в программе
СообщениеДобавлено: Пн, апр 23 2007, 07:59 
Начинающий
Начинающий

Зарегистрирован:
Пн, апр 23 2007, 07:53
Сообщения: 5
Есть программа, которая выгружает данные в течение 15 минут.
Как сделать такие часики внизу экрана, которые бы показывали, что программа работает, или progressbar


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, апр 23 2007, 08:11 
Специалист
Специалист

Зарегистрирован:
Сб, май 14 2005, 20:46
Сообщения: 108
Откуда: Санкт-Петербург
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = iper
TEXT = ctmp.

где
iper - от 0 до 100 процент выполнения
ctmp - строка сообщение


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

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
"Навороченные" часики:

Code:
LOOP AT lt_data.
  PERFORM progress_indicator
        USING sy-tabix sy_tfill_save 'Сохранение' lt_data-name.
ENDLOOP.

FORM progress_indicator
         USING n TYPE i
               nall TYPE i
               name TYPE c
               object_name type c
          .
  CONSTANTS: c_delta_t_min type i  value '3' " Минимальное время обновления в секундах
           , c_delta_n_min type i  value '0' " Минимальное количество усреднения для прогноза
           .
  STATICS: start_timestamp TYPE timestamp
         , start_n TYPE i
         , last_timestamp TYPE timestamp
         , last_n TYPE i
  .
  DATA: percent TYPE i
      , idiff TYPE i
      , i TYPE i
      , rate TYPE f
      , unit(3)
      , unit_v(3)
      , text(200)
      , c_n(11)
      , c_nall(11)
      , c_idiff(11)
      , c_rate(11)
      , curr_timestamp TYPE timestamp
      , delta_n type i
  .
  IF nall <= 0 or n <= 0 or n > nall.
    exit.
  elseif n = 1 or start_timestamp is initial.
    last_n = n.
    GET TIME STAMP FIELD start_timestamp.
    last_timestamp = start_timestamp.
    EXIT.
  ENDIF.

  GET TIME STAMP FIELD curr_timestamp.
  CALL FUNCTION 'TIMECALC_DIFF'
    EXPORTING
      timestamp1 = last_timestamp
      timestamp2 = curr_timestamp
      timezone   = ''
    IMPORTING
      difference = idiff.

  IF idiff > c_delta_t_min. " в секундах
    percent = ( n - 1 )  * 100 / nall.
    delta_n = n - last_n.

    if c_delta_n_min > 0 and delta_n > c_delta_n_min. " в штуках
      rate = ( n - last_n  ) / idiff.
    else.
      CALL FUNCTION 'TIMECALC_DIFF'
        EXPORTING
          timestamp1 = start_timestamp
          timestamp2 = curr_timestamp
          timezone   = ''
        IMPORTING
          difference = idiff.
      rate = ( n - 1 ) / idiff.
    endif.

    idiff = ( nall - ( n - 1 ) ) / rate.
    IF idiff >= 60.
      unit = 'мин'. idiff = ( idiff + 30 ) / 60.
    ELSE.
      unit = 'с'.
    ENDIF.
    WRITE idiff TO c_idiff LEFT-JUSTIFIED NO-GROUPING.
    WRITE n TO c_n LEFT-JUSTIFIED NO-GROUPING.
    WRITE nall TO c_nall LEFT-JUSTIFIED NO-GROUPING.
    IF rate < '0.001'.
      rate = rate * 3600.
      WRITE rate TO c_rate LEFT-JUSTIFIED NO-GROUPING NO-SIGN.
      unit_v = 'час'.
    ELSEIF rate < '0.1'.
      rate = rate * 60.
      WRITE rate TO c_rate LEFT-JUSTIFIED NO-GROUPING NO-SIGN.
      unit_v = 'мин'.
    ELSEIF rate < 10.
      WRITE rate TO c_rate LEFT-JUSTIFIED DECIMALS 1 EXPONENT 0 NO-GROUPING NO-SIGN.
      unit_v = 'c'.
    ELSE.
      WRITE rate TO c_rate LEFT-JUSTIFIED DECIMALS 0 EXPONENT 0 NO-GROUPING NO-SIGN.
      unit_v = 'c'.
    ENDIF.
    text = name.
    CONCATENATE name `: ` c_n ` из ` c_nall
                 `. Осталось ` c_idiff ` ` unit `. V=` c_rate ` шт/с. `
                 object_name INTO text.

    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
      EXPORTING
        percentage = percent
        text       = text.

    last_timestamp = curr_timestamp.
    last_n = n.

    CALL FUNCTION 'TH_REDISPATCH'
*     EXPORTING
*       CHECK_RUNTIME       = 0
              .
  ENDIF.

ENDFORM.                    "progress_indicator


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

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


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

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


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

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