SAPфорум.RU https://sapboard.ru/forum/ |
|
Разница в днях в методе GET_DAYS_BETWEEN_TWO_DATES класса CL_RECA_DATE https://sapboard.ru/forum/viewtopic.php?f=13&t=95976 |
Страница 1 из 1 |
Автор: | Склеротик [ Вт, янв 23 2018, 12:16 ] |
Заголовок сообщения: | Разница в днях в методе GET_DAYS_BETWEEN_TWO_DATES класса CL_RECA_DATE |
Сразу же отмечу что данный класс CL_RECA_DATE есть в ERP системах. Если запустить тест метода GET_DAYS_BETWEEN_TWO_DATES данного класса с данными дата с 01.01.2014 по любая дата результатом будет 0. Если взять хотя бы 31.12.2014 по любую дату результат будет уже правильный. Текст метода можно легко преобразовать в текст програмки и проверить результат. У меня один и тот же результат неверный = 0 получался в любой версии системы и любой платформе ОС. Кто у себя проверит и получит правильный результат отпишите пожалуйста. Отмечу что зона времени RUS03. |
Автор: | Timon&Pumba [ Вт, янв 23 2018, 13:24 ] |
Заголовок сообщения: | Re: Разница в днях в методе GET_DAYS_BETWEEN_TWO_DATES класса CL_RECA_DATE |
У нас все нормально кроме диапазона 01.01.2014 - 02.01.2014 |
Автор: | Склеротик [ Вт, янв 23 2018, 13:38 ] |
Заголовок сообщения: | Re: Разница в днях в методе GET_DAYS_BETWEEN_TWO_DATES класса CL_RECA_DATE |
Вот я про число 01.01.2014 и говорю. Что получается при 01.01.2014 и например 01.02.2014? или 31.12.2013 и 01.01.2014? |
Автор: | Timon&Pumba [ Вт, янв 23 2018, 14:03 ] |
Заголовок сообщения: | Re: Разница в днях в методе GET_DAYS_BETWEEN_TWO_DATES класса CL_RECA_DATE |
Склеротик написал: Вот я про число 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 |
Автор: | DED_MOROZ [ Вт, янв 23 2018, 14:08 ] |
Заголовок сообщения: | Re: Разница в днях в методе GET_DAYS_BETWEEN_TWO_DATES класса CL_RECA_DATE |
У меня все верно, в том числе и для ваших случаев: 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 ). |
Автор: | Удав [ Вт, янв 23 2018, 14:14 ] |
Заголовок сообщения: | Re: Разница в днях в методе GET_DAYS_BETWEEN_TWO_DATES класса CL_RECA_DATE |
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. |
Автор: | Timon&Pumba [ Вт, янв 23 2018, 14:30 ] |
Заголовок сообщения: | Re: Разница в днях в методе GET_DAYS_BETWEEN_TWO_DATES класса CL_RECA_DATE |
Склеротик написал: Сразу же отмечу что данный класс CL_RECA_DATE есть в ERP системах. Если запустить тест метода GET_DAYS_BETWEEN_TWO_DATES данного класса с данными дата с 01.01.2014 по любая дата результатом будет 0. Если взять хотя бы 31.12.2014 по любую дату результат будет уже правильный. Текст метода можно легко преобразовать в текст програмки и проверить результат. У меня один и тот же результат неверный = 0 получался в любой версии системы и любой платформе ОС. Кто у себя проверит и получит правильный результат отпишите пожалуйста. Отмечу что зона времени RUS03. Это последствия перехода на зимнее время. (спасибо Медведеву) У нас админ что-то химичил с настройками, но полностью проблему решить не удалось. Пришлось пожертвовать первым января 2014 года, дальше все нормально. |
Автор: | Kuranov.Dmitry [ Вт, янв 23 2018, 14:33 ] |
Заголовок сообщения: | Re: Разница в днях в методе GET_DAYS_BETWEEN_TWO_DATES класса CL_RECA_DATE |
Удав написал(а): 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. проверил у нас в 4.7. 20131231210000 |
Автор: | Склеротик [ Вт, янв 23 2018, 14:59 ] |
Заголовок сообщения: | Re: Разница в днях в методе GET_DAYS_BETWEEN_TWO_DATES класса CL_RECA_DATE |
Всем большое спасибо за участие. Я тоже подозревал что это происки премьера в 2014 году. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |