Sapforum.Biz
Логистика => Техническое обслуживание и ремонт оборудования (PM) => Тема начата: themax от Октябрь 20, 2015, 11:11:59 am
-
Доброго времени суток уважаемые ТОРО-вцы! При коммерческим закрытии заказов ТОРО, а происходит это обычно не чаще раза в год, а то и раз в два года, транзакцией iw38 на каждый заказ выходит предупреждающее сообщение о том Позиция заказа на поставку 4500000022 00010 заказа 4000001 еще без инд. окончат. счета. В общем то это 4500000022 заказ на поставку и в нём не стоит галочка окончат.счёта, но эту галочку в ручную пользователи не ставят, а автоматом она не ставится, т.к. перерасчётный счёт не создаёт проводку, но оное и не используется в общем в компании. Если галочку ставлю в ручную в заказе на поставку окончат.счёт, то предупреждающее сообщение при коммерческим закрытии заказа ТОРО не появляется. Просто заказов очень много и при закрытии на каждый заказ ТОРО это сообщение выходит. Пробывал убрать это сообщение через настройку Управление выходными документами - Управление сообщениями, добавил туда тип сообщение с номером и указал без сообщения, но видимо всё же не та настройка и сообщение также появляется. Проблема конечно не критичная, но юзеры капризный народ. Просят убрать это действо. Может кто знает как убрать это сообщение при коммерческом закрытии заказов ТОРО?
-
ставится, т.к. перерасчётный счёт не создаёт проводку, но оное и не используется в общем в компании. Если галочку ставлю в ручную в заказе на поставку окончат.счёт, то предупреждающее сообщение при коммерческим закрытии заказа ТОРО не появляется.
Ну если бы ты еще и класс сообщения с номером сообщения указал бы.. то наверное было бы проще сказать, что-то по этому поводу.
PS: Кстати еще так подумал а зачем тогда ставить метку поступления счета в заказе? Не ставьте ее и не будет тогда система требовать чтобы счет был введен.
-
Я об этом как то не подумал. Класс сообщений IW номер сообщения 215 тип сообщения W. В том то и дело что сообщение появляется потому что галочка эта не стоит в заказе на поставку тогда это сообщение и выходит. Как эту настройку обойти мне пока не понятно, может со стороны MM надо что то подкручивать.
-
Я об этом как то не подумал. Класс сообщений IW номер сообщения 215 тип сообщения W. В том то и дело что сообщение появляется потому что галочка эта не стоит в заказе на поставку тогда это сообщение и выходит. Как эту настройку обойти мне пока не понятно, может со стороны MM надо что то подкручивать.
Мы наверное про разные галочки. Я имею в виду галку с рисунка ME23N-NOMIGO.png ниже. Если эта галка стоит в заказе, то счет к такому заказу не проводится и не требуется. Управляется это из ММ. Если у вас счета к заказам не нужны, то у вас вот эту галку не нужно ставить в заказах.
Что касается сообщений, можете показать картинку просмотра данных таблицы T160M в транзакции SE16 с ограничением ARBGB = IW, как на рисунке ниже T160M-IW.png
-
Мы действительно про разные галочки говорим. Я на рисунке обозначил про какую галочку я говорю. Вот по умолчанию она не стоит. Если я в ручную её ставлю, то предупреждающее сообщение при коммерческом закрытии не появляется. Прилагаю оба скрина, на втором рисунке я обозначил настройку в табличке, которую сделал, но она также не помогла, сообщение также появляется.
-
Мы действительно про разные галочки говорим. Я на рисунке обозначил про какую галочку я говорю. Вот по умолчанию она не стоит.
Она не может стоять по умолчанию... это галка последнего счета. А вот та которую я вам показала, как раз может задаваться и если она не будет установлена, то к заказу не будет предполагаться ввода счетов. Проверьте у себя на заказе. А то сейчас вы ставите галку, а счетов нет и не предполагается, что как по мне несколько не правильно.
-
Вы всё правильно говорите Uukrul. Галочку поступления счёта я и не трогаю. Она сама там появляется когда делается счёт фактура. Вот тот скрин который я выслал там галочка поступления счёта стоит и счёт фактура и приёмка работ по всем позициям в заказе на поставку выполнена. Вопрос и заключается в том как другая галочка на поле Последний счёт влияет на коммерческое закрытие заказов ТОРО. У нас заказы ТОРО технически не закрываются до тех пор пока по ним не проведут фактические затраты, т.е. сам заказ на поставку, счёт фактура и приёмка работ, но галочка эта автоматом не проставляется потому что у нас не используется какой то там счёт для перерасчёта чего то там, это мне так ММ-щик объяснил. Но стоит мне поставить эту галочку последний счёт в заказе на поставку руками, то сообщение это не появляется при коммерческом закрытии. Можно конечно начать копаться в настройках ММ и искать что то связанное с галочкой Последний счёт, но мне показалось что просто убрать это предупреждающее сообщение будет проще.
-
Вы всё правильно говорите Uukrul. Галочку поступления счёта я и не трогаю.
Так ее как раз и надо трогать, если вам поступление счета не важно к заказу.
галочка поступления счёта стоит и счёт фактура и приёмка работ по всем позициям в заказе на поставку выполнена. Вопрос и заключается в том как другая галочка на поле Последний счёт влияет на коммерческое закрытие заказов ТОРО
А вот это уже проблема к ММ, они не настроили установку галки последнего счета или же при фактурировании не закрывается все количество, так что это проблема ваших мм-щиков, а не ваша.
-
В общем я так и не смог победить это информационное сообщение, связанное с индикатором последнего счета-фактуры. Может есть какое нибудь расширение или Badi чтобы заставить эту галочку проставляться автоматически. Может кто реализовывал потому как у меня пока так и не получилось найти какое то решения для этой казалось бы не большой проблеммки.
-
Может кто реализовывал потому как у меня пока так и не получилось найти какое то решения для этой казалось бы не большой проблеммки.
BADI: ME_PROCESS_PO_CUST
Там есть метод POST в него передается ссылка на класс который позволяет получить доступ к данным заказа, сделать изменения данных и сохранить заказ. Вот там вы и можете проставлять данную галку. Главное чтобы вы это правильно делали, а то поставите галку до ввода счета и все, счета больше проводить к заказу не сможете.
-
BADI: ME_PROCESS_PO_CUST
Там есть метод POST в него передается ссылка на класс который позволяет получить доступ к данным заказа, сделать изменения данных и сохранить заказ. Вот там вы и можете проставлять данную галку. Главное чтобы вы это правильно делали, а то поставите галку до ввода счета и все, счета больше проводить к заказу не сможете.
Спасибо за совет, обязательно буду пробывать.
-
В продолжении темы. В общем решено было изменять заказы на поставку только после того как была создана счёт фактура. Отсюда возникла необходимость изменение транзакции MIRO. После прочтения всякой инфы в инете нашёл такой BADI INVOICE_UPDATE, создал на его основе ещё один. Ставлю брейк и пытаюсь создать счёт фактуру проваливается в отладчик. Значит BADI вроде создал правильно. Там есть три метода CHANGE_AT_SAVE, CHANGE_BEFORE_UPDATE, CHANGE_IN_UPDATE. Пытаюсь в методе CHANGE_AT_SAVE сделать что то типа
method if_ex_invoice_update~change_at_save.
data: wa_reseg_new like line of ti_rseg_new.
field-symbols: <fs_ydrseg> type MRM_TAB_MRMRSEG .
ASSIGN ti_rseg_new TO <fs_ydrseg>.
loop at <fs_ydrseg> into wa_reseg_new.
BREAK-POINT.
" ASSIGN wa_reseg_new TO <fs_ydrseg>.
wa_reseg_new-erekz = 'X'.
MODIFY <fs_ydrseg> FROM wa_reseg_new .
endloop.
endmethod.
Активирую. Запускаю создание счёта фактуры, но на определённом моменте падает в дамп. Пишет что при попытке изменить то поле в заказе последний счёт дамп и происходит, т.е. по сути ругается на то что я пытаюсь изменить содержимое заказа. Вот мне не понятно, получается что в принципе изменить нельзя чтоли?? Может кто что подскажет?
-
А с чего вы решили что можете менять полученные таблицы? В этом методе все данные которые вам передаются это импорт-парметры. Менять их дело бесполезное и не правильное. В данном BADI вы можете обновить свои Z-данные если они имеются. Так же можно обновить что либо еще вам нужное, но нельзя менять значения проводимого документа.
-
Вы абсолютно правы Uukrul относительно параметров самого интерфейса этого класса, но мне тут подсказали один код, мы его чутка доработали, в общем то работает. Если у позиции в заказе на поставку например две услуги и материала, то пока все услуги или материалы по каждой позиции не будут отфактурированы галочка последний счёт не ставится. Единственное что не получилось это со сторнированием, хотел сделать что при сторнировании документа галочка в заказе на поставку снималась, но видимо мозгов не хватает. Если кому то будет нужно или интересно вот код.
data: begin of wa_tab,
ebelp type ekpo-ebelp,
netpr type ekpo-netpr,
MENGE type ekpo-MENGE,
DMBTR type ekbe-DMBTR,
end of wa_tab,
begin of wa_tab1,
ebelp type ekbe-ebelp,
DMBTR type ekbe-DMBTR,
SHKZG type ekbe-SHKZG,
end of wa_tab1,
begin of wa_tab3,
ebelp type ekbe-ebelp,
DMBTR type ekbe-DMBTR,
end of wa_tab3,
begin of wa_tab2,
belnr type rseg-belnr,
ebeln type rseg-ebeln,
ebelp type rseg-ebelp,
wrbtr type rseg-wrbtr,
summa type rseg-wrbtr,
end of wa_tab2.
data: tab LIKE TABLE OF wa_tab,
tab1 LIKE TABLE OF wa_tab1,
tab2 LIKE TABLE OF wa_tab2,
tab3 LIKE TABLE OF wa_tab3.
type-pools mmcr.
data: ydrseg type table of mmcr_drseg.
field-symbols: <fs> like ydrseg.
field-symbols: <s> type mmcr_drseg.
field-symbols: <s1> type mmcr_drseg.
data: sss(40).
sss = '(SAPLMR1M)YDRSEG[]'.
assign (sss) to <fs>.
read table <fs> index 1 assigning <s1>.
BREAK-POINT.
if sy-tcode <> 'MR8M'.
select ebelp netpr menge into CORRESPONDING FIELDS OF TABLE tab from ekpo where ebeln = <s1>-ebeln.
select * from ekbe into CORRESPONDING FIELDS OF TABLE tab1 where ebeln = <s1>-ebeln and VGABE = 2.
loop at <fs> assigning <s>.
wa_tab3-ebelp = <s>-ebelp.
if <s>-SHKZG = 'H'.
wa_tab3-dmbtr = -1 * <s>-NETWR.
else.
wa_tab3-dmbtr = <s>-NETWR.
endif.
COLLECT wa_tab3 into tab3 .
endloop.
loop at <fs> assigning <s>.
READ TABLE tab into wa_tab WITH KEY ebelp = <s>-ebelp.
wa_tab-DMBTR = wa_tab-netpr * wa_tab-menge.
if sy-subrc = 0.
loop at tab1 into wa_tab1 where ebelp = <s>-ebelp.
if wa_tab1-SHKZG = 'H'.
wa_tab1-dmbtr = -1 * wa_tab1-dmbtr.
endif.
wa_tab-DMBTR = wa_tab-DMBTR - wa_tab1-dmbtr.
endloop.
READ TABLE tab3 into wa_tab3 WITH KEY ebelp = <s>-ebelp.
wa_tab-DMBTR = wa_tab-DMBTR - wa_tab3-dmbtr.
if wa_tab-DMBTR <= 0.
<s>-erekz = 'X'.
endif.
endif.
endloop.
else.
loop at <fs> assigning <s>.
<s>-erekz = ''.
endloop.
endif.
Осталось только по думать как быть со сторнированием.