Текущее время: Сб, июн 28 2025, 10:37

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Монопольный доступ к работе с программой
СообщениеДобавлено: Пн, окт 03 2005, 06:48 
Гость
В общем такая проблема, когда несколько пользователей одновременно создают акт приемки-передачи ОС, то у всех генерируется один и тот же номер акта, как сделать монопольный доступ пользователя к программе, то есть пока один пользователь заводит акт, второй не имеет доступа к этой операции?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 03 2005, 06:56 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, авг 26 2004, 05:04
Сообщения: 922
Откуда: Челябинск
Пол: Мужской
Может лучше с диапазонами номеров поработать, а так можно просто заблокировать по индексу ENQUEUE_ESINDX

_________________
Все будет хорошо...
http://sap-blog.ru/


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 03 2005, 07:11 
Гость
А можно подробнее на счет этого индекса?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 03 2005, 07:18 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, авг 26 2004, 05:04
Сообщения: 922
Откуда: Челябинск
Пол: Мужской
Запускаешь этот модуль в самом начале программы, индексом может служить название программы, проверяешь на sy-subrc, если ноль то индекс не заблокирован можешь работать дальше. После окончания работы программы вызываешь DEQUEUE_ESINDX, понятно передаешь тот же индекс, блокировка снимается.

зы Если что, то блокировку может снять и Админ.

_________________
Все будет хорошо...
http://sap-blog.ru/


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 03 2005, 07:55 
Гость
то есть CALL FUNCTION 'DEQUEUE_ESINDX'
EXPORTING
srtfd = 'PRNAME'.
if sy-sybrc = 0.
и дальше продолжение программы, а как в конце?
CALL FUNCTION 'DEQUEUE_ESINDX'
importing
srtfd = 'PRNAME'?
PS не работала с функциями :oops:


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 03 2005, 07:58 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, авг 26 2004, 05:04
Сообщения: 922
Откуда: Челябинск
Пол: Мужской
Code:
  call function 'ENQUEUE_ESINDX'
       exporting
            relid          = 'ZZ'
            srtfd          = index
            srtf2          = 0
       exceptions
            foreign_lock   = 1
            system_failure = 2.
  if sy-subrc ne 0.
* bla bla bla... go to hell!!!
  else.
ну тут уже что надо то и делай
  endif

  call function 'DEQUEUE_ESINDX'
    exporting
*       MODE_INDX       = 'E'
*       MANDT           = SY-MANDT
       relid           = 'ZZ'
       srtfd           = index
       srtf2           = 0
*       X_RELID         = ' '
*       X_SRTFD         = ' '
*       X_SRTF2         = ' '
*       _SCOPE          = '3'
*       _SYNCHRON       = ' '
*       _COLLECT        = ' '
             .

_________________
Все будет хорошо...
http://sap-blog.ru/


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 03 2005, 08:20 
Гость
что-то не работает:(


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 03 2005, 09:00 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 08:55
Сообщения: 331
Откуда: Украина, г.Мариуполь
Пол: Мужской
Единственное, что мне неясно (доки к ф.модулю нет, к сожалению...), как будет вести себя такая блокировка при аварийном завершении программы: удалится ли она автоматом или нет. Если нет, как отловить "пустую" блокировку?


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

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
Это зависит от значения параметра _SCOPE - см. справку по технологии блокировок.

_________________
"Прежде чем сделать что-то, подумай, к чему это может привести..."


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 03 2005, 09:06 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 08:55
Сообщения: 331
Откуда: Украина, г.Мариуполь
Пол: Мужской
Проверил - все работает. Более того, если выйти из программы (вообще), то блокировка снимается автоматом - ф.модуль DEQUEUE_ESINDX я не использовал.

З.Ы. Извини, Ники, твой пост не видел. Пока отвечал сам себе, один пост успел проскочить... :)
Спасибо за идеи и практические примеры! (это всем, не только Нику:)


Последний раз редактировалось RoadRunner Пн, окт 03 2005, 09:13, всего редактировалось 1 раз.

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

Зарегистрирован:
Чт, авг 26 2004, 05:04
Сообщения: 922
Откуда: Челябинск
Пол: Мужской
RoadRunner написал:
Проверил - все работает. Более того, если выйти из программы (вообще), то блокировка снимается автоматом - ф.модуль DEQUEUE_ESINDX я не использовал

некоректно однако :roll:

_________________
Все будет хорошо...
http://sap-blog.ru/


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 03 2005, 09:13 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, авг 26 2004, 05:04
Сообщения: 922
Откуда: Челябинск
Пол: Мужской
bella_nata написал(а):
что-то не работает:(


приведите ваш код, плс

_________________
Все будет хорошо...
http://sap-blog.ru/


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 03 2005, 09:22 
Гость
* Global Data
INCLUDE ZAATX012_TOP.
DATA INDEX LIKE INDX-PGMID.
CALL FUNCTION 'DEQUEUE_ESINDX'
EXPORTING
RELID = 'ZZ'
SRTFD = INDEX
SRTF2 = 0
EXCEPTIONS
FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2.

IF SY-SUBRC NE 0.


МESSAGE s001 WITH 'Акт приемки-передачи формируется другим пользоватем'.
ENDIF.
* PBO Module
INCLUDE ZAATX012_PBO.
* PAI Module
INCLUDE ZAATX012_PAI.
INCLUDE ZAATX012_FORM.

*&---------------------------------------------------------------------*
*& Form VIG_EXCEL
*&---------------------------------------------------------------------*

CALL FUNCTION 'DEQUEUE_ESINDX'
EXPORTING
RELID = 'ZZ'
SRTFD = INDEX
SRTF2 = 0.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 03 2005, 09:34 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 08:55
Сообщения: 331
Откуда: Украина, г.Мариуполь
Пол: Мужской
Дык, вначале надо вызывать ENQUEUE_ESINDX!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 03 2005, 09:36 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 16:09
Сообщения: 202
А если у вас 50 человек должны ети акты вводить - а один начал ето делать и ушел в отпуск :) - понятно что можно выкинуть - но не в эетом дело - для решение таких задач специально было придумано нумерация.
Транзакция SNUM - создаем новый диапазон номеров

ФМ NUMBER_GET_NEXT - получение номеров - хоть 200 человек могут теперь вводит ваши документы - каждому будет выдан свой номер ... :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу 1, 2, 3  След.

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


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

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


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

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