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

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


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

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


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

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