Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => SE38 - ABAP Редактор => Тема начата: Паганель от Октябрь 15, 2008, 07:14:44 pm
-
Вообщем нужна помощь или идея, буду рад любым даже самым безумным идеям ......
Ситуация такая: есть прога (не важно где и как запускается), она создает заказ, потом ПМ (отпуск 161 ВД), потом СФ,
и вот случаются ситуации когда после создания заказа, ПМ и СФ не создаются, сижу анализирую код, единственное место
в котором могут быть по ИМХО проблемы - перед созданием ПМ идет проверка есть ли заказ (простым select from ekko), и тут
думаю? возможны ситуации, когда при массовой заливки заказ создался и не прошел еще апдейт (3 кажется все процеса на инсерт/апдейт в SAP) и выборка не находит созданный заказ ......
внимание вопрос: как можно сбросить буфера и т.д. что бы выборка находила заказ..... commit work и тд используется где только возможно ....
еще момент - при тестировании через отладчик такую ситацию воспроизвести не удалось .......
-
еще момент - при тестировании через отладчик такую ситацию воспроизвести не удалось .......
Буфера тут сбрасывать нафиг надо... надо просто проверять существование документа, например пытаться выставить на документ блокировку, если выставилась, снимаем и можем работать дальше, нет, тогда надо подождать, т.е. нужна проверка на существование документа в базе системы.
-
Спасибо за ответ.
да вроде ставится ..... правда не там кажется, сейчас гляну ..... хотя как можно пытатся блокировать того что нет ....
Перед ПМ делается выборка с ekko, и даже если обьект заброкирован, я думаю попытка создать ПМ будет, и если что будет ошибка,
а тут то и нет ошибок, все отрабатывает на ура, только Пм не создается, т.е. либо заказа еще нет (проверка перед ПМ), либо я что-то не понимаю.....
вобщем попробуемс еще так ...
-
хотя - пока открывался редактор, пришда мысль, может ты и прав, попытка взять блокировку даст то что перед тем как создавать ПМ,
по любому должен быть заказ .... и т.д. спасибо ....
-
извиняюсь, еще один вопросик (на медленном соеденении трудновато ставить опыты, проще спросить): что произойдет если обьекта (заказа) на который пытаемся выставить блокировку нету ?
-
извиняюсь, еще один вопросик (на медленном соеденении трудновато ставить опыты, проще спросить): что произойдет если обьекта (заказа) на который пытаемся выставить блокировку нету ?
В твоем варианте все будет нормально, так как объект есть, но еще полностью не произошло обновление, поэтому, делаешь выставление блокировки с флагом _XWAIT = X, и получишь управление как раз тогда, когда все будет отработанно. При массовой обработке мне такой способ помогал всегда.
-
Перед ПМ делается выборка с ekko, и даже если обьект заброкирован, я думаю попытка создать ПМ будет, и
Если заказ заблокирован, то ПМ создать не получится, отвалится по блокировке.
-
В твоем варианте все будет нормально, так как объект есть, но еще полностью не произошло обновление, поэтому, делаешь выставление блокировки с флагом _XWAIT = X, и получишь управление как раз тогда, когда все будет отработанно. При массовой обработке мне такой способ помогал всегда.
Большое спасибо, по любому протестирую блокировку в случаях если есть и если нет заказа.
-
P.S. Надеюсь поможет, так как это только предположение что ПМ не создается из-за того что не срабатывает SELECT.
-
P.S. Надеюсь поможет, так как это только предположение что ПМ не создается из-за того что не срабатывает SELECT.
Ну при массовой заливке вполне может быть так, что обновления еще не прошли или в процессе, т.е. заказа еще нет... а блокировка точно будет ждать пока оно появится.
-
Вообщем посмотрел, оказывается там столял вызов подпрограммы с установкой/снятием блокировки,
еденственное что добавил _XWAIT = X, посмотрим что это даст, плохо что не получается воспроизвести ситуацию с пропуском ПМ в отладчике и вообще в тестовой системе.
-
Вообщем посмотрел, оказывается там столял вызов подпрограммы с установкой/снятием блокировки,
еденственное что добавил _XWAIT = X, посмотрим что это даст, плохо что не получается воспроизвести ситуацию с пропуском ПМ в отладчике и вообще в тестовой системе.
Почему не получается... после того как не смог прочитать это в SELECT или когда возникла ошибка напиши что то типа:
if sy-subrc ???
break-point.
endif.
Ну и вывалишься как раз когда появится твоя ошибка.
-
Так проблема в том что ошибка то не валится - просто ПМ не создается и все,
притом это нельзя воспроизвести в тестовом режиме (такая фигня и в продуктиве случается не часто)
-
+ там везде после после вызова бапи есть обработка ошибок
-
Так проблема в том что ошибка то не валится - просто ПМ не создается и все,
притом это нельзя воспроизвести в тестовом режиме (такая фигня и в продуктиве случается не часто)
ПМ, не создается, но причина в любом случе есть тогда в параметре return, почему документ не прошел, если это через BAPI делается. Ну или тогда sy-subrc не нулевое, если бапишка вообще плохо себя повела. Других причин вроде как небывает.
-
как оказалось (не досомтрел) выше перед select стоял вызов формы с попыткой наложить блокировку,
я вообщем (как писал ниже) добавил _XWAIT = X, плюс при вызове бапи кучу проверок возвращаемого значения ..... может и нерешится проблема, то хоть буду видеть что есть ошибки, а дальше как нибудь через отладчик ..... ждем продолжения, так как ситуация повторяется редко .....
за помощь спасибо..