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

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


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

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


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

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