Текущее время: Пн, авг 04 2025, 21:57

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


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


Вопросы по ППМ (MRP) - сюда.
Вопросы по классификации - сюда.
Вопросы по входящим поставкам - сюда.



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Создание заказа на поставку только со ссылкой к заявке
СообщениеДобавлено: Вт, янв 15 2008, 09:31 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Пн, сен 20 2004, 07:15
Сообщения: 179
Откуда: Astana
Добрый день всем!!! Как запретить создание "заказа на поставку" без ссылки на заявку


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, янв 15 2008, 09:34 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, мар 27 2007, 12:54
Сообщения: 296
Пол: Мужской
Сделайте поле Заявка полем, обязательным к вводу


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, янв 15 2008, 09:55 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Чт, май 19 2005, 12:34
Сообщения: 1941
Откуда: НК
Пол: Мужской
если заказ создаешь через ME21N, выходом будет использование user-exit'a или BAdI (например ME_PROCESS_PO_CUST, метод PROCESS_ITEM).

для более детального описания проблемы используй поиск
и ноты почитай

_________________
Eritis sicut Deus, scientes bonum et malum...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, янв 15 2008, 12:32 
Старший специалист
Старший специалист

Зарегистрирован:
Чт, авг 02 2007, 14:26
Сообщения: 443
Откуда: S/4 HANA
Пол: Мужской
Если нужно для какого-то пользователя сделать так, чтобы он не смог сделать заказ без ссылки на заявку нужно для этого пользователя поставить параметр EFB = 01 (без ссылки нельзя создать заказ) - это у нас (параметр ведется в транзакции omet), а потом напиши следующий код в badi me_process_po_cust метод process_item.

METHOD if_ex_me_process_po_cust~process_item.
TYPES wa_usr05 TYPE TABLE OF usr05. (таблица, где ведется этот параметр для пользователя)

DATA: ls_mepoitem TYPE mepoitem
,it_usr05 TYPE wa_usr05
,str LIKE line of it_usr05.


SELECT * FROM usr05
into CORRESPONDING FIELDS OF table it_usr05
WHERE ( parid = 'EFB' ) AND ( parva = '01' ) AND ( bname = sy-uname ).

IF sy-subrc = 0.
LOOP AT it_usr05 INTO str.
ls_mepoitem = im_item->get_data( ).
IF ls_mepoitem-banfn IS INITIAL. "твоя проверка
MESSAGE e001(zxxx).
ENDIF.
endloop.
ENDIF.


ENDMETHOD.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание заказа на поставку только со ссылкой к заявке
СообщениеДобавлено: Ср, апр 28 2010, 12:00 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, апр 10 2006, 13:31
Сообщения: 51
Всем доброго дня.
Эх, люблю я поднимать старые темы... :-)
Итак задача поставлена по сабжу.
Предварительно накопал:
1 - http://sapboard.ru/forum/viewtopic.php?f=13&t=2171
2 - http://sapboard.ru/forum/viewtopic.php?f=1&t=28046
3 - система erp 2005, нашел enhancement в LMEPOF1V для FORM mepo_item_main_check_1.
Дополнительные требования: тр. ME21N и ME21N, привязка к виду заказа, желательно отображение в журнале ошибок.
Релизовано в BADI ME_PROCESS_PO_CUST~PROCESS_ITEM:
Code:
METHOD if_ex_me_process_po_cust~process_item.
  DATA: ls_mepoitem TYPE mepoitem,
        ls_mepoheader TYPE mepoheader,
        ls_header TYPE REF TO if_purchase_order_mm.

  ls_header = im_item->get_header( ).
* Данные заголовка Заказа
  ls_mepoheader = ls_header->get_data( ).
* Данные позиции Заказа
  ls_mepoitem = im_item->get_data( ).
* Проверка на заполнение Заявки в позиции при ведении данных.
  IF ls_mepoheader-bsart = 'ZNNN'
    AND ( sy-tcode = 'ME21N' OR sy-tcode = 'ME21N' )
    AND ls_mepoitem-banfn = ''.

* 'Введите заявку поз. №' ls_mepoitem-ebelp mmsg TYPE 'E'.
    MESSAGE  e000(zmm_badi_mmsg) WITH ls_mepoitem-ebelp.
  ENDIF.
ENDMETHOD.

В процессе реализации возникли вопросы:
Вопрос1: где и как дополнить журнал ошибок, при сохранении заказа, для запрета сохранения оного?
Вопрос2: В ME22N по ентеру вышеуказанный код не отрабатывает, why?
Вопрос3: Чем чревата проверка в mepo_item_main_check_1?

_________________
Даже если тебя съели, у тебя есть два выхода...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание заказа на поставку только со ссылкой к заявке
СообщениеДобавлено: Ср, апр 28 2010, 14:53 
Менеджер
Менеджер

Зарегистрирован:
Вт, авг 17 2004, 10:25
Сообщения: 627
SVT написал(а):
В процессе реализации возникли вопросы:
Вопрос1: где и как дополнить журнал ошибок, при сохранении заказа, для запрета сохранения оного?
Вопрос2: В ME22N по ентеру вышеуказанный код не отрабатывает, why?
Вопрос3: Чем чревата проверка в mepo_item_main_check_1?

1. Вместо MESSAGE используйте:
Code:
  IF im_item->is_valid( ) EQ mmpur_yes.
    mmpur_message_forced 'E' 'ZMM' '001' 'Здесь'
                                         'текст'
                                         'сообщения.'
                                         ''.
    CALL METHOD im_item->invalidate( ).
  ENDIF.

Зачем привязка к ME21N/ME22N?
2. Страно... Только что проверил, отрабатывает.
3. Зачем, если есть BADI?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание заказа на поставку только со ссылкой к заявке
СообщениеДобавлено: Ср, апр 28 2010, 16:06 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, апр 10 2006, 13:31
Сообщения: 51
DimKu написал(а):
1. Вместо MESSAGE используйте:
Code:
  IF im_item->is_valid( ) EQ mmpur_yes.
    mmpur_message_forced 'E' 'ZMM' '001' 'Здесь'
                                         'текст'
                                         'сообщения.'
                                         ''.
    CALL METHOD im_item->invalidate( ).
  ENDIF.

Я так понимаю предварительно нужно объявить INCLUDE mm_messages_mac.
Далее "IF im_item->is_valid( ) EQ mmpur_yes." - проверка на отсутствие ошибок в заказе?
А после использовать макрос для добавления сообщения в журнал
и блокировать возможность сохранить заказ?
С подобными "заморочками" сталкиваюсь впервые, поправьте если что не так...

DimKu написал(а):
Зачем привязка к ME21N/ME22N?

А вдруг где-то автоматическое создание заказов используется или будет...
DimKu написал(а):
2. Страно... Только что проверил, отрабатывает.

Тестовая система без заказов, создавал сам может чего напутал при редактировании.
Повторю тест отпишусь.

DimKu написал(а):
3. Зачем, если есть BADI?

Как альтернатива. Отрабатывает регулярно по нажатию - проверял. Ну и новый функционал "заюзать" всегда интересно. :)

_________________
Даже если тебя съели, у тебя есть два выхода...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание заказа на поставку только со ссылкой к заявке
СообщениеДобавлено: Чт, апр 29 2010, 09:14 
Менеджер
Менеджер

Зарегистрирован:
Вт, авг 17 2004, 10:25
Сообщения: 627
SVT написал(а):
Я так понимаю предварительно нужно объявить INCLUDE mm_messages_mac.
Далее "IF im_item->is_valid( ) EQ mmpur_yes." - проверка на отсутствие ошибок в заказе?
А после использовать макрос для добавления сообщения в журнал
и блокировать возможность сохранить заказ?
С подобными "заморочками" сталкиваюсь впервые, поправьте если что не так...

Именно так.
Можно ещё сделать позиционирование курсора на поле, например "Номер заявки":
Code:
TYPE-POOLS: mmmfd.
INCLUDE mm_messages_mac. "useful macros for message handling

  IF im_item->is_valid( ) EQ mmpur_yes.
    mmmfd_preq_no.
    mmpur_message_forced 'E' 'ZMM' '001' 'Введите заявку.'
                                         ''
                                         ''
                                         ''.
    CALL METHOD im_item->invalidate( ).
  ENDIF.

SVT написал(а):
А вдруг где-то автоматическое создание заказов используется или будет...

Тогда надо добавить и ME23N, т.к. там тоже можно изменять и создавать ЗнП. Ну и про Z* транзакции не забыть, если есть копии с вариантами. Но на мой взгляд, правильнее завязаться на тип заказа. Т.е. для одного типа заявки обязательны, для другого нет. В таком случае можно полномочиями рулить, кто может создавать ЗнП без заявок, а кто нет. И соответственно в коде проверять обязательность поля по типу ЗнП (табл. T162, поле FAUS1, третий символ).
SVT написал(а):
Как альтернатива. Отрабатывает регулярно по нажатию - проверял. Ну и новый функционал "заюзать" всегда интересно. :)

Не зачем усложнять себе жизнь. Есть более чем стандартный инструмент для решения данной задачи.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание заказа на поставку только со ссылкой к заявке
СообщениеДобавлено: Чт, апр 29 2010, 11:24 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, апр 10 2006, 13:31
Сообщения: 51
DimKu написал(а):
Можно ещё сделать позиционирование курсора на поле, например "Номер заявки":
Code:
TYPE-POOLS: mmmfd.
INCLUDE mm_messages_mac. "useful macros for message handling

  IF im_item->is_valid( ) EQ mmpur_yes.
    mmmfd_preq_no.
    mmpur_message_forced 'E' 'ZMM' '001' 'Введите заявку.'
                                         ''
                                         ''
                                         ''.
    CALL METHOD im_item->invalidate( ).
  ENDIF.

Не совсем понятно как использовать mmmfd_preq_no.?

_________________
Даже если тебя съели, у тебя есть два выхода...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание заказа на поставку только со ссылкой к заявке
СообщениеДобавлено: Чт, апр 29 2010, 11:40 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
SVT написал(а):
DimKu написал(а):
Можно ещё сделать позиционирование курсора на поле, например "Номер заявки":
Code:
TYPE-POOLS: mmmfd.
INCLUDE mm_messages_mac. "useful macros for message handling

  IF im_item->is_valid( ) EQ mmpur_yes.
    mmmfd_preq_no.
    mmpur_message_forced 'E' 'ZMM' '001' 'Введите заявку.'
                                         ''
                                         ''
                                         ''.
    CALL METHOD im_item->invalidate( ).
  ENDIF.

Не совсем понятно как использовать mmmfd_preq_no.?


Надо использовать макрос mmpur_metafield mmmfd_preq_no.
См. ноту 310154.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание заказа на поставку только со ссылкой к заявке
СообщениеДобавлено: Пт, апр 30 2010, 10:35 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, сен 24 2007, 07:31
Сообщения: 95
Цитата:
SVT писал(а): Вопрос2: В ME22N по ентеру вышеуказанный код не отрабатывает, why?

В исходном коде было:
Code:
AND ( sy-tcode = 'ME21N' OR sy-tcode = 'ME21N' )

Потому и не отрабатывает


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание заказа на поставку только со ссылкой к заявке
СообщениеДобавлено: Пт, апр 30 2010, 13:00 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, апр 10 2006, 13:31
Сообщения: 51
Besa написал:
Надо использовать макрос mmpur_metafield mmmfd_preq_no.
См. ноту 310154.
Спасибо.
Итого:
Code:

IF im_item->is_valid( ) EQ mmpur_yes.
* курсор на поле Заявка ???
  mmpur_metafield mmmfd_preq_no.
* удаление сообщений ???
  mmpur_remove_messages_by_id ls_mepoitem-id.
  mmpur_business_obj_id ls_mepoitem-id.
* Сообщение 'Введите заявку поз. ' с добавлением в журнал ошибок
  mmpur_message_forced 'E' 'ZMM' '001' ls_mepoitem-ebelp '' '' ''.

  CALL METHOD im_item->invalidate( ).
  ENDIF.
Вроде работает только курсор на поле не позиционируется хм...

_________________
Даже если тебя съели, у тебя есть два выхода...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание заказа на поставку только со ссылкой к заявке
СообщениеДобавлено: Сб, май 01 2010, 11:37 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
SVT написал(а):
Besa написал:
Надо использовать макрос mmpur_metafield mmmfd_preq_no.
См. ноту 310154.
Спасибо.
Итого:
Code:

IF im_item->is_valid( ) EQ mmpur_yes.
* курсор на поле Заявка ???
  mmpur_metafield mmmfd_preq_no.
* удаление сообщений ???
  mmpur_remove_messages_by_id ls_mepoitem-id.
  mmpur_business_obj_id ls_mepoitem-id.
* Сообщение 'Введите заявку поз. ' с добавлением в журнал ошибок
  mmpur_message_forced 'E' 'ZMM' '001' ls_mepoitem-ebelp '' '' ''.

  CALL METHOD im_item->invalidate( ).
  ENDIF.
Вроде работает только курсор на поле не позиционируется хм...

По ноте надо mmpur_business_obj_id сначала, потом mmpur_metafield. Если ИД правильный то все должно работать. Я делал через user-exit как в ноте написано, все работает, в бади тоже должно работать.


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

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


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

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


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

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