Текущее время: Пн, июл 07 2025, 02:06

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Проверить блокировки объектов
СообщениеДобавлено: Чт, июн 01 2006, 11:29 
Ассистент
Ассистент

Зарегистрирован:
Пт, фев 17 2006, 16:43
Сообщения: 28
Здравствуйте,
Я использую BAPI_PO_CREATE для создания заказа на приобретение. Если во время выполнения этого BAPI другой пользователь займет необходимые объекты (контракт, запись материала), то получаем ошибку типа: "Данные по заводу для материала 0020200145 блокированы пользователем LAVROVA".
Вопрос состоит в том, как мне до вызова BAPI проверять свободны ли нужные объекты и как првильно ждать, пока они освободяться?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверить блокировки объектов
СообщениеДобавлено: Чт, июн 01 2006, 11:49 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, ноя 12 2004, 10:44
Сообщения: 370
Откуда: Москва
GUGO написал(а):
Здравствуйте,
Я использую BAPI_PO_CREATE для создания заказа на приобретение. Если во время выполнения этого BAPI другой пользователь займет необходимые объекты (контракт, запись материала), то получаем ошибку типа: "Данные по заводу для материала 0020200145 блокированы пользователем LAVROVA".
Вопрос состоит в том, как мне до вызова BAPI проверять свободны ли нужные объекты и как првильно ждать, пока они освободяться?

воссоздай ситуацию - заблокируй что-нибудь сам и в SM12 посмотри. ждать не стоит. бывают люди, которые входят на редактирование чего-либо и уходят с рабочего места... ;)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 01 2006, 11:50 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, сен 22 2004, 08:42
Сообщения: 1079
Откуда: Москва
Пол: Мужской
Смотри ФM ENQUEUE_READ.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Проверить блокировки объектов
СообщениеДобавлено: Чт, июн 01 2006, 11:56 
Ассистент
Ассистент

Зарегистрирован:
Пт, фев 17 2006, 16:43
Сообщения: 28
Что такое SM12 я знаю.
Речь идет о програмном способе. Что-то типа функций вида ENQUEUE_*.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Проверить блокировки объектов
СообщениеДобавлено: Чт, июн 01 2006, 12:07 
Ассистент
Ассистент

Зарегистрирован:
Пт, фев 17 2006, 16:43
Сообщения: 28
2Mike1
Насколько я понимаю, эта функция определяет блокировку конкретной отдельной таблицы (например KNB1):
Code:
DATA: GARG LIKE SEQG3-GARG,
  ENQ LIKE SEQG3 OCCURS 1 WITH HEADER LINE.
 
REFRESH ENQ.
  CONCATENATE SY-MANDT KUNNR BUKRS INTO GARG.
  CALL FUNCTION 'ENQUEUE_READ'
       EXPORTING
            GCLIENT               = SY-MANDT
            GNAME                 = 'KNB1'
            GARG                  = GARG
            GUNAME                = SPACE
       TABLES
            ENQ                   = ENQ
       EXCEPTIONS
            COMMUNICATION_FAILURE = 1
            SYSTEM_FAILURE        = 2
            OTHERS                = 3.
  READ TABLE ENQ INDEX 1.
  IF SY-SUBRC = 0.
    MESSAGE S041 WITH KUNNR BUKRS ENQ-GUNAME.
    LEAVE LIST-PROCESSING.
  ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Проверить блокировки объектов
СообщениеДобавлено: Чт, июн 01 2006, 12:09 
Ассистент
Ассистент

Зарегистрирован:
Пт, фев 17 2006, 16:43
Сообщения: 28
Как определить какие таблицы понадобятся BAPI_PO_CREATE?
Нельзя ли блокировать (проверять) сразу все связанные объекты?
P.S. кажется я слишком многого захотел :lol:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 01 2006, 12:15 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, сен 22 2004, 08:42
Сообщения: 1079
Откуда: Москва
Пол: Мужской
Если не заполнять GNAME и GARG можно получить полный список блокировок.
А количества Z в вашей системе я предсказать не берусь.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 01 2006, 12:22 
Гость
Может лучше использовать BAPI_PO_CREATE1 ?

Там есть тестовый режим, который и проверит отсуствие блокировок....


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения: Проверить блокировки объектов
СообщениеДобавлено: Чт, июн 01 2006, 13:14 
Ассистент
Ассистент

Зарегистрирован:
Пт, фев 17 2006, 16:43
Сообщения: 28
ToРМщик Огромное спасибо, все работает.
Непонятно только, что я буду делать, когда такой вопрос встанет с Документом движения материала, например?
Ведь предложенный способ весьма спецефичен и не подойдет в других случаях.... :roll:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проверить блокировки объектов
СообщениеДобавлено: Чт, июн 01 2006, 13:17 
Гость
[quote="GUGO"]Непонятно только, что я буду делать, когда такой вопрос встанет с Документом движения материала, например?
[quote]

в BAPI_GOODSMVT_CREATE тоже есть тестовый режим :)
или я не понял вопроса?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения: Проверить блокировки объектов
СообщениеДобавлено: Чт, июн 01 2006, 14:04 
Ассистент
Ассистент

Зарегистрирован:
Пт, фев 17 2006, 16:43
Сообщения: 28
Э... Ну в Сапе же есть BAPI, где нет TESTRUN (ну BAPI_BATCH_CREATE вроде бы)...
Я просто хотел узнать можно ли использовать этот способ для других BAPI (там где нет TESTRUN). Например, делая ролбэк если в RETURN встретились сообщения о блокировках.

Возник еще вопрос: что делать, если блокировка есть? Следует ли в цикле (каждые n секунд, но не более m раз) вызывать BAPI в TESTRUN, пока блокировки не снимутся, или есть более правильный способ (например, как-то поставить себя в очередь к объекту и ждать уже события)?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 01 2006, 14:13 
Гость
после грамотных бапишек - всегда нужен commit work
поэтому можно анализировать результат отработки бапишки

и делать что-то вроде

call function 'BAPI....'
...
...
IMPORTING
DOCNUM = DOCNUM.


If docnum is initial.
rollback work.
else.
commit work.
endif.

или же тоже самое по exception's через sy-subrc


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 01 2006, 14:16 
Гость
а ставить или не ставить в очередь - вопрос не имеет однозначного ответа для ВСЕХ задач.

Вот у нас например, все движения материала через bapi - обязательно становятся в очередь, потому что их слишком много, да и логика движения материала без очереди может нарушиться


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения: Проверить блокировки объектов
СообщениеДобавлено: Чт, июн 01 2006, 15:25 
Ассистент
Ассистент

Зарегистрирован:
Пт, фев 17 2006, 16:43
Сообщения: 28
Не могли бы вы привести пример кода, в котором объекты ставятся в очередь и ждут освобождения блокировки.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 01 2006, 16:21 
Гость
Code:
    call function 'TRFC_SET_QUEUE_NAME'
      exporting
        qname  = qname  "Устанавливаем имя очереди
      exceptions
        others = 99.
    if sy-subrc <> 0.
      call function 'Z_.....'
         in background task
       .....
    endif.


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

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


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

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


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

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