Текущее время: Пн, июн 23 2025, 23:19

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: RCM(scase) badi
СообщениеДобавлено: Пт, ноя 15 2013, 19:49 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, мар 24 2010, 08:46
Сообщения: 56
Пол: Мужской
Народ, подскажите, какой можно воспользоваться бадихой для CASEа? Должна отрабатывать при сохранении. И как ее корректно подключить?
Если с примером использования - отдельное спасибо.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RCM(scase) badi
СообщениеДобавлено: Сб, ноя 16 2013, 15:34 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, окт 22 2009, 12:41
Сообщения: 473
Не про это ли речь?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RCM(scase) badi
СообщениеДобавлено: Вс, ноя 17 2013, 13:04 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, мар 24 2010, 08:46
Сообщения: 56
Пол: Мужской
Не совсем то. Эту тему я читал.
Эти бадишки работают в другое время. Мне нужно что-то типа BEFORE_SAVE.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RCM(scase) badi
СообщениеДобавлено: Пн, ноя 18 2013, 13:15 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Cyrick написал:
Не совсем то. Эту тему я читал.
Эти бадишки работают в другое время. Мне нужно что-то типа BEFORE_SAVE.

SCMG_CHNG_BFR_STR_C отработает перед сохранением.

_________________
Silence v.2.0


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RCM(scase) badi
СообщениеДобавлено: Пн, ноя 18 2013, 13:54 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, мар 24 2010, 08:46
Сообщения: 56
Пол: Мужской
Спасибо.
А есть пример использования?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RCM(scase) badi
СообщениеДобавлено: Пн, ноя 18 2013, 14:02 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Cyrick написал:
Спасибо.
А есть пример использования?

SE18 - имя бади, смотрите интерфейс, где используется - примеры внедряющих классов :)

_________________
Silence v.2.0


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RCM(scase) badi
СообщениеДобавлено: Пн, ноя 18 2013, 14:12 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, мар 24 2010, 08:46
Сообщения: 56
Пол: Мужской
Эх если бы все было так просто :)
До этого я додумался :)
Но в моей системе эта бадиха не внедрена.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RCM(scase) badi
СообщениеДобавлено: Пн, ноя 18 2013, 14:38 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Cyrick написал:
Эх если бы все было так просто :)
До этого я додумался :)
Но в моей системе эта бадиха не внедрена.

Code:
METHOD if_ex_scmg_chng_bfr_str_c~change.

  DATA: l_id        TYPE  srmadid,
        l_value      TYPE string,
        l_zvalue     TYPE string,
        l_zid        TYPE  srmadid,
        l_stat_orderno  TYPE        scmgstatusonr.

  DEFINE get_at.
    l_zid = &1.
    clear l_zvalue.
    try.
        call method im_case->get_single_attribute_value
          exporting
            im_srmadid     = l_zid
          receiving
            re_value       = l_zvalue.
        &2 = l_zvalue.
      catch cx_scmg_case_attribute .
      catch cx_srm_framework .
    endtry.
  END-OF-DEFINITION.

  DEFINE set_at.
    l_zid = &1.
    l_zvalue = &2.
    try.
        call method im_case->set_single_attribute_value
          exporting
            im_value   = l_zvalue
            im_srmadid = l_zid.
      catch cx_scmg_case_attribute .
      catch cx_srm_framework .
    endtry.
  END-OF-DEFINITION.

  CASE flt_val.
    WHEN 'Z_PR'.

*******  получить данные
      get_at 'STAT_ORDERNO'  l_stat_orderno.
      " прежний статус
      l_stat_orderno_old = im_case->get_single_old_attr_value( if_scmg_case_read=>status_order_no ).

*******     заполнение атрибутов
      l_value = 'Это будет заголовок'. 
      set_at 'CASE_TITLE'  l_value.

  ENDCASE.

ENDMETHOD.

_________________
Silence v.2.0


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RCM(scase) badi
СообщениеДобавлено: Пн, ноя 18 2013, 16:58 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, мар 24 2010, 08:46
Сообщения: 56
Пол: Мужской
Спасибо :)
А есть способ узнать, мы только что создали случай или просто меняем?

И самый наболевший для меня вопрос. Как работать с соединенными объектами?
Задача достаточно у меня тривиальная. В зависимости от вида случая создавать тот или иной объект и присоединять к только что созданному случаю. Или изменять в соответствии с изменением случая.

Хотя бы в каком направлении копать нужно?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RCM(scase) badi
СообщениеДобавлено: Вт, ноя 19 2013, 08:44 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
Cyrick написал:
Спасибо :)
А есть способ узнать, мы только что создали случай или просто меняем?

И самый наболевший для меня вопрос. Как работать с соединенными объектами?
Задача достаточно у меня тривиальная. В зависимости от вида случая создавать тот или иной объект и присоединять к только что созданному случаю. Или изменять в соответствии с изменением случая.

Хотя бы в каком направлении копать нужно?


Наберите в se18 scmg* и посмотрите, какие есть бади. Почитайте дркументацию, помогает :)

например, есть scmg_initialise_c - в момент создания предзаполнение атрибутовет

но вам наверное нужно будет при сохранении создавать свой объект - тогда лучше scmg_store_s, срабатывает после сохранения. смотрите там объект im_case, у него есть таблица MISC_OBJECTS, при сохранении нового case в ней у меня есть запись с ключом FIN_INFORM_ABOUT_NEW_CASE
Вообще в отладчике поковыряйтесь в объекте im_case, посмотрите, до чего в нем можно добраться, до того же рекорда через таблицу подкомпонентов.

еще для работы с рекордом посмотрите группу функций SRM_BAPI_RECORD

на самом деле в какой момент лучше создавать и прикреплять объект я вам не скажу, это зависит от вашей концепции работы с case

_________________
Silence v.2.0


Последний раз редактировалось Silence1 Вт, ноя 19 2013, 09:01, всего редактировалось 1 раз.

Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RCM(scase) badi
СообщениеДобавлено: Вт, ноя 19 2013, 08:51 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, мар 24 2010, 08:46
Сообщения: 56
Пол: Мужской
Нет, тут все верно. Самое корректное решение - SCMG_CHNG_BFR_STR_C. Так как сам случай изменен, но не сохранен. Вэтот момент мне нужно создать свой объект. Судя по САПовской документации, комит будет позже. И значит, либо у меня сохранится все, либо ничего(если при создании дополнительного объекта произойдут ошибки).
Вопрос встает в том, как с помощью этой бадишки создать соединение между моим объектом и случаем. Как это делается в SCASE я знаю. Но как это реализовать на АБАПе пока не дошел :(
Поэтому и спрашиваю совета(похоже у единственного человека, который внедрял RCM :) ).


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RCM(scase) badi
СообщениеДобавлено: Вт, ноя 19 2013, 09:08 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
сейчас поищу что-нибудь подходящее в своих кодах

_________________
Silence v.2.0


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RCM(scase) badi  Тема решена
СообщениеДобавлено: Вт, ноя 19 2013, 09:36 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
нашла, посмотрите - в SCMG_VLDT_BFR_STR_C я проверяла наличие прикрепленного объекта таким образом:
Code:
DATA: re_values TYPE srm_list_attribute_value,
          lcl_win TYPE REF TO cl_scmg_case_visualization_win,
          ls_case_miscobject TYPE scmg_case_miscobject,
          ls_sub TYPE scmg_case_subcomponents,
          lcl_sub TYPE REF TO cl_scmg_subcomponent_record,
          re_api_object TYPE REF TO object,
          re_api TYPE REF TO cl_scmg_rec_case_be,
          lcl_element TYPE REF TO cl_srm_sp_record_element,
          lt_element_tab TYPE srm_rec_elem_tab,
          lif_element TYPE REF TO if_srm_sp_record_element,
          l_type TYPE string,
          lt_attribute_tab TYPE srm_xml_attr_tab,
          ls_attr_el TYPE srmxmlar,
          re_is_opened TYPE srmboolean,
          ls_iscopy(1).

    READ TABLE im_case->if_scmg_case_read~misc_objects INTO ls_case_miscobject INDEX 1.
    CHECK sy-subrc = 0.
    lcl_win ?= ls_case_miscobject-object.
    CHECK lcl_win IS NOT INITIAL.

    READ TABLE lcl_win->g_tab_subcomponents INTO ls_sub WITH KEY fcode = 'SUBCOMPONENT_RECORD'.
    CHECK sy-subrc = 0.
    lcl_sub ?= ls_sub-class.
    CHECK lcl_sub IS NOT INITIAL.

    CALL METHOD lcl_sub->if_scmg_subcomponent_backend~get_api
      RECEIVING
        re_api_object = re_api_object.

    re_api ?= re_api_object.
    CHECK  re_api IS NOT INITIAL.

    " record открыт, если на экране выбрана эта подкомпонента
    CALL METHOD re_api->if_srm_sp_record_expert~is_record_opened
      RECEIVING
        re_is_opened = re_is_opened.
    IF re_is_opened = if_srm=>false.
      " надо открыть
      TRY.
          CALL METHOD re_api->if_srm_sp_record~open
            EXPORTING
              for_update   = if_srm=>false
              do_not_parse = if_srm=>false
              write_log    = if_srm=>false.

        CATCH cx_srm_sp_record .
        CATCH cx_srm_gsp_back .
      ENDTRY.

    ENDIF.

    l_type = 'INSTANCE'.
    TRY.
        CALL METHOD re_api->if_srm_sp_record~element_get_by_type
          EXPORTING
            type        = l_type
          RECEIVING
            element_tab = lt_element_tab.

        LOOP AT lt_element_tab INTO lif_element.
          lcl_element ?= lif_element.
          TRY.
              CALL METHOD lcl_element->if_srm_sp_record_element~attributes_get
                RECEIVING
                  attribute_tab              = lt_attribute_tab.
              READ TABLE lt_attribute_tab INTO ls_attr_el WITH KEY name = 'ANCHOR' val = 'ZDOC1'.
              IF sy-subrc = 0.
                ls_iscopy = 'X'.
                EXIT.
              ENDIF.

            CATCH cx_srm_sp_record_element .
          ENDTRY.
        ENDLOOP.

      CATCH cx_srm_sp_record .
    ENDTRY.

    IF re_is_opened = if_srm=>false.
      " надо закрыть
      TRY.
          CALL METHOD re_api->if_srm_sp_record~close.

        CATCH cx_srm_sp_record .
      ENDTRY.
    ENDIF.

_________________
Silence v.2.0


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RCM(scase) badi
СообщениеДобавлено: Вт, ноя 19 2013, 10:03 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Ср, дек 17 2008, 19:38
Сообщения: 434
Откуда: Санкт-Петербург
Пол: Женский
забыла предупредить - после бади scmg_chng_bfr_str_c будут проверки перед сохранением. Если они не пройдут, case не сохранится, пользователю выйдет сообщение и он может в этот момент вообще отказаться от сохранения case. А вы уже в scmg_chng_bfr_str_c создали объект.

я бы повесила это во внедрении бади SCMG_VLDT_BFR_STR_C, после всех собственных проверок - оно вызовется после системных проверок. Хотя в документации и не рекомендуют там делать изменения.

_________________
Silence v.2.0


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: RCM(scase) badi
СообщениеДобавлено: Вт, ноя 19 2013, 10:11 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, мар 24 2010, 08:46
Сообщения: 56
Пол: Мужской
Так все правильно. Я создам объект, а если пользователь откажется, то по идее и мой объект не создастся. Ибо комита нет. Вроде должно быть все правильно.
За пример огромное спасибо :)
Правда мне придется проворачивать обратную процедуру. Но тут уже более менее понятно, куда копать :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.

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


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

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


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

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