При резервировании в тр-ции MIGO в методе IF_EX_MB_DOCUMENT_UPDATE вызываю zФМ, где дальше создаю материал для резервирования при помощи BAPI_GOODSMVT_CREATE.
Return выдает след-ее сообщение
Цитата:
Партия GPZ..... материала 26......... уже блокирована пользователем XXXXX.
Предположил, что материал уже блокируется тр-цией migo. И не дает мне его использовать при резервировании моим BAPI_GOODSMVT_CREATE. Быстрое решение это разблокировать самому, но это считаю не правильно.
мой код
Цитата:
* создаем движение
READ TABLE xmseg INTO lt_xmseg INDEX 1.
READ TABLE xmkpf INTO lt_xmkpf INDEX 1.
* заполняем заголовок
DATA ls_header TYPE bapi2017_gm_head_01.
CLEAR ls_header.
ls_header-pstng_date = lt_xmkpf-budat.
ls_header-doc_date = lt_xmkpf-bldat.
ls_header-pr_uname = syst-uname.
ls_header-header_txt = lt_xmkpf-bktxt.
* заполняем позиции
DATA lt_items TYPE TABLE OF bapi2017_gm_item_create.
DATA counter LIKE lt_mseg-zeile.
DATA ls_items LIKE LINE OF lt_items.
* FIELD-SYMBOLS <items> LIKE LINE OF lt_items.
"APPEND INITIAL LINE TO lt_items ASSIGNING <items>.
CLEAR: counter.
CLEAR: lt_items.
LOOP at xmseg INTO lt_xmseg.
counter = counter + 1.
ls_items-material = lt_xmseg-matnr.
ls_items-plant = '1051'.
ls_items-stge_loc = lt_xmseg-lgort.
ls_items-val_type = lt_xmseg-bwtar.
ls_items-batch = lt_xmseg-charg.
ls_items-entry_qnt = lt_xmseg-erfmg.
ls_items-entry_uom = lt_xmseg-erfme.
ls_items-amount_lc = lt_xmseg-dmbtr.
DATA l_zz_mblnr type mseg-zz_mblnr.
"проверяем если уже существует с такими параметрами то вид движения 909
IF lt_xmseg-smbln IS INITIAL.
ls_items-move_type = '909'.
ELSE.
CLEAR: l_zz_mblnr.
SELECT SINGLE zz_mblnr FROM mseg
INTO l_zz_mblnr
WHERE mblnr = lt_xmseg-smbln AND
mjahr = lt_xmseg-sjahr AND
zeile = lt_xmseg-smblp.
CHECK NOT l_zz_mblnr IS INITIAL.
ls_items-move_type = '910'.
ENDIF.
APPEND ls_items to lt_items.
CLEAR ls_items.
" добавляем значения в лок-ю таблицу
lt_zeile-zeile = lt_xmseg-zeile.
lt_zeile-zz_mblpo = counter.
APPEND lt_zeile.
SET UPDATE TASK LOCAL.
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
goodsmvt_header = ls_header
goodsmvt_code = '05'
IMPORTING
materialdocument = lt_xmseg-zz_mblnr
matdocumentyear = lt_xmseg-zz_mjahr
TABLES
goodsmvt_item = lt_items
" EXTENSIONIN = lt_extensionin "заполняем z поля
return = gt_return.
*если нет ошибок то commit
IF gt_return[] IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
IMPORTING
RETURN = l_return.
Подскажите в каком месте необходимо создавать материал резервирования ?