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

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


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

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


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

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