Select в фоновом задании.

Автор sonicby, Серпень 23, 2013, 12:53:44 ПП

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

sonicby

Запускаю  программу как в теме.
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     .


Так вот селект дает ошибку в чем может быть проблема ? Если запустить  в диалоговом режиме то все ок.

Uukrul

Цитата: sonicby від Серпень 23, 2013, 12:53:44 ПП
Так вот селект дает ошибку в чем может быть проблема ? Если запустить  в диалоговом режиме то все ок.
Какую ошибку? Что ничего не найдено?

sonicby

Да, ничего не найдено.  sy-subr = 4.

Uukrul

Цитата: sonicby від Серпень 23, 2013, 01:03:40 ПП
Да, ничего не найдено.  sy-subr = 4.
Это вы константы для примера забили, а в реальной работе там правильные номера документов стоят правильно? Ну если так, тогда читаем документацию про задержки обновления данных и как с этим бороться, точнее правильно анализировать. Ну например тема про оптимизацию абапа.. там есть вот такая вот темка: http://sapforum.biz/index.php/topic,174.msg1252.html#msg1252

sonicby

Проблема в том , я взял для проверки старый документ. Если тестовая программа вызывается в диалоге или фоновое выполнение - немедленно в SE38.
ВСЕ ОК.
Если программа вызывается в фоне через событие тогда  дает ошибку.

Uukrul

Цитата: sonicby від Серпень 23, 2013, 01:33:54 ПП
Если программа вызывается в фоне через событие тогда  дает ошибку.
Не вЭрю... я в потусторонние силы и барабашек.

sonicby

вот я тоже не понимаю, чувствую себя оленем.  :(

Uukrul

Цитата: sonicby від Серпень 23, 2013, 01:47:55 ПП
вот я тоже не понимаю, чувствую себя оленем.  :(
Ну поставь там бесконечный цикл перед запросом.. вызови событие.. перейди в SM51 и там по найди в списке твой процесс и по меню программа - перейти к отладке. Попадешь в отладку вызова и узнаешь что не так.

sonicby

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

Dmitriy

Цитата: Uukrul від Серпень 23, 2013, 02:09:43 ПП
Ну поставь там бесконечный цикл перед запросом.. вызови событие.. перейди в SM51 и там по найди в списке твой процесс и по меню программа - перейти к отладке. Попадешь в отладку вызова и узнаешь что не так.
Я тоже в барабашек не верю, но они есть, это совершенно реальные сущности, мешающие продуктивному труду абап-разработчиков. Иногда сам абапер превращается в оное. :)
Что показывает отладка фона? Не может быть, чтобы "старый документ" не выбирался, иначе это открытие СУБД достойно гораздо большего, нежели одного лишь присутствия здесь. Полный код можно? Критерии выбора правильно заполнены? Нули там ведущие нигде не пропущены? А то что-то странное у вас...

Uukrul

Цитата: sonicby від Серпень 23, 2013, 04:29:49 ПП
не в тот раздел тему поставил, можешь перенести. По самой проблеме пока ничего нашел.
Еще раз.. выполните отладку фонового процесса... до этого по проблеме искать как бы это мягко сказать - НЕЧЕГО!

Dmitriy

Цитата: Uukrul від Серпень 23, 2013, 09:18:15 ПП
Еще раз.. выполните отладку фонового процесса... до этого по проблеме искать как бы это мягко сказать - НЕЧЕГО!
Судя по всему, пацан не знает как это сделать...

Uukrul

Цитата: Dmitriy від Серпень 23, 2013, 09:54:32 ПП
Судя по всему, пацан не знает как это сделать...
Да вроде как я выше написал как?  :o

Dmitriy

Цитата: Uukrul від Серпень 23, 2013, 09:59:56 ПП
Да вроде как я выше написал как?  :o
Ты много всего писал, все ли слышат и умеют быть на Светлой стороне Силы? 8)
У меня сложилось такое впечатление, что какой-то глюк в коде, либо неправильно считывается sy-subrc, иначе нечто выдающееся. Как так: в диалоге е, а в фоне нема, зная, что документ давно есть? Что-то не так делает, сам понимаешь... ;)

Dmitriy

Практика показывает: любое ЧУДО в жизни, как и в системе SAP - есть непознанное нами явление природы. В данном, конкретном, случае - это действо абапера, неправильно интерпретирующего законы природы. Будем надеяться, что все у него получится. ;)

sonicby

Я делал отладку. В чем ошибка не понятно.

Dmitriy

Цитата: sonicby від Серпень 24, 2013, 06:28:46 ПП
Я делал отладку. В чем ошибка не понятно.
Не понятно, почему в отладке SELECT по старому документу проходит, а в фоне - нет. Бывает, что при создании новых документов они просто не успевают сохраниться в БД до выборки, однако это прерогатива быстроработающих программ, в фоновом, допустим, режиме, когда ресурсы серверов расходуются более эффективно. Странно, очень странно... Код можете более полный привести?

sonicby

#17

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'

Запускается запланированное фоновое задание с прогой.

В принципе я уже пошел другим путем (прикрутил обработку документа забалансового вида к программе выходного документа), но все равно интересно.





Dmitriy

Цитата: sonicby від Серпень 24, 2013, 08:17:37 ПП
но все равно интересно
Всем интересно))). Вы как sy-subrc читаете, все же более полный код можно? А то получается, что SAP вместе с БД глючит. :o На пару, так сказать...

sonicby

Более полный в каком смысле ?
Вполне нормальный код, специально упрощенный для теста глюка. Читаю в SM50 через дебаг ,  в loop меняю  break  на 1   в дебаге дохожу до селекта и вижу  subrc = 4.
В диалоге subrc = 0

Uukrul

Цитата: sonicby від Серпень 24, 2013, 08:42:37 ПП
Более полный в каком смысле ?
Вполне нормальный код, специально упрощенный для теста глюка. Читаю в SM50 через дебаг ,  в loop меняю  break  на 1   в дебаге дохожу до селекта и вижу  subrc = 4.
В диалоге subrc = 0
Ну давай тогда во-первых смотрим какой сервер приложений для задания и для диалога, далее картинки отладки показывай в диалоге и в фоне до выполнения запроса и сразу после, со значениями переменных, по которым идет выборка данных. А то какое-то шаманство уже получается.

SMF spam blocked by CleanTalk