Текущее время: Ср, июл 23 2025, 01:21

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Заполение полей экрана
СообщениеДобавлено: Ср, мар 21 2007, 17:58 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, янв 11 2007, 09:32
Сообщения: 65
Здравствуйте.

Подскажите пожалуйста, есть ли возможность при запуске из abap-программы необходимой транзакции (например as01) с пропуском первого экрана автоматически заполнять еще некоторые поля в экране, который вывела транзакция (например поле "название" заполнить значением "ХХХ")?

Заранее спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, мар 21 2007, 18:46 
Младший специалист
Младший специалист

Зарегистрирован:
Пт, окт 07 2005, 13:38
Сообщения: 79
Откуда: ECC 6.0
Пол: Мужской
Можно, сформировать пакетный ввод (Batch Input) и скормить его через CALL TRANSACTION ... USING ...
В хелпе все есть ;)

_________________
The System has you...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 22 2007, 14:34 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, янв 11 2007, 09:32
Сообщения: 65
Ага... все получилось, супер :)
Но. Возникла новая проблема.
Как заполнять некоторые поля экрана, используя не CALL TRANZACTION, а LEAVE TO TRANSACTION?


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

Зарегистрирован:
Пт, окт 07 2005, 13:38
Сообщения: 79
Откуда: ECC 6.0
Пол: Мужской
В этом случае никак, а чем не устроил простой CALL TRANSACTION?

_________________
The System has you...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 22 2007, 16:00 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
andix007 написал(а):
Как заполнять некоторые поля экрана, используя не CALL TRANZACTION, а LEAVE TO TRANSACTION?


Можно попробовать немного извращённый способ. Обернуть вызов CALL TRANSACTION в отчёт, а его вызывать через SUBMIT. Данные передавать либо через параметры отчёта, либо - если их много - через EXPORT/IMPORT.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 22 2007, 16:24 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, янв 11 2007, 09:32
Сообщения: 65
xrondead написал:
В этом случае никак, а чем не устроил простой CALL TRANSACTION?


CALL TRANSACTION не устроил потому, что новая транзакция использует то же ОС, что и текущая транзакция (я в карточке ОС добавил кнопку, по которой вызывается новая транзакция. И при запуске этой транзакции, транзакция AS02 остается запущенной и соответственно нужное мне ОС блокировано).

Значит мне нужно либо использовать LEAVE TRANZACTION, либо программно перед CALL TRANSACTION закрывать текущую транзакцию.


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

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Можно руками снять блокировку, потом call transaction, а потом leave program.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 22 2007, 16:49 
Младший специалист
Младший специалист

Зарегистрирован:
Чт, янв 11 2007, 09:32
Сообщения: 65
А как руками снять блокировку?


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

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
CALL FUNCTION 'DEQUEUE_EXXXXXXX', где XXXXXXX ваш объект блокировки. Только нужно быть уверенным на 100%, что в этот момент транзакция AS02 оставила объект в консистентном состоянии.
Можно даже rollback или commit work для надёжности сделать.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 22 2007, 18:25 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
sibrin написал:
CALL FUNCTION 'DEQUEUE_EXXXXXXX', где XXXXXXX ваш объект блокировки. Только нужно быть уверенным на 100%, что в этот момент транзакция AS02 оставила объект в консистентном состоянии.
Можно даже rollback или commit work для надёжности сделать.

Вы, извините, ерунду советуете. Как можно в чужой программе снимать чужие блокировки, да ещё для надёжности делать commit work? Человек мыслит в правильном направлении. Самое надёжное - прекратить работу транзакции, тогда она автоматически будет 100% в консистентном состоянии.


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

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
EGF написал(а):
Самое надёжное - прекратить работу транзакции


Это масло масляное. Обсуждается то, каким именно образом прекратить работу транзакции.

Вы предлагаете из транзакции выйти по leave to transaction?
А про SAP LUW и DB LUW предлагаете забыть — пусть с ними неявно что-нибудь случится? Уж лучше сделать rollback и быть уверенным, что в БД ничего не запишется. Согласен, что делать commit очень опасно, это допустимо в очень редких случаях.

Вообще, вызывать из чужой транзакции что-либо опасно и нужно чётко понимать, в какой момент это можно сделать, а в какой нельзя. Особенно если обе транзакции изменяют один и тот же объект. Так что, каков вопрос — таков ответ.


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

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Если AS02 запущена под другим пользователем, к чему приведет удаление чужой блокировки? Как вы можете управлять чужим commit и rollback?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 23 2007, 11:20 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
sibrin написал:
А про SAP LUW и DB LUW предлагаете забыть


Про SAP LUW, конечно, забыть. При выходе из программы SAP LUW завершается, блокировки снимаются и весь контекст освобождается. Про DB LUW... Есть, конечно, риск, что что-то было сделано прямым апдейтом, но в случае со стандартной программой он стремится к нулю.


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

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
EGF написал(а):
Про SAP LUW, конечно, забыть. При выходе из программы SAP LUW завершается, блокировки снимаются


Так ежели он всё равно завершается и блокировки снимаются, то почему бы в рамках поставленной задачи не написать
ROLLBACK
DEQUEUE
CALL TRANSACTION
LEAVE PROGRAM
?

EGF написал(а):
и весь контекст освобождается.

Вот поэтому Submit, конечно, надёжнее. Скорее всего в обеих транзакциях используются общие ф.м., которые не всегда инициализируют свои глобальные переменные.

EGF написал(а):
но в случае со стандартной программой он стремится к нулю.

О чём говорить, если даже в bapi'шках встречаются rollback work (и даже иногда commit work!).

Думаю, что в очень многих стандартных транзакциях возникают прямые апдейты. Например, если используется APPL_LOG_WRITE_DB без параметра UPDATE_TASK = 'X'. Ну и тому подобное...


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

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


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

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


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

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