Текущее время: Чт, июн 26 2025, 18:24

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


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


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Изменение функционала транзации MIRO
СообщениеДобавлено: Пн, янв 11 2016, 08:07 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, янв 24 2013, 08:43
Сообщения: 806
Откуда: South Kazakhstan
Пол: Мужской
Добрый день уважаемые абаперы. Я как программер не очень, поэтому нужен совет тех кто сталкивался с этой проблеммкой. В общем мне нужно чтобы при создании счёта фактуры транзакцией MIRO модуля ММ в заказе на поставку, который связан с этой фактурой
на вкладке счёт фактура в поле Последний счёт ставилась галочка. Пытался сделать с помощью BADI Invoice Update, почитал в интернете что то похожее. Создал новое BADI на основе Invoice Update. Там есть три метода CHANGE_AT_SAVE, CHANGE_BEFORE_UPDATE, CHANGE_IN_UPDATE. Пытался сделать что то типа
Code:
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.


Активирую. Запускаю транзакцию MIRO и на определённом моменте оное падает в дамп. В дампе смарю написано что дамп вызван попыткой изменить содержание поля,
- Parameters of the category IMPORTING REFERENCE for functions and
methods
- Untyped field symbols not yet assigned a field using ASSIGN
- TABLES parameters if the actual parameter is protected against changes
- USING reference parameters and CHANGING parameters for FORMs, if the
actual parameter is protected against changes and
т.е. по сути изменение этих параметров не возможно с помощью этого BADi. Может кто сталкивался или реализовывал подобное?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзации MIRO
СообщениеДобавлено: Пн, янв 11 2016, 10:39 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1594
Откуда: Москва, Минск
Пол: Мужской
Добрый день.
В данной бади не получится изменить значения полей.
Да и вообще нормальных точек расширения, в которых можно изменять данные стандартных полей документов счетов, к сожалению нет.

Попробуйте следующий способ:
В начале ФМ MRM_FINAL_CHECK сделайте неявную точку расширения, в которой можно заполнить значение t_drseg-EREKZ.
Не забудьте учесть, что заполнение не должно выполняться для документов сторно.
Удачи!

_________________
Лучше быть умным и иногда тупить, чем быть тупым и постоянно умничать!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзации MIRO
СообщениеДобавлено: Пн, янв 11 2016, 11:34 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, янв 24 2013, 08:43
Сообщения: 806
Откуда: South Kazakhstan
Пол: Мужской
DED_MOROZ написал:
Попробуйте следующий способ:
В начале ФМ MRM_FINAL_CHECK сделайте неявную точку расширения, в которой можно заполнить значение t_drseg-EREKZ.
Не забудьте учесть, что заполнение не должно выполняться для документов сторно.
Удачи!


Я чота не допонял, Вы имеете в виду Инхансмент по пытаться в этом ФМ сделать?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзации MIRO
СообщениеДобавлено: Пн, янв 11 2016, 11:37 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Помнится это прокатывало, но не во всех версиях, попробуйте
Code:
  type-POOLs MMCR.
  DATA: ydrseg TYPE TABLE OF mmcr_drseg.
  FIELD-SYMBOLS: <fs> LIKE ydrseg.
  FIELD-SYMBOLS: <s> TYPE mmcr_drseg.
  DATA: sss(40).
  sss = '(SAPLMR1M)YDRSEG[]'.
  ASSIGN (sss) TO <fs>.
  READ TABLE <fs> INDEX 1 ASSIGNING <s>.
  <s>-erekz = 'X'.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменение функционала транзации MIRO
СообщениеДобавлено: Пн, янв 11 2016, 12:15 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1594
Откуда: Москва, Минск
Пол: Мужской
Maksimka написал:
DED_MOROZ написал:
Попробуйте следующий способ:
В начале ФМ MRM_FINAL_CHECK сделайте неявную точку расширения, в которой можно заполнить значение t_drseg-EREKZ.
Не забудьте учесть, что заполнение не должно выполняться для документов сторно.
Удачи!


Я чота не допонял, Вы имеете в виду Инхансмент по пытаться в этом ФМ сделать?


Да.

_________________
Лучше быть умным и иногда тупить, чем быть тупым и постоянно умничать!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзации MIRO
СообщениеДобавлено: Пн, янв 11 2016, 12:34 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1594
Откуда: Москва, Минск
Пол: Мужской
Кстати, нашел вот такой BADI MRM_FINAL_INVOICE_IND.
Посмотрите его. :D

_________________
Лучше быть умным и иногда тупить, чем быть тупым и постоянно умничать!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзации MIRO
СообщениеДобавлено: Пн, янв 11 2016, 12:40 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, янв 24 2013, 08:43
Сообщения: 806
Откуда: South Kazakhstan
Пол: Мужской
Besa написал:
Code:
  type-POOLs MMCR.
  DATA: ydrseg TYPE TABLE OF mmcr_drseg.
  FIELD-SYMBOLS: <fs> LIKE ydrseg.
  FIELD-SYMBOLS: <s> TYPE mmcr_drseg.
  DATA: sss(40).
  sss = '(SAPLMR1M)YDRSEG[]'.
  ASSIGN (sss) TO <fs>.
  READ TABLE <fs> INDEX 1 ASSIGNING <s>.
  <s>-erekz = 'X'.

Я извиняюсь за интеллект, можно по подробней? Где я должен это сделать? Мне нужно сделать это в Инхасменте функционального модуля, о котором писал DED_MOROZ или в каком то BAdi?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзации MIRO
СообщениеДобавлено: Пн, янв 11 2016, 13:17 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1594
Откуда: Москва, Минск
Пол: Мужской
Я же тебе написал BADI MRM_FINAL_INVOICE_IND.
Он специально для твоих целей :)

_________________
Лучше быть умным и иногда тупить, чем быть тупым и постоянно умничать!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзации MIRO
СообщениеДобавлено: Пн, янв 11 2016, 14:58 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, янв 24 2013, 08:43
Сообщения: 806
Откуда: South Kazakhstan
Пол: Мужской
DED_MOROZ написал:
Я же тебе написал BADI MRM_FINAL_INVOICE_IND.
Он специально для твоих целей :)

Спасибо DED_MOROZ за подсказку, но у меня нет этого бади, ни в se18 ни в se19 оное у меня не открывается. Система грит что MRM_FINAL_INVOICE_IND не существует. В инете много чо написано про него, но видимо толи версия у меня не та, толи я чота не то делаю.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзации MIRO
СообщениеДобавлено: Пн, янв 11 2016, 15:20 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1594
Откуда: Москва, Минск
Пол: Мужской
Вроде бы с EHP5 этот BADI появился.

_________________
Лучше быть умным и иногда тупить, чем быть тупым и постоянно умничать!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзации MIRO
СообщениеДобавлено: Вт, янв 12 2016, 00:25 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
Maksimka написал:
Besa написал:
Code:
  type-POOLs MMCR.
  DATA: ydrseg TYPE TABLE OF mmcr_drseg.
  FIELD-SYMBOLS: <fs> LIKE ydrseg.
  FIELD-SYMBOLS: <s> TYPE mmcr_drseg.
  DATA: sss(40).
  sss = '(SAPLMR1M)YDRSEG[]'.
  ASSIGN (sss) TO <fs>.
  READ TABLE <fs> INDEX 1 ASSIGNING <s>.
  <s>-erekz = 'X'.

Я извиняюсь за интеллект, можно по подробней? Где я должен это сделать? Мне нужно сделать это в Инхасменте функционального модуля, о котором писал DED_MOROZ или в каком то BAdi?

Нет, вставляйте там где и пытаетесь сделать в method if_ex_invoice_update~change_at_save.
Цитата:
Создал новое BADI на основе Invoice Update. Там есть три метода CHANGE_AT_SAVE,


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменение функционала транзации MIRO
СообщениеДобавлено: Вт, янв 12 2016, 00:26 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Чт, ноя 11 2004, 16:25
Сообщения: 3109
Пол: Мужской
DED_MOROZ написал:
Кстати, нашел вот такой BADI MRM_FINAL_INVOICE_IND.
Посмотрите его. :D

Буду знать теперь что появилось место :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Изменение функционала транзации MIRO
СообщениеДобавлено: Вт, янв 12 2016, 10:41 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1594
Откуда: Москва, Минск
Пол: Мужской
Нет, вставляйте там где и пытаетесь сделать в method if_ex_invoice_update~change_at_save.
Цитата:
Создал новое BADI на основе Invoice Update. Там есть три метода CHANGE_AT_SAVE,
[/quote]


Я бы так не делал.
Во первых, счет-фактура может создаваться не только из MIRO, а например из транзакции MRRL.
А там главная программа используется другая и ASSIGN ничего не вернет.

Во-вторых, изменять данное поле в момент сохранения документа может уже быть поздно.
И это приведет к неконсистентности данных.(Логистика, Контроллинг)
Но это, конечно, нужно проверять.

Вариант предложенный мной(с энхансментом) точно работает, можно использовать его.
ИМХО.

_________________
Лучше быть умным и иногда тупить, чем быть тупым и постоянно умничать!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзации MIRO
СообщениеДобавлено: Вт, янв 12 2016, 15:01 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Чт, янв 24 2013, 08:43
Сообщения: 806
Откуда: South Kazakhstan
Пол: Мужской
В общем на основе совета Besa сделал вот такую штуку.
Code:
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.


Т.е. по сути если не по всем позициям заказа на поставку были сделаны счета фактур то галочка проставится только в той позиции которая была отфактурирована . Жалко только, что не получилось с транзакцией MR8M, хотел сделать чтобы при сторнировании галочка убиралась в заказе на поставку, но мозгов пока не хватает что ли. Может кому будет нужно или интересно. Всем спасибо за советы. Осталось подумать как быть со сторнированием.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Изменение функционала транзации MIRO
СообщениеДобавлено: Вт, янв 12 2016, 18:59 
Гуру-маршал
Гуру-маршал
Аватара пользователя

Зарегистрирован:
Пт, янв 30 2009, 09:59
Сообщения: 1594
Откуда: Москва, Минск
Пол: Мужской
А что разве при сторно счета галка не снимается автоматически стандартом?

_________________
Лучше быть умным и иногда тупить, чем быть тупым и постоянно умничать!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу 1, 2  След.

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


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

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


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

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