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/