Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => Тема начата: sonicby от Август 23, 2013, 12:53:44 pm
-
Запускаю программу как в теме.
http://sapforum.biz/index.php/topic,388.0.html
есть код
gv_matdoc = '4900000214'.
gv_matyear = '2013'.
SELECT SINGLE * FROM mkpf INTO is_mkpf
WHERE mblnr EQ gv_matdoc
AND mjahr EQ gv_matyear .
Так вот селект дает ошибку в чем может быть проблема ? Если запустить в диалоговом режиме то все ок.
-
Так вот селект дает ошибку в чем может быть проблема ? Если запустить в диалоговом режиме то все ок.
Какую ошибку? Что ничего не найдено?
-
Да, ничего не найдено. sy-subr = 4.
-
Да, ничего не найдено. sy-subr = 4.
Это вы константы для примера забили, а в реальной работе там правильные номера документов стоят правильно? Ну если так, тогда читаем документацию про задержки обновления данных и как с этим бороться, точнее правильно анализировать. Ну например тема про оптимизацию абапа.. там есть вот такая вот темка: http://sapforum.biz/index.php/topic,174.msg1252.html#msg1252
-
Проблема в том , я взял для проверки старый документ. Если тестовая программа вызывается в диалоге или фоновое выполнение - немедленно в SE38.
ВСЕ ОК.
Если программа вызывается в фоне через событие тогда дает ошибку.
-
Если программа вызывается в фоне через событие тогда дает ошибку.
Не вЭрю... я в потусторонние силы и барабашек.
-
вот я тоже не понимаю, чувствую себя оленем. :(
-
вот я тоже не понимаю, чувствую себя оленем. :(
Ну поставь там бесконечный цикл перед запросом.. вызови событие.. перейди в SM51 и там по найди в списке твой процесс и по меню программа - перейти к отладке. Попадешь в отладку вызова и узнаешь что не так.
-
не в тот раздел тему поставил, можешь перенести. По самой проблеме пока ничего нашел.
-
Ну поставь там бесконечный цикл перед запросом.. вызови событие.. перейди в SM51 и там по найди в списке твой процесс и по меню программа - перейти к отладке. Попадешь в отладку вызова и узнаешь что не так.
Я тоже в барабашек не верю, но они есть, это совершенно реальные сущности, мешающие продуктивному труду абап-разработчиков. Иногда сам абапер превращается в оное. :)
Что показывает отладка фона? Не может быть, чтобы "старый документ" не выбирался, иначе это открытие СУБД достойно гораздо большего, нежели одного лишь присутствия здесь. Полный код можно? Критерии выбора правильно заполнены? Нули там ведущие нигде не пропущены? А то что-то странное у вас...
-
не в тот раздел тему поставил, можешь перенести. По самой проблеме пока ничего нашел.
Еще раз.. выполните отладку фонового процесса... до этого по проблеме искать как бы это мягко сказать - НЕЧЕГО!
-
Еще раз.. выполните отладку фонового процесса... до этого по проблеме искать как бы это мягко сказать - НЕЧЕГО!
Судя по всему, пацан не знает как это сделать...
-
Судя по всему, пацан не знает как это сделать...
Да вроде как я выше написал как? :o
-
Да вроде как я выше написал как? :o
Ты много всего писал, все ли слышат и умеют быть на Светлой стороне Силы? 8)
У меня сложилось такое впечатление, что какой-то глюк в коде, либо неправильно считывается sy-subrc, иначе нечто выдающееся. Как так: в диалоге е, а в фоне нема, зная, что документ давно есть? Что-то не так делает, сам понимаешь... ;)
-
Практика показывает: любое ЧУДО в жизни, как и в системе SAP - есть непознанное нами явление природы. В данном, конкретном, случае - это действо абапера, неправильно интерпретирующего законы природы. Будем надеяться, что все у него получится. ;)
-
Я делал отладку. В чем ошибка не понятно.
-
Я делал отладку. В чем ошибка не понятно.
Не понятно, почему в отладке SELECT по старому документу проходит, а в фоне - нет. Бывает, что при создании новых документов они просто не успевают сохраниться в БД до выборки, однако это прерогатива быстроработающих программ, в фоновом, допустим, режиме, когда ресурсы серверов расходуются более эффективно. Странно, очень странно... Код можете более полный привести?
-
REPORT ZTEST_MVT4.
data: gv_matdoc type mblnr.
data: gv_matyear type mjahr.
data: is_mkpf type mkpf.
data: lv_msg(255) type c.
data: break type i.
gv_matdoc = '4900000214'.
gv_matyear = '2013'.
if sy-batch eq 'X'.
while break ne 1.
endwhile.
endif.
SELECT SINGLE * FROM mkpf INTO is_mkpf
WHERE mblnr EQ gv_matdoc
AND mjahr EQ gv_matyear .
if sy-subrc eq 0.
concatenate 'Документ найден' gv_matdoc into lv_msg separated by space.
write lv_msg.
else.
write 'Документ не найден'.
endif.
Причем когда я говорю не работает в фоне, я имею ввиду запуск в фоне по событию.
CALL FUNCTION 'BP_EVENT_RAISE'
Запускается запланированное фоновое задание с прогой.
В принципе я уже пошел другим путем (прикрутил обработку документа забалансового вида к программе выходного документа), но все равно интересно.
-
но все равно интересно
Всем интересно))). Вы как sy-subrc читаете, все же более полный код можно? А то получается, что SAP вместе с БД глючит. :o На пару, так сказать...
-
Более полный в каком смысле ?
Вполне нормальный код, специально упрощенный для теста глюка. Читаю в SM50 через дебаг , в loop меняю break на 1 в дебаге дохожу до селекта и вижу subrc = 4.
В диалоге subrc = 0
-
Более полный в каком смысле ?
Вполне нормальный код, специально упрощенный для теста глюка. Читаю в SM50 через дебаг , в loop меняю break на 1 в дебаге дохожу до селекта и вижу subrc = 4.
В диалоге subrc = 0
Ну давай тогда во-первых смотрим какой сервер приложений для задания и для диалога, далее картинки отладки показывай в диалоге и в фоне до выполнения запроса и сразу после, со значениями переменных, по которым идет выборка данных. А то какое-то шаманство уже получается.