SAPфорум.RU https://sapboard.ru/forum/ |
|
MB_RESERVATION_BADI https://sapboard.ru/forum/viewtopic.php?f=13&t=68688 |
Страница 1 из 1 |
Автор: | QWERT [ Ср, апр 06 2011, 08:50 ] |
Заголовок сообщения: | MB_RESERVATION_BADI |
Добрый день! Прочитал все найденные обсуждения по поводу данного BADI. Но, к сожалению, так и не нашел конкретного ответа как же все-таки изменять данные заголовка в резервировании программным путем в момент создания резервирования. Использую MB_RESERVATION_BADI метод DATA_MODIFY. В структуре CS_RKPF (типа Changing) изменяю значение поля, ну например, "Получатель материала" простым присвоением и все. Данные не сохраняются. Как же все-таки добиться нужного результат? Расширения тоже не помогают. |
Автор: | Пономарев Артем [ Ср, апр 06 2011, 10:33 ] |
Заголовок сообщения: | Re: MB_RESERVATION_BADI |
В IT_CHANGEABLE это поле есть? |
Автор: | QWERT [ Ср, апр 06 2011, 14:12 ] |
Заголовок сообщения: | Re: MB_RESERVATION_BADI |
Пономарев Артем написал: В IT_CHANGEABLE это поле есть? В IT_CHANGEABLE этого поля нет. Там только поля для позиций документа резервирования - RESB. Как тогда вообще менять поля в заголовке (RKPF)? Но я попробовал проэкспериментировать с теми полями, которые там есть, например, текст позиции SGTXT. Это поле меняется в процессе обработки резервирования на то, значение, которое я подставляю, но оно все равно не сохраняется при сохранении резервирования. |
Автор: | Besa [ Ср, апр 06 2011, 14:22 ] |
Заголовок сообщения: | Re: MB_RESERVATION_BADI |
Экзит MBCF0007 не подойдет? |
Автор: | Alex80 [ Ср, апр 06 2011, 22:18 ] |
Заголовок сообщения: | Re: MB_RESERVATION_BADI |
Besa написал: Экзит MBCF0007 не подойдет? Он после COMMIT WORK (Include MM07RFB0 FORM BELEG_BUCHEN).Т.к. CS_RKPF в методе DATA_MODIFY Documentation написал(а): The structure is only here for information. , то если позволяет версия - можно сделать Enhancement в MB_CREATE_RESERVATION или FORM BELEG_BUCHEN.
|
Автор: | Besa [ Чт, апр 07 2011, 06:27 ] |
Заголовок сообщения: | Re: MB_RESERVATION_BADI |
Alex80 написал: Он после COMMIT WORK (Include MM07RFB0 FORM BELEG_BUCHEN). Точно, смотрел ведь, проглядел... Alex80 написал: если позволяет версия - можно сделать Enhancement в MB_CREATE_RESERVATION или FORM BELEG_BUCHEN. или/если нет, можно попробовать через assign в методе DATA_MODIFY при сохранении Code: data: ss(20).
FIELD-SYMBOLS <fs> TYPE ANY. ss = '(SAPMM07R)rkpf-aufnr'. ASSIGN (ss) to <fs>. <fs> = '111'. |
Автор: | QWERT [ Чт, апр 07 2011, 13:15 ] |
Заголовок сообщения: | Re: MB_RESERVATION_BADI |
Alex80 написал: Т.к. CS_RKPF в методе DATA_MODIFY Documentation написал(а): The structure is only here for information. , то если позволяет версия - можно сделать Enhancement в MB_CREATE_RESERVATION или FORM BELEG_BUCHEN.А какая версия должна быть для этого? У нас ERP 2005, компоненты базируются на 6 версии. Enhancement - это точка расширения? Если да, то для чего она нужна? Поясните, пожалуйста. |
Автор: | Besa [ Пт, апр 08 2011, 06:52 ] |
Заголовок сообщения: | Re: MB_RESERVATION_BADI |
У Вас поддерживается Enhancements... Как использовать и для чего это, в поиск, информации много. В кратце, есть возможность в определенных местах стандартного кода, вставлять свой код. |
Автор: | QWERT [ Чт, апр 14 2011, 12:49 ] |
Заголовок сообщения: | Re: MB_RESERVATION_BADI |
Besa написал: можно попробовать через assign в методе DATA_MODIFY при сохранении Code: data: ss(20). FIELD-SYMBOLS <fs> TYPE ANY. ss = '(SAPMM07R)rkpf-aufnr'. ASSIGN (ss) to <fs>. <fs> = '111'. Спасибо. Воспользовался этим кодом и все получилось. Но возникла еще одна проблема. Это все отлично работает при ручномм вводе резервирования (тр. MB21), но при загрузке IDOC'а нет. При загрузке IDOC отрабатывает EXIT_SAPLMEWB_001. Но этот EXIT не позволяет менять данные заголовка резервирования. Чтобы сделать то же самое как и при ручном вводе (ss = '(SAPMM07R)rkpf-aufnr') не могу найти нужную программу, где происходит сохранение данных. Подскажите, что можно сделать? |
Автор: | ArmAnn [ Чт, апр 14 2011, 20:44 ] |
Заголовок сообщения: | Re: MB_RESERVATION_BADI |
При загрузке айдока скорее всего используется BAPI BAPI_RESERVATION_CREATE1. В этой бапи используется бади MB_RES_BAPI_CREATE1, ее можно использовать для изменения заголовка. Правда есть нюанс - бади эта у вас может быть кривая см. ноту 1334736 |
Автор: | ArtDevil [ Чт, мар 05 2015, 06:06 ] |
Заголовок сообщения: | Re: MB_RESERVATION_BADI |
Пономарев Артем написал: В IT_CHANGEABLE это поле есть? Как в IT_CHANGEABLE добавить свои Z-поля? |
Автор: | NeMurometz [ Чт, мар 05 2015, 09:22 ] |
Заголовок сообщения: | Re: MB_RESERVATION_BADI |
ArtDevil написал(а): Как в IT_CHANGEABLE добавить свои Z-поля? Поставить в экране - флаг доступно для ввода, они добавятся автоматически (include MM07RFD2_DATA_PRESET_EXTERNAL) |
Автор: | ArtDevil [ Чт, мар 05 2015, 14:23 ] |
Заголовок сообщения: | Re: MB_RESERVATION_BADI |
NeMurometz написал(а): Поставить в экране - флаг доступно для ввода, они добавятся автоматически (include MM07RFD2_DATA_PRESET_EXTERNAL) Спасибо за ответ. Экран SAPовский проверяется, там нет Z-полей, следовательно не получится туда добавить мои значения Придется пробовать тогда gt_changed_field заполнить в конце form data_preset_external через ENHANCEMENT и подсовывать свои значения. |
Автор: | ArtDevil [ Пт, мар 06 2015, 06:55 ] |
Заголовок сообщения: | Re: MB_RESERVATION_BADI |
в Include MM07RFD2_DATA_PRESET_EXTERNAL (в самом конце) вставил ENHANCEMENT там объявил таблицу data t_changeable TYPE tdtab_c132 и заполнил своими Z-полями. дальше: LOOP AT t_changeable INTO changeable_field. CLEAR: l_struct, l_field, changed_field. l_struct = changeable_field(4). CHECK l_struct = 'RESB' OR l_struct = 'RKPF'. field_length = strlen( changeable_field ) - 5. l_field = changeable_field+5(field_length). IF l_struct = 'RESB'. CONCATENATE 'LS_RESB-' l_field INTO changed_field. ELSEIF l_struct = 'RKPF'. CONCATENATE 'LS_RKPF-' l_field INTO changed_field. ENDIF. ASSIGN (changed_field) TO <changed_field>. ASSIGN (changeable_field) TO <original_field>. IF <original_field> <> <changed_field>. APPEND changeable_field TO gt_changed_field. ENDIF. <original_field> = <changed_field>. ENDLOOP. SORT gt_changed_field. Сами данные заполняю в BAdi MB_RESERVATION_BADI. для CS_RKPF-z* и CS_RESB-z* РАБОТАЕТ при создании через MB21 |
Автор: | CrecerRu [ Пт, апр 28 2017, 08:24 ] |
Заголовок сообщения: | Re: MB_RESERVATION_BADI |
Подниму тему. А получилось добиться, чтобы поля не только записывались при создании MB21, но и при изменении в MB22? У меня на 521 экран выведено поле ZZZZ (модификация). В таблицу RKPF это поле также добавлено. При создании резервирования значение с экрана записываются в RKPF-ZZZZ, причем без дополнительной обработки. Ни в MB_RESERVATION_BADI, ни в Exit-ах MB* ничего не дописывал. (Видимо, где-то Move-corresponding в стандарте отрабатывает) Но, при изменении в mb22 значение ZZZZ остается старым. Все экзиты по резервированию вызываются после Commit work. Ставлю там точку, в MM07RFB0 form Beleg_buchen. И здесь во внутренней таблице XRKPF значение моего поля ZZZZ новое. НО в итоге после сохранения значение в таблице RKPF старое. Подскажите, как добиться изменения через MB22? PS. При изменении заголовка резервирования ни BADI, ни Exit-ы вообще не отрабатывают. Версия системы 604. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |