Текущее время: Пн, авг 04 2025, 16:06

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Тип d в abap
СообщениеДобавлено: Пн, апр 28 2008, 14:50 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Пн, апр 28 2008, 03:35
Сообщения: 8
Откуда: SPb
Добрый день! Я читаю про типизацию в ABAP по книге Кречмера.
В глав 4 есть примерчик - "Типичный пример определения последнего дня предыдущего месяца (ultimo)":

Code:
data ultimo type d.*(1)
ultimo = sy-datum. *(2)
ultimo+6(2) = '01' . *(3)
subtract 1 from ultimo.  *(4)
write ultimo.  *(5)


*(1) - объявляем ultim
*(2) - берем текущую дату
*(3) - ??? что это за литералы ???
*(4) - ?? вероятно, берем первый день месяца?
*(5) - выводим.

Понятно всё, кроме строк 3 и 4. Можете пожалуйста объяснить, что на них происходит?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Тип d в abap
СообщениеДобавлено: Пн, апр 28 2008, 14:56 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, апр 12 2006, 12:43
Сообщения: 863
Откуда: СССР
Пол: Мужской
ori написал(а):
Code:
data ultimo type d.*(1)
ultimo = sy-datum. *(2)
ultimo+6(2) = '01' . *(3)
subtract 1 from ultimo.  *(4)
write ultimo.  *(5)


*(1) - объявляем ultim
*(2) - берем текущую дату
*(3) - ??? что это за литералы ???
*(4) - ?? вероятно, берем первый день месяца?
*(5) - выводим.

Понятно всё, кроме строк 3 и 4. Можете пожалуйста объяснить, что на них происходит?

*3 - присвоение переменной ultimo значения первого числа текущего месяца
*4 - вычитаем единичку из даты (первое число текущего месяца), получаем последнее число предыдущего месяца.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, апр 28 2008, 14:56 
Директор
Директор

Зарегистрирован:
Пт, окт 07 2005, 09:10
Сообщения: 752
Откуда: 4.6C
Пол: Мужской
3 - меняем день текущей даты на первый день месяца.
4 - вычитаем 1 день, что соответствует последнему дню предыд. месяца


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, апр 28 2008, 15:27 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Пн, апр 28 2008, 03:35
Сообщения: 8
Откуда: SPb
C (4) - c subtract разобрался, спасибо =)

а в строке (3) - в принципе, понятно, что она делает, но всё еще не понял значение "+6(2)" - почему плюс, почему без пробела. А то, что = '01', это и есть непосредственное присвоение первого дня месяца получается.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, апр 28 2008, 16:00 
Специалист
Специалист

Зарегистрирован:
Пт, окт 20 2006, 16:39
Сообщения: 230
ori написал(а):
C (4) - c subtract разобрался, спасибо =)

а в строке (3) - в принципе, понятно, что она делает, но всё еще не понял значение "+6(2)" - почему плюс, почему без пробела. А то, что = '01', это и есть непосредственное присвоение первого дня месяца получается.


+6 - с шестого символа (2) берем два символа
дата представлена в виде yyyymmdd, получается, что мы последним двум символам присваиваем значение "01"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, апр 28 2008, 16:00 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
ori написал(а):
C (4) - c subtract разобрался, спасибо =)

а в строке (3) - в принципе, понятно, что она делает, но всё еще не понял значение "+6(2)" - почему плюс, почему без пробела. А то, что = '01', это и есть непосредственное присвоение первого дня месяца получается.

Читайте справку 1) по встроенным типам; 2) По синтаксису

В данном случае: тип d это 8 alphanumeric characters - т.е. грубо говоря текст длиной 8 с некоторыми ограничениями на содержимое. Поэтому к данному типу приминима операнд частичного доступа к полю(см. help для subfield access)

_________________
"После" - не значит "вследствие"


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, апр 28 2008, 16:15 
Начинающий
Начинающий
Аватара пользователя

Зарегистрирован:
Пн, апр 28 2008, 03:35
Сообщения: 8
Откуда: SPb
Почитал еще и разобрался. Спасибо за помощь :)


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

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


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

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


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

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