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

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


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

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


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

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