Текущее время: Пт, июн 20 2025, 23:48

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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