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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Обратный отсчет
СообщениеДобавлено: Пт, мар 13 2009, 12:14 
Специалист
Специалист

Зарегистрирован:
Чт, сен 04 2008, 12:40
Сообщения: 119
Откуда: Пермь
Пол: Мужской
Ну так, пятничное настроение, вот решил описать с чем столкнулся на этой неделе. Может кому то из молодых абаперов будет интересно ))
Клепал отчет, связанный с курсами валют, где применяется таблица TCURR. У нее есть поле GDATU. Надо було сделать выборку для которой в условии использовалось поле GDATU. Выборка получалась некоректной... Посмотрел что там в таблице написано. В поле GDATU вот такие цифры примерно 80029898. Хотя по двойному счелчку (детальный просмотр записи) в поле появляется полноценная дата 01.01.1997.

Оказывется у домена элемента данных этого поля имеется подпрограмма преобразования. Которая нормальную дату конвертирует в обратную ))). Незнаю, может кто и знал, но мне от такого термина стало смешно.
Как получается обратная дата
1. Берут 01.01.1997 - это называется внешняя дата
2. Когда заполняется поле типа dats внешней датой, значение автоматически конвертируется в 19970101 - это внутренняя дата. Также для этого можно использовать ФМ:
Code:
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'  " Получаем внутреннюю дату
    EXPORTING
      date_external            = s_budat_ext
    IMPORTING
      date_internal            = s_budat_int
    EXCEPTIONS
      date_external_is_invalid = 1.

3. А вот и обратная дата. Берут некий верхний придел 99999999 и вычитают из него внутреннюю дату. 99999999-19970101=80029898. Для этого используется ФМ:
Code:
  CALL FUNCTION 'CONVERSION_EXIT_INVDT_INPUT' " получаем обратную дату
    EXPORTING
      input  = s_budat_ext
    IMPORTING
      output = s_budat_inv.
ENDFORM.                    "INV_DAT

Вот так! Несложно подсчитать когда для SAPа настанет день "Д" . Сегодня 12.03.2009. В терминах сапа это 20090312. Обратная дата - это разница между "концом" и сегодняшним днем ))) 99999999-20090312=79909687. Переведем этот остаток в нормальный формат 87.96.7990. Ну вот, примрно 8 тыщ лет сап отработает и все! А что удивляться, в наше время даже табуретки недолговечны...

_________________
Если долго биться головой об стену, то вскоре в стене появится небольшое отверстие ...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Обратный отсчет
СообщениеДобавлено: Пт, мар 13 2009, 12:30 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, мар 03 2009, 12:33
Сообщения: 141
интересно! кстати не только для молодых :D


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Обратный отсчет
СообщениеДобавлено: Пт, мар 13 2009, 13:02 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
По поводу конвертации дат туда и сюда:
Help написал(а):
1. CONVERT DATE f1 INTO INVERTED-DATE f2.
2. CONVERT INVERTED-DATE f1 INTO DATE f2.

Calculates the nine's complement of the internal date format
(YYYYMMDD - for more information about internal display,
meaning and initial values of types, see TYPES) and places it
in the field f2. For example, 19950511 ==> 80049488 / 80049488
==> 19950511.
In the inverse date format, the most recent date has the
numerically smallest value. You can make use of this effect
when sorting dates.

The technique of manipulating the sort sequence of dates by
inverting the internal date format is used only in very rare
cases. You can sort internal tables in order of ascending or
descending date values much more elegantly with the additions
... ASCENDING or ... DESCENDING of the SORT statement.

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


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

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


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

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


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

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