SAPфорум.RU https://www.sapboard.ru/forum/ |
|
Создание собственного документа FI в MIRO https://www.sapboard.ru/forum/viewtopic.php?f=13&t=98165 |
Страница 1 из 1 |
Автор: | женечка2 [ Вс, ноя 10 2019, 23:42 ] |
Заголовок сообщения: | Создание собственного документа FI в MIRO |
Добрый день, Необходимо при сохранении документа в MIRO дополнительно создавать свой собственный FI-документ, прописывая в него номер создаваемого логистического документа из MIRO (RBKP-BELNR), а в документ MIRO - номер этого создаваемого FI-документа. Тут несколько раз обсуждалась тема использования BADI Invoice Update, однако, вроде бы, для решения этой задачи не подходит. В методе CHANGE_AT_SAVE еще нет номера документа RBKP-BELNR, но там можно создать документ FI через ФМ без COMMIT и его номер через ASSIGN прописать в RBKP (плохой способ, но S_RBKP_NEW не структура для изменения). В методе CHANGE_BEFORE_UPDATE номер уже есть, но поля поменять нельзя. Кроме того, при создании документа FI могут быть ошибки, которые нужно показать и не создавать ни один документ в этом случае. Все остальное подходит еще меньше. Заранее спасибо. |
Автор: | DED_MOROZ [ Пн, ноя 11 2019, 12:02 ] |
Заголовок сообщения: | Re: создание собственного документа FI в MIRO |
Может процесс пересмотреть? Например, так: 1) Пользователь создает документ счета, программно ставите блокировку для бух. проводок. 2) Отдельная Z-программа, которая будет запускаться в фоновом режиме. Она будет выбирать нужные вам логистические документы, на их основе делать fi-документы, сохранять ссылки между ними. Если FI-документ создался, делаете проводку блокированного логистического счета. Можно в одном коммите. + нормальный журнал ошибок |
Автор: | DED_MOROZ [ Чт, ноя 14 2019, 11:34 ] |
Заголовок сообщения: | Re: создание собственного документа FI в MIRO |
Можете такой вариант рассмотреть: 1) В конце ФМ MRM_FINAL_CHECK делаете неявную расширения энхансмент. Если ФМ вызывается с флагом i_xpost_prepare = 'X' и в журнале сообщений нет ошибок(t_errprot) с помощью ФМ BAPI_ACC_DOCUMENT_CHECK выполняете эмуляцию создания нужного вам FI-документа. Если при его создании возникли ошибки - добавляете их в t_errprot.Они будут видны в стандартном журнале ошибок в MIRO. 2) Определение номера лог документа выполняется в ФМ 'MRM_INVOICE_NUMBER_GENERATE', который в свою очередь вызывается в подпрограмме (LMRMPF0O)belegnummer_vergeben. В подпрограмме (LMRMPF0O)belegnummer_vergeben структура i_rbkpv доступна на изменение. В конце подпрограммы делаете энхансмент, в котором: Выполняете создание нужного вам FI документа с помощью ФМ BAPI_ACC_DOCUMENT_POST, в нужное поле передав номер логистической фактуры. Номер созданного FI- документа записываете в нужное поле i_rbkpv. Проверил на примере поля i_rbkpv-bktxt - изменения записываются в БД. Для сторно, можно будет применить аналогичный подход. Все. |
Автор: | женечка2 [ Чт, ноя 21 2019, 23:12 ] |
Заголовок сообщения: | Re: создание собственного документа FI в MIRO |
DED_MOROZ написал: Можете такой вариант рассмотреть: 1) В конце ФМ MRM_FINAL_CHECK делаете неявную расширения энхансмент. Если ФМ вызывается с флагом i_xpost_prepare = 'X' и в журнале сообщений нет ошибок(t_errprot) с помощью ФМ BAPI_ACC_DOCUMENT_CHECK выполняете эмуляцию создания нужного вам FI-документа. Если при его создании возникли ошибки - добавляете их в t_errprot.Они будут видны в стандартном журнале ошибок в MIRO. . хорошее место для проверки. этот пункт отрабатывает DED_MOROZ написал: 2) Определение номера лог документа выполняется в ФМ 'MRM_INVOICE_NUMBER_GENERATE', который в свою очередь вызывается в подпрограмме (LMRMPF0O)belegnummer_vergeben. В подпрограмме (LMRMPF0O)belegnummer_vergeben структура i_rbkpv доступна на изменение. В конце подпрограммы делаете энхансмент, в котором: Выполняете создание нужного вам FI документа с помощью ФМ BAPI_ACC_DOCUMENT_POST, в нужное поле передав номер логистической фактуры. Номер созданного FI- документа записываете в нужное поле i_rbkpv. Проверил на примере поля i_rbkpv-bktxt - изменения записываются в БД. Для сторно, можно будет применить аналогичный подход. Все. а вот здесь есть проблема. 2. изменить i_rbkpv - проходит на ура но есть проблема при создании документа переменная GD_AWTYP = RMRP в начале создание Логистического док. FUNCTION MRM_INVOICE_POST FUNCTION CKMV_AC_DOCUMENT_CREATE FUNCTION AC_DOCUMENT_CREATE FORM INIT_ALL потом мы создаем FI документ FORM BELEGNUMMER_VERGEBEN FUNCTION BAPI_ACC_DOCUMENT_POST FORM DOCUMENT_CHECK FORM CHECK_RWIN FUNCTION AC_DOCUMENT_CREATE FORM INIT_ALL где тип предсказуемо меняется на переменная GD_AWTYP = BKPFF проверки для документа FI проходят успешно но значение изменено, и когда мы хотим сохранить логистический документ, в AC_DOCUMENT_POST в котором ACCHD-AWREF = RMRP IF I_AWTYP NE GD_AWTYP (). " Системная ошибка в RW-интерфейсе MESSAGE E103 WITH I_AWTYP GD_AWTYP. ENDIF. |
Автор: | DED_MOROZ [ Пт, ноя 22 2019, 09:55 ] |
Заголовок сообщения: | Re: создание собственного документа FI в MIRO |
Попробуй так: 1) Сделай вызов фм BAPI_ACC_DOCUMENT_POST с DESTINATION 'NONE' Если создание документов выполнено успешно, заполняете флаг(lv_done = 'X') - например, через атрибут Z-класса. 2) В бади INVOICE_UPDATE перехватываешь значение флага lv_done и в зависимости от его значения выполняете или bapi_transaction_commit с DESTINATION 'NONE' или bapi_transaction_rollback с DESTINATION 'NONE' Сам не абапер. Если хрень написал, коллеги-абаперы поправят. |
Автор: | женечка2 [ Пт, ноя 22 2019, 10:25 ] |
Заголовок сообщения: | Re: создание собственного документа FI в MIRO |
DED_MOROZ написал: Попробуй так: 1) Сделай вызов фм BAPI_ACC_DOCUMENT_POST с DESTINATION 'NONE' Если создание документов выполнено успешно, заполняете флаг(lv_done = 'X') - например, через атрибут Z-класса. оно и так выполняется успешно, номер генерируется, таблица с ошибками пуста, но на момент rw- проверок (они идут после) вот тут AC_DOCUMENT_CREATE возникает ситуация про которую пишу |
Автор: | DED_MOROZ [ Пт, ноя 22 2019, 15:26 ] |
Заголовок сообщения: | Re: создание собственного документа FI в MIRO |
Я так понимаю ты выполняешь создание финансового документа в том же процессе где проводится лог документ и фин документа к нему. Вероятно, при этом, выполняется изменение внутренних таблиц, что влияет на проводку основного документа. Попробуй как я написал, пока просто вызывать BAPI_ACC_DOCUMENT_POST с DESTINATION 'NONE'. Пропадет ли ошибка. Потом будешь решать задачу как закоммитить создаваемый тобой фин документ. |
Автор: | женечка2 [ Вс, дек 01 2019, 16:35 ] |
Заголовок сообщения: | Re: создание собственного документа FI в MIRO |
женечка2 написал(а): DED_MOROZ написал: Можете такой вариант рассмотреть: 1) В конце ФМ MRM_FINAL_CHECK делаете неявную расширения энхансмент. Если ФМ вызывается с флагом i_xpost_prepare = 'X' и в журнале сообщений нет ошибок(t_errprot) с помощью ФМ BAPI_ACC_DOCUMENT_CHECK выполняете эмуляцию создания нужного вам FI-документа. Если при его создании возникли ошибки - добавляете их в t_errprot.Они будут видны в стандартном журнале ошибок в MIRO. . хорошее место для проверки. этот пункт отрабатывает женечка2 написал(а): 2)В методе CHANGE_AT_SAVE еще нет номера документа rbkp-belnr, но там можно создать документ fi через фм без commit и его номер через ASSIGN прописать в rbkp . так и поступаем, и FI документ создается без проблем DED_MOROZ написал: 3)В подпрограмме (LMRMPF0O)belegnummer_vergeben структура i_rbkpv доступна на изменение. В конце подпрограммы делаете энхансмент, в котором: . заполняем Zтаблицу с номерами логистического и технического документа 4) при commit создается все цепочка с логистическим документом, наш FI Документ, и заполняется Z таблица осталось дело за малым - прописать в наш FI документ номер созданного логистического. после commit в стандарте miro выполняется leave to transaction. и все import to memory, statics cструктура очищаются. использовать set-get параметры тоже не вариант. в при вызове miro есть несколько badi. в MRM_HEADER_DEFAULT поверяем не пуста ли Zтаблице. и запускам в фоне обновлять нужные поля для всех записей в Zтаблице, и удаляем записи из таблицы. если есть идеи по 4 пункту, или вообще по реализации, с благодарностью послушаю. |
Автор: | DED_MOROZ [ Пн, дек 02 2019, 12:16 ] |
Заголовок сообщения: | Re: создание собственного документа FI в MIRO |
А ты пробовала сделать как я писал? Зачем создавать FI-документ, а потом его изменять? При его создании нельзя нужное поле заполнить? |
Автор: | женечка2 [ Пн, дек 02 2019, 21:42 ] |
Заголовок сообщения: | Re: Создание собственного документа FI в MIRO |
увы, нельзя. в момент создания оно еще неизвестно |
Автор: | DED_MOROZ [ Вт, дек 03 2019, 10:18 ] |
Заголовок сообщения: | Re: Создание собственного документа FI в MIRO |
посмотри в личку |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |