Текущее время: Сб, апр 27 2024, 01:50

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: IF_EX_ME_PROCESS_PO_CUST~PROCESS_ITEM - удалить сообщение из списка
СообщениеДобавлено: Ср, окт 04 2006, 14:32 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, ноя 25 2005, 15:06
Сообщения: 143
Суть в проблемы в следующем. Необходмио при модификации позиции заказа на поставку выполнить некоторую проверку.
В методе PROCESS_ITEM сравниваю результаты CALL METHOD im_item->get_data и CALL METHOD im_item->get_previous_data , и при необходимости выдаю сообщение типа E. При этом данные возвращаю в первоначальный вид (до редактирования).

Так вот, даже после того как вернулись "правильные" данные, красный светофор продолжает гореть напротив позиции. И если попытаться сохранить заказ, то дает это сделать, так как ошибки уже нет.

Хотелось бы каким-то образом принудительно удалить это сообщение из списка. Как это можно осуществить?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, окт 04 2006, 16:27 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
Сделать как-нибудь так
Code:
  DATA:
    lrc_msg_handler TYPE REF TO cl_message_handler_mm
  .

  CALL METHOD cl_message_handler_mm=>get_handler
    IMPORTING
      ex_handler = lrc_msg_handler.



И дальше можно попробовать поиграть методами класса cl_message_handler_mm. Удалять я, правда, не пробовал.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 05 2006, 10:05 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, ноя 25 2005, 15:06
Сообщения: 143
Сижу ковыряюсь. Конструкция типа такой, работает замечательно:
Code:
DATA: l_msg_handler TYPE REF TO cl_message_handler_mm.

          CALL METHOD cl_message_handler_mm=>get_handler
             IMPORTING
                ex_handler = l_msg_handler.

         CALL METHOD l_msg_handler->remove_all( ).
         CALL METHOD l_msg_handler->cleanup( ).


Ну понятно, что она удаляет все сообщения. Теперь хочу сделать выборочное удаление. Пишу:
Code:
DATA: l_msg_handler TYPE REF TO cl_message_handler_mm,
           l_event TYPE REF TO cl_event_mm,
           lt_event_list TYPE mmpur_event_list,
           wa_lt_event_list TYPE MMPUR_EVENT_ENTRY.


        CALL METHOD cl_message_handler_mm=>get_handler
          IMPORTING
            ex_handler = l_msg_handler.

       " получаю список сообщений
        CALL METHOD l_msg_handler->getlist
           IMPORTING
               ex_events                = lt_event_list[].

      loop at lt_event_list into wa_lt_event_list.

         " проверяю на мою сигнатуру
         if wa_lt_event_list-signature = 'ZME20610'.

             " удаляю         
             CALL METHOD l_msg_handler->REMOVE
               exporting
                 im_event_obj = wa_lt_event_list-event_obj.

         endif.

       endloop.


Выпадает в дамп в методе REMOVE на строке INSERT. Как я понял,пытается сохранить сообщение перед удаленнием.
Code:
DATA: l_event     LIKE LINE OF events.
  LOOP AT events INTO l_event WHERE event_obj = im_event_obj.
    IF configuration-keep_deleted_events EQ mmpur_yes.
       INSERT l_event INTO deleted_events[].
    ENDIF.
    DELETE events.
  ENDLOOP.
  DELETE current_events WHERE event_obj = im_event_obj.


Дамп следующего содержания:

You attempted to change, delete or create a line in the
internal table "{O:27*\CLASS=CL_MESSAGE_HANDLER_MM}\DATA=???", but no valid cursor exists for the table.

Possible reasons:
1. The relevent ABAP/4 statement does not include the addition
"...INDEX...", although the statement is not
inside a "LOOP...ENDLOOP" loop processing this table.
2. The relevent ABAP/4 statement was called from within a
"LOOP...ENDLOOP" loop after a DELETE
"{O:27*\CLASS=CL_MESSAGE_HANDLER_MM}\DATA=???".
.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 05 2006, 11:53 
Гуру-эксперт
Гуру-эксперт

Зарегистрирован:
Вт, авг 24 2004, 07:19
Сообщения: 3952
Откуда: ECC 6.0, South Kazakhstan
посмотри инклуд MM_MESSAGES_MAC, в нем приведены макросы которые в том числе и удаляют сообщения:

mmpur_remove_messages_by_id
mmpur_remove_msg_by_context


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, окт 05 2006, 12:09 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пт, ноя 25 2005, 15:06
Сообщения: 143
Решил проблему отключением опции keep_deleted_events так:
Code:
    CALL METHOD l_msg_handler->get_configuration
      RECEIVING
        re_configuration = re_conf.

    re_conf-keep_deleted_events = space.

    CALL METHOD l_msg_handler->set_configuration
      EXPORTING
        im_configuration = re_conf.


Вроде все работает!
Всем спасибо за участие :D


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, апр 28 2008, 10:58 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Вт, май 17 2005, 13:35
Сообщения: 4842
Откуда: Москва
Пол: Мужской
Всем привет.
Я воспользовался кодом от creo, сообщение действительно из лога благополучно удаляется (написал в методе Check бапи ME_PROCESS_PO_CUST)


Но вот беда - если это сообщение было в логе единственным сообщением об ошибке, то хоть оно и исчезает из списка сообщений, система по-прежнему не дает сохранить этот заказ.
Есть какие-нибудь идеи, как побороть проблему?

_________________
Удача - результат нашего желания (© А. Нортон)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: IF_EX_ME_PROCESS_PO_CUST~PROCESS_ITEM - удалить сообщение из списка
СообщениеДобавлено: Чт, ноя 25 2010, 15:44 
Начинающий
Начинающий

Зарегистрирован:
Пн, янв 28 2008, 12:04
Сообщения: 24
Откуда: Санкт-Петербург
У меня такая же проблема как и у LKU. Есть какое-то решение? Заказ не сохраняется... Остается какое-то общее сообщение об ошибке, хотя ошибок уже нет.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: IF_EX_ME_PROCESS_PO_CUST~PROCESS_ITEM - удалить сообщение из списка
СообщениеДобавлено: Пт, ноя 26 2010, 05:39 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
NastyaL написал(а):
У меня такая же проблема как и у LKU. Есть какое-то решение? Заказ не сохраняется... Остается какое-то общее сообщение об ошибке, хотя ошибок уже нет.

Попробуйте вручную очистить лог этого заказа http://sapboard.ru/forum/viewtopic.php?p=393229#p393229

И еще, на всякий случай скажу, у меня как то была проблема, сообщения в логе заказа как бы "залипли" что ли, сохранить заказ не давало, нажал кнопку -проверить- лог перегенирился и стало норм.


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

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


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

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


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

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