Текущее время: Ср, апр 17 2024, 01:38

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




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Как из БО правильно забрать его текущий экемпляр
СообщениеДобавлено: Вт, янв 13 2009, 13:37 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 16 2007, 19:00
Сообщения: 168
Откуда: город
Всем привет.
Помогите, пожалуйста, начинающему. Хочу, чтобы метод бизнес-объекта возвращал ссылку на этот объект (метод типа create). Эта идея реализована, например, в методе FORMABSENC.CREATE.
Создал с нуля свой БО, создал метод create. Все параметры для метода типа instance-independent выставил точно так же, как и в работающем FORMABSENC.CREATE. Посмотрел, что надо использовать стандартный макрос swc_set_objectkey object-key в описании метода БО, использовал его - не помогло :oops:
При использовании этого метода в task ссылку на объект я не могу получить, получаю только экспортный параметр в виде номера созданного методом объекта (этот параметр объявлен как экспортный в соотв. функц. модуле).
Пока использовал следующий код в имплементации метода БО:
Code:
DATA VAC TYPE SWC_OBJECT.
SWC_CREATE_OBJECT VAC 'НАЗВАНИЕ_МОЕГО_БО' NUMBER.
SWC_SET_ELEMENT CONTAINER 'VAC' VAC.


Вся задача состоит в том, чтобы записать текущий объект в контейнер workflow.

В общем, помогите каким советом, а то я уже не знаю куда смотреть :oops:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как из БО правильно забрать его текущий экемпляр
СообщениеДобавлено: Вт, янв 13 2009, 18:32 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Для информации: Экземпляр БО в потоке


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как из БО правильно забрать его текущий экемпляр
СообщениеДобавлено: Чт, янв 15 2009, 16:24 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 16 2007, 19:00
Сообщения: 168
Откуда: город
Спасибо за ответ, но не уверен, что это именно то, что мне нужно. Постараюсь сформулировать свой вопрос попроще.
У меня есть метод бизнес-объекта CREATE. Хочу, чтобы в Workflow Builder, первым же шагом выполнялся этот метод. Сделал его вызов через задачу.
Теперь хочу получить после его выполнения ссылку на созданный объект. Для этого создал связь на вкладке CONTROL ОБЪЕКТ_КОНТЕЙНЕРА <-- &_WI_OBJECT_ID& . Теперь осталось "научить" метод CREATE возвращать ссылку на созданный объект. Как это сделать? У меня сейчас в методе CREATE следующий код:
Code:
86  begin_method create changing container.
87  CALL FUNCTION 'XXX_CREATE'
88   IMPORTING
89     FORMNUMBER             = OBJECT-KEY-NUMBER
90   EXCEPTIONS
91     FORM_NOT_CREATED       = 1
92     ABORTED                = 2
93     OTHERS                 = 3
94            .
95  ****** end ins
96
97  CASE SY-SUBRC.
98    WHEN 00.
99      SWC_SET_OBJECTKEY OBJECT-KEY.
100 ENDCASE.
101 end_method.


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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как из БО правильно забрать его текущий экемпляр
СообщениеДобавлено: Пт, янв 16 2009, 09:34 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Просто элементы контейнера, включенные в БО, заполните. Для примера можно посмотреть метод CREATE объекта DRAW и основанную на нем задачку TS408150.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как из БО правильно забрать его текущий экемпляр
СообщениеДобавлено: Чт, янв 29 2009, 19:16 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 16 2007, 19:00
Сообщения: 168
Откуда: город
Оказалось, что нужно было удалить все параметры для метода CREATE моего БО. Теперь он как-то по умолчанию возвращает ссылку на созданный объект в _WI_Object_ID. Вот в чем было дело... [s]И не нужно даже ничего объявлять в методе CREATE типа swc_set_objectkey object-key-number.[/s] Оказалось, что нужно, просто после того, как я убрал эту строчку из метода, у меня некоторое время тоже корректно передавался экземпляр (может кеширование какое срабатывало), поэтому и решил, что ничего не нужно.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как из БО правильно забрать его текущий экемпляр
СообщениеДобавлено: Пт, янв 30 2009, 12:55 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 16 2007, 19:00
Сообщения: 168
Откуда: город
Подскажите, пожалуйста, еще в одном вопросе. В моем БО в качестве одного из атрибутов указан стандартный БО USR01. Атрибут объявлен как Virtual, что означает, что имплементацию для него нужно написать вручную. Проблема в том, что в workflow log все остальные атрибуты (правда, они объявлены как database-атрибуты) у объекта заполнены, т.е. все работает, а вот атрибут, основанный на БО USR01, нет. Хотя в workflow log для этого атрибута написано не <No instance>, а USR01:имя_пользователя, но все присущие объекту USR01 атрибуты НЕ ЗАПОЛНЕНЫ. Может что-то дополнительно нужно в имплементации указать?
Вот имплементация для проблемного атрибута:
Code:
GET_PROPERTY CREATOR_VIRT_OBJ CHANGING CONTAINER.
SWC_CREATE_OBJECT OBJECT-CREATOR_VIRT_OBJ 'USR01' sy-uname. "создается объект object-creator_virt_obj типа USR01 с ключом sy-uname
SWC_SET_ELEMENT CONTAINER 'CREATOR_VIRT_OBJ' OBJECT-CREATOR_VIRT_OBJ. "данные из объекта записываются в контейнер
END_PROPERTY.

Спасибо заранее!

P.S. Попробовал создать виртуальный "обычный" атрибут, не объектный, тогда все прекрасно работает... А вот с объектом пока как-то нет :oops:
P.P.S. Еще попробовал сразу же после создания объекта (SWC_CREATE_OBJECT OBJECT-CREATOR_VIRT_OBJ 'USR01' sy-uname.) записать его в другой атрибут с помощью:
Code:
swc_get_property OBJECT-CREATOR_VIRT_OBJ 'Name' gv_name. "записать атрибут Name объекта USR01 в переменную gv_name.
SWC_SET_ELEMENT CONTAINER 'creator' gv_name. "записать в контейнер в качестве элемента creator переменную gv_name.

Все передается! Т.е. внутри БО мой атрибут содержит данные, а когда я нажимаю кнопку expand в workflow log для данного шага, то все атрибуты для USR01 пусты.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как из БО правильно забрать его текущий экемпляр
СообщениеДобавлено: Вт, фев 10 2009, 13:50 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, янв 16 2007, 19:00
Сообщения: 168
Откуда: город
Нота 928457


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

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


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

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


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

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