SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Select count(*) дает разные результаты в отчете и в методе



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
Вадим
Участник
Участник



Joined: 18 Apr 2011
Posts: 4

PostPosted: Mon Apr 18, 2011 8:52 pm    Post subject: Select count(*) дает разные результаты в отчете и в методе Reply with quote

Здравствуйте!

Может быть, кто-нибудь сможет подсказать как может один и тот же запрос,
будучи вызванным в отчете явно - найти запись,
а вызванный в методе экземпляра класса в том же отчете в том же прогоне - не найти,
при том, что наличие данных в запрашиваемой таблице и их неизменность гарантированы?

Запрос простой:
Code:
select count(*)
from (имя_таблицы_как_строка)
where (набор_условий)


где набор условий - это таблица из строк
Code:
MANDT = `100`
AND
имя_поля2 = `значение2`


таблица пользовательская - Z*.

SAP ECC 6.0
ORACLE 10.2.0.4.0

Нужно, чтобы работал метод класса. Прямо в отчет запрос был вынут с целью выяснить причину, по которой он всегда не успешен в методе.

значение2 - CHAR22 вида '20110326102612.078972 '

Заменяя значение2 в отладчике, обнаружил, что метод "не видит" только значения внесенные сегодня (но не во время исследуемого прогона). Если вставить туда какое-либо из добавленных днем ранее - находит.
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 170
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Mon Apr 18, 2011 11:01 pm    Post subject: Reply with quote

Здравствуйте!
У таблицы свойство буферизация включено?

_________________
Молитва - это запрос разработчику на изменение кода программы.
Back to top
View user's profile Send private message Blog Visit poster's website
Вадим
Участник
Участник



Joined: 18 Apr 2011
Posts: 4

PostPosted: Tue Apr 19, 2011 7:38 am    Post subject: Reply with quote

Нет. Буферизация вообще запрещена.
Класс таблицы Masted Data, Transparent
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 170
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Tue Apr 19, 2011 9:26 am    Post subject: Reply with quote

'20110326102612.078972 '
А если пробел в конце числа убрать (между 2 и скобкой)?

Мандант MANDT = `100` в селекте зачем указываете?

_________________
Молитва - это запрос разработчику на изменение кода программы.
Back to top
View user's profile Send private message Blog Visit poster's website
Вадим
Участник
Участник



Joined: 18 Apr 2011
Posts: 4

PostPosted: Tue Apr 19, 2011 9:43 am    Post subject: Reply with quote

vga wrote:
'20110326102612.078972 '
А если пробел в конце числа убрать (между 2 и скобкой)?

Можно убрать, можно оставить - все равно.
vga wrote:

Мандант MANDT = `100` в селекте зачем указываете?

Условие запроса формируется автоматически.
Я пробовал убирать - нет разницы.

Очевидно, проблема не в синтаксисе запроса, потому что, повторяю, один и тот же, с точностью до символа запрос в течение одного прогона программы прямо в отчете работает правильно, а следом (или наоборот, перед), при вызове внутри метода - нет.
Back to top
View user's profile Send private message
Igor_34_rus
Специалист
Специалист



Joined: 08 Apr 2009
Posts: 75

PostPosted: Tue Apr 19, 2011 9:46 am    Post subject: Re: Select count(*) дает разные результаты в отчете и в мето Reply with quote

Вадим wrote:
Здравствуйте!
Нужно, чтобы работал метод класса. Прямо в отчет запрос был вынут с целью выяснить причину, по которой он всегда не успешен в методе.

значение2 - CHAR22 вида '20110326102612.078972 '

Заменяя значение2 в отладчике, обнаружил, что метод "не видит" только значения внесенные сегодня (но не во время исследуемого прогона). Если вставить туда какое-либо из добавленных днем ранее - находит.


Зачем было выносить из метода не понятно, можно же в него провалиться и смотреть.
Я думаю тут причина в типах полей метода и передаваемого значение2, а так же поле Z-Таблицы... проверьте, они одинаковые?
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 170
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Tue Apr 19, 2011 9:54 am    Post subject: Reply with quote

Может кода больше приведете?

А не связано это с тем, что метод класса вызывается до commit (или происходит неявный коммит), а в отчете уже commit выполнен?

Может нужно писать COMMIT and WAIT?

_________________
Молитва - это запрос разработчику на изменение кода программы.
Back to top
View user's profile Send private message Blog Visit poster's website
Вадим
Участник
Участник



Joined: 18 Apr 2011
Posts: 4

PostPosted: Tue Apr 19, 2011 11:03 am    Post subject: Reply with quote

Спасибо, vga!

Ваша догадка о неявном COMMIT подтолкнула меня к решению.

Действительно, вызову проблемного метода предшествует команда удалить искомую запись, но никакого COMMIT не происходит, тем не менее последующий select (тот самый, который мы обсуждали здесь) эту запись уже не находит, хотя в таблице на момент его выполнения, согласно результату в SE16 во время отладки, она все еще есть.

Явный запрос в отчете действительно, выполняется до того, как будет послана команда на удаление, поэтому он запись находит нормально.

Надо мне более внимательно изучить порядок работы с БД в ABAP.

Благодарю всех участников обсуждения! Проблема решена.
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Tue Apr 19, 2011 11:14 am    Post subject: Reply with quote

По поводу работы с БД смотрите здесь
_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.