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

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


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

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


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

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