Текущее время: Вт, май 13 2025, 16:22

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: С Наступающим всех :) ... и сразу - вопрос по sy-subrc
СообщениеДобавлено: Пт, дек 31 2004, 07:09 
Гость
Глюк какойто предпраздничный:
вродебы простой алгоритм проверки - если не найдена 1 заись по первому условию, пытаемся найти по второму, если и ее нету, ругаемся:

clear str.
select single
mblnr mjahr ZZCHECK ZZUSER "2 доп.поля MKPF
from mkpf
into corresponding fields of str
where
mblnr = s7_tab_mseg-MBLNR
and mjahr = s7_tab_mseg-SJAHR
. "год исходного док-та
if ( sy-subrc <> 0 ).
clear str.
select single
mblnr mjahr ZZCHECK ZZUSER "2 доп.поля MKPF
from mkpf
into corresponding fields of str
where
mblnr = s7_tab_mseg-lfbnr
and mjahr = s7_tab_mseg-lfbja
.
endif.
if ( sy-subrc <> 0 ).
* ловушка крит.ошибок (ругаемся)
endif.

Алгоритм работает внутри инклуда при сторнировании док-та в MIGO.
Запускаем сторнирование - ругается. Выходим, ставим в отладчике точку останова, запускаем MIGO заново, сторнируем - вываливается в отладку и в ней пошагово ВСЕ РАБОТАЕТ :-\
Т.е. провести документ можно только под отладчиком.

Что это - неужели sy-subrc по разному себя ведет в режиме отладки и в режиме выполнения?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 31 2004, 10:25 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Паша, привет! И тебя с наступающим, а также привет всем знакомым в Югорске :D
А subrc там по-разному себя ведет из-за асинхронных обновлений. Когда ты в программе пытаешься считать только что проведенный документ, вполне возможно, что физически записи в таблице еще не обновились, так как они обновляются в отдельном параллельном процессе. В отладке все проходит потому, что когда ты пошагово программу выполняешь, времени проходит достаточно, чтобы асинхронное обновление сработало.
Что делать? Можно попытаться получить доступ к глобальным данным (данным проведенного документа) основной программы через динамический assign. А можно самому написать функцию, которая будет срабатывать в обновлении, вызвать ее из экзита (CALL FUNCTION ... IN UPDATE TASK) и уж во время ее работы все таблицы будут точно обновлены. Но это, естественно, зависит от задачи.

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 31 2004, 11:19 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 14:35
Сообщения: 1519
Откуда: В ВЕЧНОМ БАНЕ
Ну или делаем WAIT, ждем-с, пытаемся прочитать, если еще ничего нет, то еще раз ждем-с ну и если таки через пару минут ничего, тогда идем на ошибку :P


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, дек 31 2004, 13:45 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Вс, сен 05 2004, 12:11
Сообщения: 420
Откуда: SAP ERP 2005
Я в таких случаях делаю следующее: пытаюсь в цикле принудительно заблокировать только что созданный документ через ФМ ENQбла-блаMKPF (не помню точно, модуль блокировки для таблицы MKPF). Как только документ заблокировался (sy-subrc = 0), я его опять разблокирую и это значит, что записи уже легли в таблицы, можно делать выборку.

Всех с наступающими праздниками Я ИДИЁТ, УБЕЙТЕ МИНЯ КТО-НИБУДЬ!!!

_________________
Чтоб у нас все было, и нам за это ничего не было ! :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: *
СообщениеДобавлено: Пн, янв 17 2005, 08:41 
Гость
спасибо всем - помогло какраз ENQUEUEблаблаблаMKPF с параметром WAIT = 'X' :-)


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, янв 17 2005, 11:10 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Вс, сен 05 2004, 12:11
Сообщения: 420
Откуда: SAP ERP 2005
Ну, это прекрасно :-)

_________________
Чтоб у нас все было, и нам за это ничего не было ! :-)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, янв 17 2005, 11:29 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
А в цикле блокировать это принципиально? Одного раза недостаточно? Или там блокировка не сразу удается?

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: *
СообщениеДобавлено: Пн, янв 17 2005, 11:40 
Гость
дык с параметром WAIT оно кажись с одного раза выполнится - оно само внутри ждать должно


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, янв 17 2005, 11:50 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Вещь! Спасибо

_________________
С уважением, Сергей Королев


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

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


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

Сейчас этот форум просматривают: Google [Bot]


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

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