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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Обновление базы.
СообщениеДобавлено: Пн, фев 21 2005, 11:29 
Гость
После call tran. не успевает произойти обновление базы и селект возвращается пустой. Как с этим бороться?

tables: lfb1.
data: lifnr type lfb1-lifnr,
bukrs type lfb1-bukrs.


call transaction 'XK01'.
get parameter id 'LIF' field lifnr.
get parameter id 'BUK' field bukrs.

select single * from lfb1
where
lifnr = lifnr and
bukrs = bukrs.

write lfb1.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, фев 21 2005, 11:35 
Гость
tables: lfb1.
data: lifnr type lfb1-lifnr,
bukrs type lfb1-bukrs.


call transaction 'XK01'.
if sy-subrc = 0.
clear: lifnr, bukrs.
do.
get parameter id 'LIF' field lifnr.
get parameter id 'BUK' field bukrs.
if not lifnr is initial.
exit.
endif.
enddo.
endif.

select single * from lfb1
where
lifnr = lifnr and
bukrs = bukrs.

write lfb1.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, фев 21 2005, 11:37 
Гость
да, еще перед вызовом транзакции
лучше поставить

set parameter id 'LIF' field ''.
set parameter id 'BUK' field ''.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, фев 21 2005, 11:54 
Гость
дело не в том что параметры не передаются (. Дело в том что в момент селекта нет еще данной записи в таблице. Есть вариант делать селект пока не появится запись или есть получше механизм.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, фев 21 2005, 11:55 
Гость
petrovich написал(а):
дело не в том что параметры не передаются (. Дело в том что в момент селекта нет еще данной записи в таблице. Есть вариант делать селект пока не появится запись или есть получше механизм.


попробуй поставить
COMMIT WORK AND WAIT.
перед селектом


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

Зарегистрирован:
Вс, окт 17 2004, 14:20
Сообщения: 326
Откуда: Москва
COMMIT WORK AND WAIT тут не поможет, потому что FM, обновляющий БД и не успевающий завершиться уже был запущен асинхронно по команде COMMIT WORK (без WAIT).

Надо попытаться заблокировать объект блокировки, который блокирует транзакция 'XK01' с параметром wait = 'X'.
http://sapboard.ru/forum/viewtopic.php?t=2571&highlight=wait


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, фев 21 2005, 13:10 
Гость
ABC написал(а):
COMMIT WORK AND WAIT тут не поможет, потому что FM, обновляющий БД и не успевающий завершиться уже был запущен асинхронно по команде COMMIT WORK (без WAIT).

Надо попытаться заблокировать объект блокировки, который блокирует транзакция 'XK01' с параметром wait = 'X'.
http://sapboard.ru/forum/viewtopic.php?t=2571&highlight=wait


да, точно :oops:
лучше так


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, фев 21 2005, 13:13 
Гость
в частном случае, можно и так...


tables: lfb1.
data: lifnr type lfb1-lifnr,
bukrs type lfb1-bukrs.


call transaction 'XK01'.

clear: lifnr, bukrs.

if sy-subrc = 0.
get parameter id 'LIF' field lifnr.
get parameter id 'BUK' field bukrs.
endif.

if not lifnr is initial.
clear lfb1.
do.
select single * from lfb1
where
lifnr = lifnr and
bukrs = bukrs.
if not lfb1-lifnr is initial.
exit.
endif.
enddo.
endif.


write lfb1.


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

Зарегистрирован:
Вс, сен 05 2004, 12:11
Сообщения: 420
Откуда: SAP ERP 2005
Метод с блокировками более универсальный.

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


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

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Должен также помочь CALL TRANSACTION ... UPDATE 'S' или CALL TRANSACTION ... UPDATE 'L'.

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, фев 21 2005, 13:34 
Гость
Clarus написал(а):
Метод с блокировками более универсальный.


никто и не спорит :wink:
просто лень иногда искать нужные фм для блокировок


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, фев 21 2005, 14:17 
Гость
спасибо.
вставил CALL FUNCTION 'ENQUEUE_EXLFA1' с WAIT 'X'.
вопрос вот какой при вызове данной функции она будет пытаться заблокировать объект единожды, те наткнулось на блокировку и выдало сообщение что объект заблокирован. Или ждет пока не произойдет разблокировка объекта?


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

Зарегистрирован:
Вс, окт 17 2004, 14:20
Сообщения: 326
Откуда: Москва
Сергей Королев написал:
Должен также помочь CALL TRANSACTION ... UPDATE 'S' или CALL TRANSACTION ... UPDATE 'L'.

В данном случае не поможет, т.к. UPDATE ['A'|'S'|'L'] - это возможное дополнение к CALL TRANSACTION tcod USING itab.


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

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

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


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

Зарегистрирован:
Чт, сен 09 2004, 07:32
Сообщения: 777
Откуда: Москва
Пол: Мужской
А почему не попробовать SET UPDATE TASK LOCAL?
Или я чего-то не уловил? :roll:

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


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

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


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

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


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

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