2013-04-18 1 views
3

Следующий код должен вычесть 10 дней с заданной даты, сохранить результат в строковой переменной и записать его.Сохранение результата арифметики даты в строке

DATA str TYPE string. 
DATA date TYPE d. 

date = '20130418'. " 2013-04-18 
str = date - 10. 

WRITE str. 

Я ожидаю, что выход будет 2013-04-08 или по крайней мере unformated 20130408. Но фактический выход довольно таинственное число, которое не имеет смысла для меня вообще:

734967 

Может кто-нибудь объяснить мне, откуда этот номер?

Я уже нашел обходное решение (просто поместите результат в другую переменную типа d, а затем назначьте эту переменную строке), но меня все еще интересует объяснение этого странного результата.

релиз SAP_BASIS является 702.

ответ

3

Посмотри на conversion rules: Для вычитания, дата преобразуется в число дней с 01.01.0001 внутренне (выставленным типа, целевой типа I), то арифметика. Если результатом является поле даты, применяется преобразование (тип источника I/Packed, целевой тип D) в форму YYYYMMDD. Однако преобразование I/Packed в строку определяется по-разному - поэтому строка содержит количество дней между датой результата и 01.01.0001.

 Смежные вопросы

  • Нет связанных вопросов^_^