Текущее время: Чт, июн 26 2025, 02:09

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Можно ли запустить транзакцию, чтобы она видела измененные данные
СообщениеДобавлено: Пн, окт 22 2007, 14:18 
Начинающий
Начинающий

Зарегистрирован:
Пт, июн 29 2007, 17:55
Сообщения: 21
ДВС!
Нужно запустить транзакцию (gcu1) из события openfi (1110 - изменение документа). Эта транзакция читает bseg из базы, а он еще не изменен. Есть ли способ запустить транзакцию, чтобы она видела измененные данные ДО COMMIT WORK в вызвавшей программе? Добавление MODE 'S' или MODE 'L' для CALL TRANSACTION не помогает :(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Можно ли запустить транзакцию, чтобы она видела измененные данные
СообщениеДобавлено: Пн, окт 22 2007, 14:21 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
garikk написал(а):
Есть ли способ запустить транзакцию, чтобы она видела измененные данные ДО COMMIT WORK в вызвавшей программе? (

Нет способа, потому что БД обновляется намного позже.
Можно прочитать из памяти вызывающих программ или используемых групп функций через ASSIGN к их глобальной памяти.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 22 2007, 14:39 
Начинающий
Начинающий

Зарегистрирован:
Пт, июн 29 2007, 17:55
Сообщения: 21
А если б это был CALL FUNCTION или PERFORM, там читались бы из bseg уже новые данные?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 22 2007, 16:02 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Пн, май 14 2007, 13:05
Сообщения: 561
Откуда: Москва
Данных в БД еще нет, поэтому и нет разницы как вызывать выборку.
Как писал Sibrin, через ASSIGN.


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

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
garikk написал(а):
А если б это был CALL FUNCTION или PERFORM, там читались бы из bseg уже новые данные?

Ну, если найти подходящий (законный) функциональный модуль или подпрограмму, которые возвращают текущие значения внутренних таблиц (из вышеупомянутых глобальных переменных), то это даже лучше, чем assign. Другой вопрос, что таковых, как правило, нет или их намного труднее найти, в то время как assign'ом тыкнуться можно почти куда-угодно.


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

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Ну чисто для информации, то, что коммита еще не было - ни о чем не говорит :) Dearty read гуглите.
Правда в архитектуре САПа один фиг - не выйдет.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, окт 23 2007, 10:52 
Начинающий
Начинающий

Зарегистрирован:
Пт, июн 29 2007, 17:55
Сообщения: 21
Удалось сделать довольно красивым способом: в gcu1 (отчет rgurec10) нашёл вызов badi FI_SL_BADI_RGUREC10 - "BADI для замещений в структуре документа RGUREC10", у него один метод, в котором можно поменять прочитанные из базы данные документа. Измененные но еще не сохраненные в базу данные несем туда через export/import в memory_id

to Пономарев Артем:
Нащот dirty read не знаю, в транзакциях (БД) он обычно не используется. Очевидно в сапе все это выполняется не в рамках отдельной транзакции БД, поскольку в ней обычно поддерживается своя версия данных до фиксации.


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

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Ну как сказать.
Теоретически выйдет. Если в БД создать хранимку в которой сделать ALTER SESSION и вычитать незакомиченные данные.
Вызвать хранимку из САПы в native SQLе сразу после INSERTа и до коммита.
Но это даже не изварщение, это хуже :)

Что касается export/import в memory_id - на мой взгляд ничем не лучше ASSIGN'а, в данном случае.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, окт 24 2007, 10:18 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
garikk написал(а):
Нащот dirty read не знаю,

После того, как сделал insert или update, можно сразу сделать select и увидеть изменённые данные.

После того, как нажали кнопочку Save изменяются только таблицы vbmod и vbdata. А в прикладные таблыцы информация попадает в update-процессе, чуть позже.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 25 2007, 15:00 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Чт, окт 26 2006, 17:40
Сообщения: 55
Откуда: Москва
Красиво разрулил ситуацию, garikk, поздравляю!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: запуск транзакции GCU1
СообщениеДобавлено: Ср, сен 02 2015, 16:41 
Ассистент
Ассистент

Зарегистрирован:
Пт, фев 25 2011, 17:29
Сообщения: 43
Привет!

Столкнулся с необходимостью запуска транзакции GCU1 для многих документов.

при запуске через batch отрабатывает, но вместо экрана с результатами выдается:

"Обратите внимание на результаты выполнения программы - см.подробный текст"

при использовании CALL TRANSACTION нужно кроме года и БЕ задать номера документов и целевой реестр и деактивировать некоторые check-box'ы .

через что запускаете вы?


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

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


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

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


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

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