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

Часовой пояс: 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 часа


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

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


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

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