Текущее время: Пн, июл 28 2025, 02:06

Часовой пояс: 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
Сообщения: 4871
Откуда: Москва
Пол: Мужской
Всем привет.
Я воспользовался кодом от 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 часа


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

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


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

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