Текущее время: Вс, авг 03 2025, 14:21

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


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

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


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

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