SAPфорум.RU https://sapboard.ru/forum/ |
|
Еще вопрос по тр.ME2*N после расширения с помощью MM06E005 https://sapboard.ru/forum/viewtopic.php?f=13&t=95783 |
Страница 1 из 1 |
Автор: | Kahaber [ Чт, ноя 23 2017, 13:09 ] |
Заголовок сообщения: | Еще вопрос по тр.ME2*N после расширения с помощью MM06E005 |
Здравствуйте, коллеги! Возник еще такой вопрос по расширенным полям в тр.ME2*N. Когда создается новый заказ (тр. ME21N), то, скажем, после ввода в поле Поставщик, нас кидает по закладкам заголовка с обязательными полями для ввода данных. При этом соответственное сообщение об ошибке (об обязательном заполнении поля) появляется в табличке с сообщениями (красный светофорчик). Возможно ли сделать так, чтобы наша закладка Данные клиента с добавленным полем также попадала в этот алгоритм ?? Такую проверку перед сохранением или для проверки документа реализовал в экзите EXIT_SAPMM06E_012. Но получается, что пользователь может узнать об обязательном вводе в наше поле только после ввода всех позиций и попытке сохранения или проверки. А это неудобно. Очень важно, чтобы проверка срабатывала раньше. До того как пользователь начнет вводить позиции. И еще (на всякий). Поле является обязательным только для отдельных видов заказа. Спасибо. |
Автор: | Besa [ Чт, ноя 23 2017, 14:19 ] |
Заголовок сообщения: | Re: Еще вопрос по тр.ME2*N после расширения с помощью MM06E005 |
Kahaber написал(а): Здравствуйте, коллеги! Возник еще такой вопрос по расширенным полям в тр.ME2*N. Когда создается новый заказ (тр. ME21N), то, скажем, после ввода в поле Поставщик, нас кидает по закладкам заголовка с обязательными полями для ввода данных. При этом соответственное сообщение об ошибке (об обязательном заполнении поля) появляется в табличке с сообщениями (красный светофорчик). Возможно ли сделать так, чтобы наша закладка Данные клиента с добавленным полем также попадала в этот алгоритм ?? Такую проверку перед сохранением или для проверки документа реализовал в экзите EXIT_SAPMM06E_012. Но получается, что пользователь может узнать об обязательном вводе в наше поле только после ввода всех позиций и попытке сохранения или проверки. А это неудобно. Очень важно, чтобы проверка срабатывала раньше. До того как пользователь начнет вводить позиции. И еще (на всякий). Поле является обязательным только для отдельных видов заказа. Спасибо. Честно скажу я деталей уже не помню, давно разбирался. Почитайте это, поэксперементируйте. http://www.sapboard.ru/forum/viewtopic.php?p=370413 http://sapboard.ru/forum/viewtopic.php?f=13&t=77418 http://sapboard.ru/forum/viewtopic.php?f=13&t=67965 |
Автор: | Kahaber [ Пт, ноя 24 2017, 16:24 ] |
Заголовок сообщения: | Re: Еще вопрос по тр.ME2*N после расширения с помощью MM06E005 |
Спасибо за ссылки. Почитал, продвинулся. Наткнулся и не могу забороть такую ошибку: По ходу заполнения Заголовка заказа срабатывает проверка на заполнение Добавленного поля в экзите EXIT_SAPMM06E_008 - появляется красный сфетофор. Заполняю поле, энтер - удаляю нужное сообщение, сфетофор пропадает, но когда ОПЯТЬ очищаю поле, проверка отрабатывает, сообщение создается, НО сфетофор не появляется. Удаление сообщения делаю, как в ссылке http://sapboard.ru/forum/viewtopic.php?f=13&t=18975&start=0 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. Пробовал по аналогии использовать метод CALL METHOD l_msg_handler->ADD... чтобы добавть сообщение, но ничего не происходит. НО если нажать кнопку проверит весь докумет, то после этого проверки срабатывают. Видимо чтото там обновляется или актуализируется. Может кто в курсе, чего еще надо? |
Автор: | Besa [ Пт, ноя 24 2017, 17:48 ] |
Заголовок сообщения: | Re: Еще вопрос по тр.ME2*N после расширения с помощью MM06E005 |
А где (экзит, бади) проверка стоит и каким образом сообщение укладываете в лог? Сделайте так, проверку в бади (бади *process*po*cust* в метод *proccess*head*), укладываете сообщение через макросы в инклюде MM_MESSAGES_MAC там есть mmpur_message_forced И потом еще вызвать в бади im_header->invalidate( ) это установит флаг что заголовок содержит ошибки. |
Автор: | Kahaber [ Вт, ноя 28 2017, 10:33 ] |
Заголовок сообщения: | Re: Еще вопрос по тр.ME2*N после расширения с помощью MM06E005 |
Бади не подходит, не срабатывает при нажатии энтер в нашем поле. В экзите EXIT_SAPMM06E_008 все отрабатывает нормально. Сообщение создается так: Code: CALL METHOD cl_message_mm=>create EXPORTING im_msgid = 'ZME21N_F' im_msgty = 'E' im_msgno = lv_msgno im_msgv1 = lv_message im_msgv2 = lv_message1 im_msgv3 = lv_message2 im_msgv4 = lv_message3 im_force_collect = 'X' EXCEPTIONS failure = 01 dialog = 02. * это для просмотра таблицы сообщений * DATA: lt_event_list TYPE mmpur_event_list. CALL METHOD l_msg_handler->getlist IMPORTING ex_events = lt_event_list[]. НО, проблема в том, что сообщение почемуто создается с пустым полем lt_event_list-BUSINESS_OBJ. И, получается, что сообщения с пустым этим полем в логе не отражаются. Может кто в курсе, как заполнить данное поле? |
Автор: | Bimit [ Вт, ноя 28 2017, 10:49 ] |
Заголовок сообщения: | Re: Еще вопрос по тр.ME2*N после расширения с помощью MM06E005 |
Посмотрите группу функций /SAPMP/MM_CE инклюд MM_MESSAGES_MAC |
Автор: | Kahaber [ Вт, ноя 28 2017, 12:14 ] |
Заголовок сообщения: | Re: Еще вопрос по тр.ME2*N после расширения с помощью MM06E005 |
Огромное спасибо, Bimit и Besa. ![]() Вроди все получилось. Остался единственный момент. Когда заполняется Заголовок заказа, то после сообщения об заполнении обязательных полей, нас перекидывает на закладку, где находится поле. По нашему полю сообщение есть, но перекидывает в какуюто левую закладку. Можно ли сделать, чтобы перекидывало в нашу добавленую закладку Данные клиента?? И вообще, возможно ли сделать это с экзита? |
Автор: | Besa [ Вт, ноя 28 2017, 22:06 ] |
Заголовок сообщения: | Re: Еще вопрос по тр.ME2*N после расширения с помощью MM06E005 |
Kahaber написал(а): Огромное спасибо, Bimit и Besa. ![]() Вроди все получилось. Остался единственный момент. Когда заполняется Заголовок заказа, то после сообщения об заполнении обязательных полей, нас перекидывает на закладку, где находится поле. По нашему полю сообщение есть, но перекидывает в какуюто левую закладку. Можно ли сделать, чтобы перекидывало в нашу добавленую закладку Данные клиента?? И вообще, возможно ли сделать это с экзита? Это может быть не так просто для Z полей. Для стандартных без проблем. Надо пробовать в общем. Подключаете вот это TYPE-POOLS: mmpur, mmmfd. INCLUDE mm_messages_mac. Смотрите вот это ГФ MEMFS (там еще и бади есть) Смотрите вот эти макросы в связке mmpur_business_obj_id (1 для заголовка, 2 для позиций, 3 для контировок по-моему так) + этот макрос mmpur_metafield (ИДшником задается поле для навигации см mmmfd + ФМы) ну и + mmpur_message_forced уже знаете Это я примерно описал как будет работать навигация для стандартного поля из своих старых заметок. Все это попробовать прикрутить для ZZ полей. Кстати они же у Вас в ekko через append structure ? |
Автор: | Kahaber [ Чт, ноя 30 2017, 12:51 ] |
Заголовок сообщения: | Re: Еще вопрос по тр.ME2*N после расширения с помощью MM06E005 |
Besa написал: mmpur_business_obj_id (1 для заголовка, 2 для позиций, 3 для контировок по-моему так) по поводу параметра, котрый подается на вход макросу mmpur_business_obj_id. В тр. ME21N и ME22N для сообщений заголовка да, он равен 1. НО если зайти в правку из тр ME23N, то 1 не подходит = дамп. Как получить правильное значение этого параметра? Ну или как получить значение gl_handle, чтобы самому установить нужный business_obj -- Code: DATA: gl_handle TYPE REF TO cl_handle_mm.
... CALL METHOD cl_message_mm=>set_current_business_obj EXPORTING im_business_obj = gl_handle. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |