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

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


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

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


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

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