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

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


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

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


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

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