Posted: Mon Apr 18, 2011 8:52 pm Post subject: Select count(*) дает разные результаты в отчете и в методе
Здравствуйте!
Может быть, кто-нибудь сможет подсказать как может один и тот же запрос,
будучи вызванным в отчете явно - найти запись,
а вызванный в методе экземпляра класса в том же отчете в том же прогоне - не найти,
при том, что наличие данных в запрашиваемой таблице и их неизменность гарантированы?
Запрос простой:
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 в отладчике, обнаружил, что метод "не видит" только значения внесенные сегодня (но не во время исследуемого прогона). Если вставить туда какое-либо из добавленных днем ранее - находит.
'20110326102612.078972 '
А если пробел в конце числа убрать (между 2 и скобкой)?
Можно убрать, можно оставить - все равно.
vga wrote:
Мандант MANDT = `100` в селекте зачем указываете?
Условие запроса формируется автоматически.
Я пробовал убирать - нет разницы.
Очевидно, проблема не в синтаксисе запроса, потому что, повторяю, один и тот же, с точностью до символа запрос в течение одного прогона программы прямо в отчете работает правильно, а следом (или наоборот, перед), при вызове внутри метода - нет.
Posted: Tue Apr 19, 2011 9:46 am Post subject: Re: Select count(*) дает разные результаты в отчете и в мето
Вадим wrote:
Здравствуйте!
Нужно, чтобы работал метод класса. Прямо в отчет запрос был вынут с целью выяснить причину, по которой он всегда не успешен в методе.
значение2 - CHAR22 вида '20110326102612.078972 '
Заменяя значение2 в отладчике, обнаружил, что метод "не видит" только значения внесенные сегодня (но не во время исследуемого прогона). Если вставить туда какое-либо из добавленных днем ранее - находит.
Зачем было выносить из метода не понятно, можно же в него провалиться и смотреть.
Я думаю тут причина в типах полей метода и передаваемого значение2, а так же поле Z-Таблицы... проверьте, они одинаковые?
Ваша догадка о неявном COMMIT подтолкнула меня к решению.
Действительно, вызову проблемного метода предшествует команда удалить искомую запись, но никакого COMMIT не происходит, тем не менее последующий select (тот самый, который мы обсуждали здесь) эту запись уже не находит, хотя в таблице на момент его выполнения, согласно результату в SE16 во время отладки, она все еще есть.
Явный запрос в отчете действительно, выполняется до того, как будет послана команда на удаление, поэтому он запись находит нормально.
Надо мне более внимательно изучить порядок работы с БД в ABAP.
Благодарю всех участников обсуждения! Проблема решена.
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.