Текущее время: Чт, июл 24 2025, 05:07

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Как создать объект RE-FX без сохранения (чтобы пользователь сам сохранил)
СообщениеДобавлено: Пт, мар 02 2012, 13:26 
Менеджер
Менеджер

Зарегистрирован:
Пн, июн 30 2008, 17:16
Сообщения: 690
Коллеги, есть желание создать объект RE-FX например единицу аренды, заполнить в нём некоторые поля и открыть транзакцию создания этого объекта, так, чтобы пользователь сам мог проверить всё и сохранить.
Пробовал создавать через BAPI_RE_RO_CREATE, но в этом случае объект надо обязательно сохранить и уже потом открывать на редактирование, что не подходит.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать объект RE-FX без сохранения (чтобы пользователь сам сохранил)
СообщениеДобавлено: Вс, мар 04 2012, 18:11 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
Osm написал(а):
Коллеги, есть желание создать объект RE-FX например единицу аренды, заполнить в нём некоторые поля и открыть транзакцию создания этого объекта, так, чтобы пользователь сам мог проверить всё и сохранить.
Пробовал создавать через BAPI_RE_RO_CREATE, но в этом случае объект надо обязательно сохранить и уже потом открывать на редактирование, что не подходит.

Можно так:

1. Создать класс ZCL_RECA_BDT_APPL_TOOL_... скопировав его с CL_RECA_BDT_APPL_TOOL или создать с нуля наследовав его от супера CL_RECA_WB_DEFAULT_TOOL

2. В тр. RECAWBREQTOOL добавить операцию, например, NEW_WITH_DATA. В поле "Класс инструмента" указать класс из п.1 ZCL_RECA_BDT_APPL_TOOL_...
3. В методе DO_WB_REQUEST добавить обработку операции NEW_WITH_DATA
Code:
  CASE io_request->md_operation.
   
*<<<<   
    WHEN 'NEW_WITH_DATA'.
      CLEAR lo_busobj.
      CALL METHOD io_request->mo_data_container->get
        EXPORTING
          id_id   = 'BUSOBJ'
        IMPORTING
          ex_data = lo_busobj
        EXCEPTIONS
          OTHERS  = 0.
      IF lo_busobj IS NOT BOUND.
        RETURN.
      ENDIF.
*>>>>

*   ----------------------------------------------------------- DISPLAY
    WHEN recaw_operation-display.
      CALL METHOD io_request->mo_data_container->get
        EXPORTING
          id_id   = recaw_data_id-activity


Code:
*   ----------------------------------------------------------- DISPLAY
    WHEN recaw_operation-display       OR
         recaw_operation-edit          OR
         recaw_operation-new           OR
         recaw_operation-new_cn        OR
         recaw_operation-follow_cn     OR
         recaw_operation-follow_cn_obj OR
         recaw_operation-new_dp        OR
         recaw_operation-new_by_temp   OR
         'NEW_WITH_DATA'   OR
         recaw_operation-initial.

*     show the tool requests...

      CREATE OBJECT lo_bdt_appl_tool.              "<-----

      CALL FUNCTION 'RECA_BDT_APPL_SHOW_OBJECT'
        EXPORTING
          io_bdt_appl_tool = lo_bdt_appl_tool "me "<-----
          io_busobj        = lo_busobj
        EXCEPTIONS
          error            = 1
          OTHERS           = 2.



4. Создать объект через CF_REBD_RENTAL_OBJECT=>CREATE
Code:
TYPE-POOLS:
  reca1.

INCLUDE:
  ifrecamsg.

DATA:
  ld_wbident TYPE recawbident,
  ld_wbobjtype TYPE recawbobjtype VALUE reca1_objtype-rental_object,
  lo_rental_object TYPE REF TO if_rebd_rental_object,
  lo_request TYPE REF TO cl_reca_wb_request.

CALL METHOD cf_rebd_rental_object=>create
  EXPORTING
    id_bukrs      = '0001'
    id_swenr      = '1'
    id_smenr      = '1'
    id_rotype     = rebd1_rotype-rentalunit
    id_snunr      = '0001'
    if_auth_check = abap_true
  RECEIVING
    ro_instance   = lo_rental_object
  EXCEPTIONS
    error         = 1
    OTHERS        = 2.
IF sy-subrc IS NOT INITIAL.
  mac_symsg_send.
ENDIF.


5. Заполнить некоторые нужные вам поля через соответствующие методs SET_... интерфейса IF_REBD_RENTAL_OBJECT
6. Создать WB-request и добавить инстанцию созданного объекта из п.4 в дата контейнер:

Code:
CREATE OBJECT lo_request
  EXPORTING
    id_wbobjtype = ld_wbobjtype
    id_wbident   = ld_wbident
    id_operation = 'NEW_WITH_DATA'.

lo_request->mo_data_container->add(
  id_id   = 'BUSOBJ'
  ix_data = lo_rental_object
  ).


7. Запустить request
Code:
* start the RE WB Manager
CALL METHOD cl_reca_wb_manager=>start
  EXPORTING
    io_wb_request     = lo_request
    if_show_navigator = abap_true
  EXCEPTIONS
    error             = 1
    OTHERS            = 2.
IF sy-subrc <> 0.
  mac_symsg_send.
ENDIF.

_________________
"I have a dream"(c)Martin Luther King, Jr.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать объект RE-FX без сохранения (чтобы пользователь сам сохранил)
СообщениеДобавлено: Пн, мар 05 2012, 12:33 
Менеджер
Менеджер

Зарегистрирован:
Пн, июн 30 2008, 17:16
Сообщения: 690
спасибо, Вы меня натолкнули на мысль указав вот этот параметр - if_auth_check = abap_true. У меня до этого без него происходило исключение.
В итоге сделал так:
создаём объект аренды:
call method cf_rebd_rental_object=>create
exporting
id_bukrs = 'XXXX'
id_swenr = 'X'
id_smenr = ''
id_rotype = 'X'
id_snunr = 'XX'
if_auth_check = abap_true
receiving
ro_instance = rental_object.
заполняем его всякими атрибутами
потом создаём вот такой объект:
data: me type ref to cl_reca_bdt_appl_tool.
create object me.
и показываем окно редактирования объекта:
call function 'RECA_BDT_APPL_SHOW_OBJECT'
exporting
io_bdt_appl_tool = me
io_busobj = rental_object
exceptions
error = 1
others = 2.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать объект RE-FX без сохранения (чтобы пользователь сам сохранил)
СообщениеДобавлено: Вс, мар 11 2012, 16:31 
Менеджер
Менеджер

Зарегистрирован:
Пн, июн 30 2008, 17:16
Сообщения: 690
приходится возвращаться к этой теме. Донёс до продуктива разработку и всплыла аномалия.
на вызове метода call method cf_rebd_rental_object=>create
генерируется ошибка о недостатке полномочий на объекты и операции. При этом в роли пользователя всё нужные объекты и операции есть.
попробовал потрассировать, но что-то кисло.
можете чего-нибудь посоветовать или объяснить как работает параметр if_auth_check, если вызвать метод cf_rebd_rental_object=>create c if_auth_check = false, то он отрабатывает корректо но позже возникает ошибка на вызове call function 'RECA_BDT_APPL_SHOW_OBJECT', судя по трассировке, связанная опять в авторизацией.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как создать объект RE-FX без сохранения (чтобы пользователь сам сохранил)
СообщениеДобавлено: Вт, мар 13 2012, 06:59 
Менеджер
Менеджер

Зарегистрирован:
Пн, июн 30 2008, 17:16
Сообщения: 690
путём трассировки выяснил, что проблема была в том, что я указывал хозяйственную единицу при вызове cf_rebd_rental_object=>create без лидирующих нулей и поэтому проверка полномочий не проходила.


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

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


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

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


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

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