Текущее время: Чт, мар 28 2024, 22:43

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Разница в днях в методе GET_DAYS_BETWEEN_TWO_DATES класса CL_RECA_DATE
СообщениеДобавлено: Вт, янв 23 2018, 12:16 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 21 2004, 16:30
Сообщения: 609
Пол: Мужской
Сразу же отмечу что данный класс CL_RECA_DATE есть в ERP системах.
Если запустить тест метода GET_DAYS_BETWEEN_TWO_DATES данного класса с данными дата с 01.01.2014 по любая дата результатом будет 0.
Если взять хотя бы 31.12.2014 по любую дату результат будет уже правильный. Текст метода можно легко преобразовать в текст програмки и проверить результат. У меня один и тот же результат неверный = 0 получался в любой версии системы и любой платформе ОС.
Кто у себя проверит и получит правильный результат отпишите пожалуйста. Отмечу что зона времени RUS03.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Разница в днях в методе GET_DAYS_BETWEEN_TWO_DATES класса CL_RECA_DATE
СообщениеДобавлено: Вт, янв 23 2018, 13:24 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, июн 05 2006, 13:33
Сообщения: 805
Пол: Мужской
У нас все нормально кроме диапазона 01.01.2014 - 02.01.2014


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разница в днях в методе GET_DAYS_BETWEEN_TWO_DATES класса CL_RECA_DATE
СообщениеДобавлено: Вт, янв 23 2018, 13:38 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 21 2004, 16:30
Сообщения: 609
Пол: Мужской
Вот я про число 01.01.2014 и говорю.
Что получается при 01.01.2014 и например 01.02.2014? или 31.12.2013 и 01.01.2014?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Разница в днях в методе GET_DAYS_BETWEEN_TWO_DATES класса CL_RECA_DATE
СообщениеДобавлено: Вт, янв 23 2018, 14:03 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, июн 05 2006, 13:33
Сообщения: 805
Пол: Мужской
Склеротик написал:
Вот я про число 01.01.2014 и говорю.
Что получается при 01.01.2014 и например 01.02.2014? или 31.12.2013 и 01.01.2014?

02.01.2014 - 01.01.2014 = -1
01.01.2014 - 31.12.2013 = 1


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разница в днях в методе GET_DAYS_BETWEEN_TWO_DATES класса CL_RECA_DATE
СообщениеДобавлено: Вт, янв 23 2018, 14:08 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1578
Откуда: Москва, Минск
Пол: Мужской
У меня все верно, в том числе и для ваших случаев:
01.01.2014 - 01.02.2014 = 31 день
31.12.2013 - 01.01.2014 = 1 день

P.S. Система S4

На всякий случай код метода:

METHOD get_days_between_two_dates.

DATA:
ld_tstmp_from TYPE tzntstmpl,
ld_tstmp_to TYPE tzntstmpl,
ld_seconds TYPE tzntstmpl.

* INIT RESULTS
rd_days = 0.

* BODY

* use timestamps for simple calculation
CONVERT DATE id_datefrom
INTO TIME STAMP ld_tstmp_from TIME ZONE sy-zonlo.

CONVERT DATE id_dateto
INTO TIME STAMP ld_tstmp_to TIME ZONE sy-zonlo.

* from and to are interchanged
IF ld_tstmp_from > ld_tstmp_to.
rd_days = -1.
RETURN.
ENDIF.

TRY.
ld_seconds = cl_abap_tstmp=>subtract(
tstmp1 = ld_tstmp_to
tstmp2 = ld_tstmp_from ).
CATCH cx_parameter_invalid_range cx_parameter_invalid_type .
ld_seconds = 0.
RETURN.
ENDTRY.

* convert seconds to days
rd_days = ld_seconds / ( 60 * 60 * 24 ).

_________________
Лучше быть умным и иногда тупить, чем быть тупым и постоянно умничать!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Разница в днях в методе GET_DAYS_BETWEEN_TWO_DATES класса CL_RECA_DATE
СообщениеДобавлено: Вт, янв 23 2018, 14:14 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3074
Откуда: Москва
use timestamps for simple calculation
CONVERT DATE id_datefrom
INTO TIME STAMP ld_tstmp_from TIME ZONE sy-zonlo.

CONVERT для даты '01.01.2014' и зоны RUS03
В NW 702 0019, 740 0011, 740 0013 выдает 0.

В NW 740 0012 выдает 20131231200000.
:roll:

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разница в днях в методе GET_DAYS_BETWEEN_TWO_DATES класса CL_RECA_DATE
СообщениеДобавлено: Вт, янв 23 2018, 14:30 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, июн 05 2006, 13:33
Сообщения: 805
Пол: Мужской
Склеротик написал:
Сразу же отмечу что данный класс CL_RECA_DATE есть в ERP системах.
Если запустить тест метода GET_DAYS_BETWEEN_TWO_DATES данного класса с данными дата с 01.01.2014 по любая дата результатом будет 0.
Если взять хотя бы 31.12.2014 по любую дату результат будет уже правильный. Текст метода можно легко преобразовать в текст програмки и проверить результат. У меня один и тот же результат неверный = 0 получался в любой версии системы и любой платформе ОС.
Кто у себя проверит и получит правильный результат отпишите пожалуйста. Отмечу что зона времени RUS03.

Это последствия перехода на зимнее время. (спасибо Медведеву)
У нас админ что-то химичил с настройками, но полностью проблему решить не удалось. Пришлось пожертвовать первым января 2014 года, дальше все нормально.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Разница в днях в методе GET_DAYS_BETWEEN_TWO_DATES класса CL_RECA_DATE
СообщениеДобавлено: Вт, янв 23 2018, 14:33 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 05 2017, 23:56
Сообщения: 537
Удав написал(а):
use timestamps for simple calculation
CONVERT DATE id_datefrom
INTO TIME STAMP ld_tstmp_from TIME ZONE sy-zonlo.

CONVERT для даты '01.01.2014' и зоны RUS03
В NW 702 0019, 740 0011, 740 0013 выдает 0.

В NW 740 0012 выдает 20131231200000.
:roll:

проверил у нас в 4.7.
20131231210000


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Разница в днях в методе GET_DAYS_BETWEEN_TWO_DATES класса CL_RECA_DATE
СообщениеДобавлено: Вт, янв 23 2018, 14:59 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Вт, сен 21 2004, 16:30
Сообщения: 609
Пол: Мужской
Всем большое спасибо за участие. Я тоже подозревал что это происки премьера в 2014 году.


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

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


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

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


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

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