Текущее время: Ср, июл 30 2025, 21:48

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Список дат
СообщениеДобавлено: Вт, июн 13 2006, 13:02 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, авг 18 2004, 09:17
Сообщения: 477
Откуда: Москва
Пол: Мужской
Может, кто-нибудь сталкивался... Есть ли стандартный ф. модуль, которому на вход подается range-таблица с ограничениями на даты, а на выходе таблица с датами, удовлетворяющая ограничениям?


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

Зарегистрирован:
Ср, май 04 2005, 16:29
Сообщения: 687
Откуда: Нижневартовск->Москва
Пол: Мужской
Хороший был бы список по ограничению типа
E EQ 20060101


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июн 13 2006, 13:34 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan
действительно, range может быть разный.

Если у тебя ограничение типа: Начало-Конец, то можно воспользоваться, например, ФМ RKE_SELECT_FACTDAYS_FOR_PERIOD. Этот ФМ возвращает рабочие дни с учетом используемого календаря (т.е. позволяет исключить выходные, праздничные дни).


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июн 13 2006, 14:38 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, авг 18 2004, 09:17
Сообщения: 477
Откуда: Москва
Пол: Мужской
T написал:
Хороший был бы список по ограничению типа
E EQ 20060101

производственный календарь всегда ограничен и обычно 15-30 годами. никакого криминала.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июн 13 2006, 16:13 
Гость
если просто нужен список дат, без учета произв.календаря,
то зачем функция? тут и так всё элементарно.... :!:

Code:
   CONSTANTS:  MINDATA LIKE SY-DATUM VALUE '20000101',
                        MAXDATA LIKE SY-DATUM VALUE '20100101'.

   DATA: BEGIN OF SPISOK OCCURS 0,
                DATUM LIKE SY-DATUM,
             END OF SPISOK,
            TEKDAT LIKE SY-DATUM.
 

   SELECT-OPTIONS: DATUM FOR SY-DATUM.

   START-OF-SELECTION.
   
   CLEAR: SPISOK[].
   TEKDAT = MINDATA.
   WHILE TEKDAT <= MAXDATA.
        IF TEKDAT IN DATUM.
             SPISOK-DATUM = TEKDAT.
             APPEND SPISOK.
       ENDIF.
       ADD 1 TO TEKDAT.
  ENDWHILE.

  LOOP AT SPISOK.
     WRITE:/ SPISOK-DATUM.
  ENDLOOP. 



Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, июн 13 2006, 16:43 
Гость
как вариант, если нужна проверка на:
- праздник/непраздник
- суббота/воскресенье


Code:

REPORT Z1 .
CONSTANTS:  MINDATA LIKE SY-DATUM VALUE '20000101',
            MAXDATA LIKE SY-DATUM VALUE '20100101'.

DATA: BEGIN OF SPISOK OCCURS 0,
             DATUM LIKE SY-DATUM,
          END OF SPISOK,
         TEKDAT LIKE SY-DATUM,
         HF,
         HA TYPE TABLE OF THOL,
         DW TYPE P.


SELECT-OPTIONS: DATUM FOR SY-DATUM.

PARAMETERS:   WITHHOL AS CHECKBOX ,
              WITHVYH AS CHECKBOX.

START-OF-SELECTION.

  CLEAR: SPISOK[].
  TEKDAT = MINDATA - 1.
  WHILE TEKDAT <= MAXDATA.
    ADD 1 TO TEKDAT.
    IF TEKDAT IN DATUM.
      CLEAR: HF, HA[], DW.

      IF WITHHOL = SPACE.
        CALL FUNCTION 'HOLIDAY_CHECK_AND_GET_INFO'
          EXPORTING
            DATE                = TEKDAT
            HOLIDAY_CALENDAR_ID = 'RU'
          IMPORTING
            HOLIDAY_FOUND       = HF
          TABLES
            HOLIDAY_ATTRIBUTES  = HA
          EXCEPTIONS
                OTHERS = 99.
      ENDIF.

      IF WITHVYH = SPACE.
        CALL FUNCTION 'DAY_IN_WEEK'
          EXPORTING
            DATUM = TEKDAT
          IMPORTING
            WOTNR = DW.
        IF DW = 6 OR DW = 7.
          HF = 'X'.
        ENDIF.
      ENDIF.


      CHECK HF IS INITIAL.
      SPISOK-DATUM = TEKDAT.
      APPEND SPISOK.
    ENDIF.
  ENDWHILE.

  LOOP AT SPISOK.
    WRITE:/ SPISOK-DATUM.
  ENDLOOP.


Последний раз редактировалось РМщик Вт, июн 13 2006, 17:00, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения: Список дат
СообщениеДобавлено: Вт, июн 13 2006, 16:59 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, авг 18 2004, 09:17
Сообщения: 477
Откуда: Москва
Пол: Мужской
Всем спасибо, все получилось!
Но мне все равно решение с перебором всех дат не очень нравится.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список дат
СообщениеДобавлено: Вт, июн 13 2006, 17:01 
Гость
Дмитрий написал:
Всем спасибо, все получилось!
Но мне все равно решение с переборов всех дат не нравится.


чем? быстродействие тут нормальное,
а если даты не ограничивать, то.... :)


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения: Re: Список дат
СообщениеДобавлено: Вт, июн 13 2006, 21:23 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 13:16
Сообщения: 1790
Дмитрий написал:
Может, кто-нибудь сталкивался... Есть ли стандартный ф. модуль, которому на вход подается range-таблица с ограничениями на даты, а на выходе таблица с датами, удовлетворяющая ограничениям?

Лучше напиши, какая задача перед тобой стоит?
А то велосипед похоже изобретать взумал :)

_________________
/nex


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список дат
СообщениеДобавлено: Ср, июн 14 2006, 08:17 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
РМщик написал(а):
чем? быстродействие тут нормальное,
а если даты не ограничивать, то.... :)


При правильной постановке задачи множество в ranges должно быть ограничено. Поэтому даты ограничивать логичнее не абстрактными константами, а минимальным и максимальным значением дат в ranges вне зависимости от sign. Тогда, даже если задан открытый интервал, результат будет более-менее разумный.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Список дат
СообщениеДобавлено: Ср, июн 14 2006, 10:45 
Гость
sibrin написал:
При правильной постановке задачи множество в ranges должно быть ограничено. Поэтому даты ограничивать логичнее не абстрактными константами, а минимальным и максимальным значением дат в ranges вне зависимости от sign. Тогда, даже если задан открытый интервал, результат будет более-менее разумный.


с этим - согласен :)
но это уже тонкости :roll:


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 29 2006, 17:30 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 14:35
Сообщения: 1519
Откуда: В ВЕЧНОМ БАНЕ
Тут случайно попалась на глаза:

FKK_DTE_CALC_NEXT_DATES - кажется самое оно в этом случае...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 30 2006, 10:03 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, авг 18 2004, 09:17
Сообщения: 477
Откуда: Москва
Пол: Мужской
Uukrul написал(а):
Тут случайно попалась на глаза:

FKK_DTE_CALC_NEXT_DATES - кажется самое оно в этом случае...

в 4.6С такого ф.м. нет. :(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 30 2006, 10:10 
Гость
наверное CACS_FKK_DTE_CALC_NEXT_DATES


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 30 2006, 10:15 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 14:35
Сообщения: 1519
Откуда: В ВЕЧНОМ БАНЕ
РМщик написал(а):
наверное CACS_FKK_DTE_CALC_NEXT_DATES

Да нет у меня без CASC и есть и система 4.6С, но наверное это из дополнительного функционала поставилось, могу текст прицепить, а вообще посмотрите есть ли группа функций FKDATE


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.

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


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

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


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

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