SAPфорум.RU https://sapboard.ru/forum/ |
|
Получить дату из номера рабочего дня https://sapboard.ru/forum/viewtopic.php?f=13&t=94850 |
Страница 1 из 1 |
Автор: | tdebug [ Пт, май 12 2017, 13:56 ] |
Заголовок сообщения: | Получить дату из номера рабочего дня |
Существует ли стандартная функция (класс), котороя позволяет получать дату по номеру рабочего дня месяца? Например нужно получить 5й рабочий день месяца - в марте 2017го 5е число воскресенье и 5й рабочий день это 7е марта. Из того что удалось найти, функция DATE_CONVERT_TO_FACTORYDATE, но она работает не так как нужно - возвращает следующий или предыдущий рабочий день, если выбранный день нерабочий. Иными словами, даже если дать ей на вход 05.03.2017, на выходе будет 06.03.2017, а нужно получить 07.03.2017 т.к. 7е это 5й рабочий день в данном случае. |
Автор: | Saperx [ Пт, май 12 2017, 15:04 ] |
Заголовок сообщения: | Re: Получить дату из номера рабочего дня |
Не знаю есть ли этот ФМ во всех версиях. BKK_ADD_WORKINGDAY На вход подаем начальную дату, на сколько рабочих дней хотим ее сместить и календарь. Получаем итоговую дату. Параметры импорта Значение I_DATE 01.03.2017 I_DAYS 4 I_CALENDAR1 RU I_CALENDAR2 Параметры экспорта Значение E_DATE 07.03.2017 E_RETURN 0 |
Автор: | tdebug [ Пт, май 12 2017, 15:19 ] |
Заголовок сообщения: | Re: Получить дату из номера рабочего дня |
Нет такого. Пришлось поплясать с бубном. Вроде работает вот так: Code: CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE' EXPORTING * CORRECT_OPTION = '+' DATE = CONV D( |{ LV_YEAR }{ LV_PERIOD }{ LV_FIRST }| ) FACTORY_CALENDAR_ID = 'XX' IMPORTING * DATE = LV_PERIOD_TO FACTORYDATE = lv_factorydate * WORKINGDAY_INDICATOR = EXCEPTIONS CALENDAR_BUFFER_NOT_LOADABLE = 1 CORRECT_OPTION_INVALID = 2 DATE_AFTER_RANGE = 3 DATE_BEFORE_RANGE = 4 DATE_INVALID = 5 FACTORY_CALENDAR_NOT_FOUND = 6 OTHERS = 7 . ADD 4 TO LV_FACTORYDATE. CALL FUNCTION 'FACTORYDATE_CONVERT_TO_DATE' EXPORTING FACTORYDATE = LV_FACTORYDATE FACTORY_CALENDAR_ID = 'XX' IMPORTING DATE = lv_period_to EXCEPTIONS CALENDAR_BUFFER_NOT_LOADABLE = 1 FACTORYDATE_AFTER_RANGE = 2 FACTORYDATE_BEFORE_RANGE = 3 FACTORYDATE_INVALID = 4 FACTORY_CALENDAR_ID_MISSING = 5 FACTORY_CALENDAR_NOT_FOUND = 6 OTHERS = 7 . Т.е. инкрементировать на уровне FACTORYDATE а не календарной. |
Автор: | gomer4ik [ Пт, май 12 2017, 16:49 ] |
Заголовок сообщения: | Re: Получить дату из номера рабочего дня |
А если FACTORY_CALENDAR_ID взять такой, у которого все дни рабочие? ну или создать на 20-30 лет вперед? |
Автор: | Saperx [ Чт, май 18 2017, 10:28 ] |
Заголовок сообщения: | Re: Получить дату из номера рабочего дня |
В принципе это можно сэмулировать. ФМ day_attributes_get. Передаем календари произв. и праздников, и диапазон дат. Нам вернется табличка с характеристиками для каждой даты. Удаляем все дни у которых стоит метка выходной день и селектим по индексу. Получаем сдвиг на n рабочих дней по календарю. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |