Текущее время: Сб, авг 02 2025, 20:22

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: оператор provide выводит кривую begda
СообщениеДобавлено: Вт, дек 23 2008, 17:30 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пт, янв 20 2006, 16:54
Сообщения: 64
Откуда: Пермь
Система 2004.
Данные инфотипа:
--------------------------------------------------------------------
PERNR 00000050
INFTY 0302
SUBTY
OBJPS
SPRPS
ENDDA 20081110
BEGDA 20081110
SEQNR 001
AEDTM 20081223
...
MASSN W2
MASSG 01
--------------------------------------------------------------------
Других записей с massn W2 нет.

Код:
--------------------------------------------------------------------
provide begda massn from p0302 BETWEEN pn-begda and pn-endda.
if p0302-MASSN EQ 'W2'.
g_date0 = p0302-begda.
endif.
endprovide.
--------------------------------------------------------------------
Как результат g_date0 равен 20081111.

А если так:
--------------------------------------------------------------------
provide * from p0302 BETWEEN pn-begda and pn-endda.
if p0302-MASSN EQ 'W2'.
g_date0 = p0302-begda.
endif.
endprovide.
--------------------------------------------------------------------
То как результат g_date0 равен 20081110.
Это хитрый сплит или что-то ещё?

_________________
Импортировать щапрос на перенос?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оператор provide выводит кривую begda
СообщениеДобавлено: Вт, дек 23 2008, 18:11 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва
Мне кажется где-то допущена ошибка?
Или откуда могла взяться дата 20081111?
Может быть поможет - при использовании provide в заголовок P0302 в begda endda помещаются даты с экрана выбора.
Т.е. если у нас в инфотипе есть строка с
ENDDA 20081130
BEGDA 20081110

а на экране выбора нач дата 20081111
то в g_date0 после
provide begda massn from p0302 BETWEEN pn-begda and pn-endda.
g_date0 = p0302-begda.
endprovide.
мы должны увидеть 20081111.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оператор provide выводит кривую begda
СообщениеДобавлено: Вт, дек 23 2008, 18:31 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
MV написал(а):
Система 2004.
Данные инфотипа:
--------------------------------------------------------------------
PERNR 00000050
INFTY 0302
SUBTY
OBJPS
SPRPS
ENDDA 20081110
BEGDA 20081110
SEQNR 001
AEDTM 20081223
...
MASSN W2
MASSG 01
--------------------------------------------------------------------
Других записей с massn W2 нет.

А какие есть?
Цитата:

Код:
--------------------------------------------------------------------
provide begda massn from p0302 BETWEEN pn-begda and pn-endda.
if p0302-MASSN EQ 'W2'.
g_date0 = p0302-begda.
endif.
endprovide.
--------------------------------------------------------------------
Как результат g_date0 равен 20081111.
Не получилось воспроизвести подобную ситуацию. Поищите в нотах - вдруг это баг.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оператор provide выводит кривую begda
СообщениеДобавлено: Вт, дек 23 2008, 18:45 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, сен 07 2004, 17:47
Сообщения: 2988
bossjohn написал(а):
Мне кажется где-то допущена ошибка?
Или откуда могла взяться дата 20081111?
Может быть поможет - при использовании provide в заголовок P0302 в begda endda помещаются даты с экрана выбора.

Это каким образом? Ведь тогда исчезнет весь смысл и ценность оператора provide, так как теряются сведения по сплитам дат. Да и отчёты не смогут правильно работать.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оператор provide выводит кривую begda
СообщениеДобавлено: Ср, дек 24 2008, 11:45 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пт, янв 20 2006, 16:54
Сообщения: 64
Откуда: Пермь
bossjohn написал(а):
Мне кажется где-то допущена ошибка?
Или откуда могла взяться дата 20081111?
Может быть поможет - при использовании provide в заголовок P0302 в begda endda помещаются даты с экрана выбора.
...


не похоже что с экрана.
даты 20081111 нет ни в хедерлайне, ни где бы то ни было ещё, к сожалению

_________________
Импортировать щапрос на перенос?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оператор provide выводит кривую begda
СообщениеДобавлено: Ср, дек 24 2008, 11:53 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пт, янв 20 2006, 16:54
Сообщения: 64
Откуда: Пермь
sy-uname написал(а):
MV написал(а):
Других записей с massn W2 нет.

А какие есть?

p0302 содержит следующие данные:

PERNR INFTY ANDDA BEGDA SEQNR AEDTM MASSN
00000050 0302 20081110 20081110 000 20081106 V1
00000050 0302 20081110 20081110 001 20081223 W2
00000050 0302 20081112 20081112 000 20081120 X1
00000050 0302 20081125 20081125 000 20081120 W3
00000050 0302 20081202 20081202 000 20081118 X8
00000050 0302 20081221 20081221 000 20081120 X0
00000050 0302 20090202 20090202 000 20081120 X1
00000050 0302 20090303 20090303 000 20081120 X4

всё выглядит так, как будто provide решает, что многовато дат 20081110 и выдаёт вместо неё 20081111 :)

_________________
Импортировать щапрос на перенос?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оператор provide выводит кривую begda
СообщениеДобавлено: Ср, дек 24 2008, 12:29 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, май 14 2007, 13:05
Сообщения: 561
Откуда: Москва
Code:
g_date0 = p0302-begda.

А в отладчике в этот момент кода, в p0302 - какая запись?
massn? Begda? Endda?
И какие значения pn-begda and pn-endda?

p.s. личный опыт -иногда ошибаешься и данные смотришь в одной системе а прогу запускаешь в другой 8)

_________________
Sapere aude!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: оператор provide выводит кривую begda
СообщениеДобавлено: Чт, дек 25 2008, 10:16 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, апр 17 2006, 21:49
Сообщения: 299
Откуда: Москва
sy-uname написал(а):
bossjohn написал(а):
Мне кажется где-то допущена ошибка?
Или откуда могла взяться дата 20081111?
Может быть поможет - при использовании provide в заголовок P0302 в begda endda помещаются даты с экрана выбора.

Это каким образом? Ведь тогда исчезнет весь смысл и ценность оператора provide, так как теряются сведения по сплитам дат. Да и отчёты не смогут правильно работать.


В этом можно легко убедиться например инфотип p0001 (реальный пример)
имеем строку
PERNR INFTY ... ENDDA BEGDA
00000010 0001 ... 99991231 20020101

есть такой код:
Code:
GET pernr.

  provide * from p0001 BETWEEN pn-begda and pn-endda.
    WRITE: p0001-pernr,  p0001-begda, p0001-endda.
   ENDPROVIDE.


результат для данного таб номера (на экране выбора период Сегодня):
    00000010 25.12.2008 25.12.2008
Так как если пользователь на экране выбора указывает конкретный период то его границы заносятся в заголовок p0001 а вот если не указывать период
то получим как раз
    00000010 01.01.2002 31.12.9999


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

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


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

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


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

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