Коммерческое закрытие заказов

Автор themax, Жовтень 20, 2015, 11:11:59 ДП

Попередня тема - Наступна тема

0 Користувачі і 2 Гостей дивляться цю тему.

themax

Доброго времени суток уважаемые ТОРО-вцы! При коммерческим закрытии заказов ТОРО, а происходит это обычно не чаще раза в год, а то и раз в два года, транзакцией iw38 на каждый заказ выходит предупреждающее сообщение о том Позиция заказа на поставку 4500000022 00010 заказа 4000001 еще без инд. окончат. счета. В общем то это 4500000022 заказ на поставку и в нём не стоит галочка окончат.счёта, но эту галочку в ручную пользователи не ставят, а автоматом она не ставится, т.к. перерасчётный счёт не создаёт проводку, но оное и не используется в общем в компании. Если галочку ставлю в ручную в заказе на поставку окончат.счёт, то предупреждающее сообщение при коммерческим закрытии заказа ТОРО не появляется. Просто заказов очень много и при закрытии на каждый заказ ТОРО это сообщение выходит. Пробывал убрать это сообщение через настройку Управление выходными документами - Управление сообщениями, добавил туда тип сообщение с номером и указал без сообщения, но видимо всё же не та настройка и сообщение также появляется. Проблема конечно не критичная, но юзеры капризный народ. Просят убрать это действо. Может кто знает как убрать это сообщение при коммерческом закрытии заказов ТОРО?

Uukrul

#1
Цитата: themax від Жовтень 20, 2015, 11:11:59 ДП
ставится, т.к. перерасчётный счёт не создаёт проводку, но оное и не используется в общем в компании. Если галочку ставлю в ручную в заказе на поставку окончат.счёт, то предупреждающее сообщение при коммерческим закрытии заказа ТОРО не появляется.
Ну если бы ты еще и класс сообщения с номером сообщения указал бы.. то наверное было бы проще сказать, что-то по этому поводу.

PS: Кстати еще так подумал а зачем тогда ставить метку поступления счета в заказе? Не ставьте ее и не будет тогда система требовать чтобы счет был введен.

themax

Я об этом как то не подумал. Класс сообщений IW номер сообщения 215 тип сообщения W. В том то и дело что сообщение появляется потому что галочка эта не стоит в заказе на поставку тогда это сообщение и выходит. Как эту настройку обойти мне пока не понятно, может со стороны MM надо что то подкручивать.

Uukrul

Цитата: themax від Жовтень 21, 2015, 05:40:23 ДП
Я об этом как то не подумал. Класс сообщений IW номер сообщения 215 тип сообщения W. В том то и дело что сообщение появляется потому что галочка эта не стоит в заказе на поставку тогда это сообщение и выходит. Как эту настройку обойти мне пока не понятно, может со стороны MM надо что то подкручивать.
Мы наверное про разные галочки. Я имею в виду галку с рисунка ME23N-NOMIGO.png ниже. Если эта галка стоит в заказе, то счет к такому заказу не проводится и не требуется. Управляется это из ММ. Если у вас счета к заказам не нужны, то у вас вот эту галку не нужно ставить в заказах.

Что касается сообщений, можете показать картинку просмотра данных таблицы T160M в транзакции SE16 с ограничением ARBGB = IW, как на рисунке ниже T160M-IW.png

themax

Мы действительно про разные галочки говорим. Я на рисунке обозначил про какую галочку я говорю. Вот по умолчанию она не стоит. Если я в ручную её ставлю, то предупреждающее сообщение при коммерческом закрытии не появляется. Прилагаю оба скрина, на втором рисунке я обозначил настройку в табличке, которую сделал, но она также не помогла, сообщение также появляется.


Uukrul

Цитата: themax від Жовтень 21, 2015, 03:15:15 ПП
Мы действительно про разные галочки говорим. Я на рисунке обозначил про какую галочку я говорю. Вот по умолчанию она не стоит.
Она не может стоять по умолчанию... это галка последнего счета. А вот та которую я вам показала, как раз может задаваться и если она не будет установлена, то к заказу не будет предполагаться ввода счетов. Проверьте у себя на заказе. А то сейчас вы ставите галку, а счетов нет и не предполагается, что как по мне несколько не правильно.

themax

Вы всё правильно говорите Uukrul. Галочку поступления счёта я и не трогаю. Она сама там появляется когда делается счёт фактура. Вот тот скрин который я выслал там галочка поступления счёта стоит и счёт фактура и приёмка работ по всем позициям в заказе на поставку выполнена. Вопрос и заключается в том как другая галочка на поле Последний счёт влияет на коммерческое закрытие заказов ТОРО.  У нас заказы ТОРО технически не закрываются до тех пор пока по ним не проведут фактические затраты, т.е. сам заказ на поставку, счёт фактура и приёмка работ, но галочка эта автоматом не проставляется потому что у нас не используется какой то там счёт для перерасчёта чего то там, это мне так ММ-щик объяснил. Но стоит мне поставить эту галочку последний счёт в заказе на поставку руками, то сообщение это не появляется при коммерческом закрытии. Можно конечно начать копаться в настройках ММ и искать что то связанное с галочкой Последний счёт, но мне показалось что просто убрать это предупреждающее сообщение будет проще.

Uukrul

Цитата: themax від Жовтень 22, 2015, 06:34:09 ДП
Вы всё правильно говорите Uukrul. Галочку поступления счёта я и не трогаю.
Так ее как раз и надо трогать, если вам поступление счета не важно к заказу.

Цитата: themax від Жовтень 22, 2015, 06:34:09 ДП
галочка поступления счёта стоит и счёт фактура и приёмка работ по всем позициям в заказе на поставку выполнена. Вопрос и заключается в том как другая галочка на поле Последний счёт влияет на коммерческое закрытие заказов ТОРО
А вот это уже проблема к ММ, они не настроили установку галки последнего счета или же при фактурировании не закрывается все количество, так что это проблема ваших мм-щиков, а не ваша.

themax

В общем я так и не смог победить это информационное сообщение, связанное с индикатором последнего счета-фактуры. Может есть какое нибудь расширение или Badi чтобы заставить эту галочку проставляться автоматически.  Может кто реализовывал потому как у меня пока так и не получилось найти  какое то решения для этой казалось бы не большой проблеммки.

Uukrul

Цитата: themax від Грудень 21, 2015, 12:50:16 ПП
Может кто реализовывал потому как у меня пока так и не получилось найти  какое то решения для этой казалось бы не большой проблеммки.
BADI: ME_PROCESS_PO_CUST

Там есть метод POST в него передается ссылка на класс который позволяет получить доступ к данным заказа, сделать изменения данных и сохранить заказ. Вот там вы и можете проставлять данную галку. Главное чтобы вы это правильно делали, а то поставите галку до ввода счета и все, счета больше проводить к заказу не сможете.

themax

Цитата: Uukrul від Грудень 22, 2015, 11:20:50 ДП
BADI: ME_PROCESS_PO_CUST

Там есть метод POST в него передается ссылка на класс который позволяет получить доступ к данным заказа, сделать изменения данных и сохранить заказ. Вот там вы и можете проставлять данную галку. Главное чтобы вы это правильно делали, а то поставите галку до ввода счета и все, счета больше проводить к заказу не сможете.

Спасибо за совет, обязательно буду пробывать.

themax

В продолжении темы. В общем решено было изменять заказы на поставку только после того как была создана счёт фактура. Отсюда возникла необходимость изменение транзакции 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.

Активирую. Запускаю создание счёта фактуры, но на определённом моменте падает в дамп. Пишет что при попытке изменить то поле в заказе последний счёт дамп и происходит, т.е. по сути ругается на то что я пытаюсь изменить содержимое заказа. Вот мне не понятно, получается что в принципе изменить нельзя чтоли?? Может кто что подскажет?

Uukrul

А с чего вы решили что можете менять полученные таблицы? В этом методе все данные которые вам передаются это импорт-парметры. Менять их дело бесполезное и не правильное. В данном BADI вы можете обновить свои Z-данные если они имеются. Так же можно обновить что либо еще вам нужное, но нельзя менять значения проводимого документа.

themax

Вы абсолютно правы 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.


Осталось только по думать как быть со сторнированием.