Текущее время: Сб, апр 20 2024, 02:08

Часовой пояс: 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
Сообщения: 1580
Откуда: Москва, Минск
Пол: Мужской
У меня все верно, в том числе и для ваших случаев:
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 часа


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

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


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

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