Posted: Thu Jul 24, 2008 2:39 am Post subject: Исходящая поставка - приёмка и отпуск, поиск BAPI.
Здравствуйте! Ответьте пожалуйста на несколько вопросов по проблемам в использовании исходящих поставок.
1) Приёмка.
Я пытаюсь использовать функциональный модуль BAPI_GOODSMVT_CREATE для приёмки товара по исходящей поставке и получаю одну из ошибок: либо M7 226 "Ошибка в управлении обновлением вида движения (запись 101 X X)", либо M7 096 "движение товара с видом движения 643 невозможно".
Я прочитал ноту 520813 "FAQ: BAPIs for goods movements" и вынес оттуда то, что нужно как-то заполнить импортируемый параметр GOODSMVT_CODE-GM_CODE ("Make sure that you assign a GM_CODE to the BAPI for the required transaction").
Через элемент данных этого параметра я выяснил его возможные значения (они находятся в таблице T158G). Я перепробовал все семь значений, но от ошибок не избавился. В документации к этому элементу данных сказано "the system does not support goods movements that are initiated by ... Goods issue for delivery".
Вопрос первый: подходит ли BAPI_GOODSMVT_CREATE для приёмки товара по исходящей поставке (в свете "does not support")?
Второй вопрос: как избежать ошибки M7 226?
2) Отпуск.
Существует ли функциональный модуль, используя который можно отпустить товар по исходящей поставке так же, как в транзакции VL02N?
Я использую фм WS_LM_GOODS_MOVEMENT, но он выставляет не передаваемые ему количества, а количества из поставки.
Может быть есть фм, который изменяет количества в поставке, после чего можно использовать WS_LM_GOODS_MOVEMENT для отпуска?
Выдернутый из моего фм кусок кода с вызовом бапишки:
Code:
REPORT ZZZZZZZZ.
" специфичные для моей системы данные:
data: " custom
inbd_items type zhht_inbd_1,
return_line type zhht_messages_line, return type zhht_messages,
" general
p_vbeln type vbeln, rcode type i,
tmp_str1 type string, tmp_str2 type string.
" всё остальное
********* вызвать BAPI_GOODSMVT_CREATE - начало
DATA: l_goodsmvt_header TYPE bapi2017_gm_head_01,
l_t_goodsmvt_item TYPE TABLE OF bapi2017_gm_item_create
INITIAL SIZE 0,
items_wa LIKE LINE OF inbd_items,
l_t_return TYPE TABLE OF bapiret2 INITIAL SIZE 0,
wa_return type bapiret2,
wa TYPE bapi2017_gm_item_create,
lifnr type lifnr.
DATA: matdoc type mblnr, mjahr type mjahr.
*- Item data
select single lifnr
from likp
into lifnr
where likp~vbeln = p_vbeln.
LOOP AT inbd_items INTO items_wa.
select single matnr werks lgort
from lips
into (wa-material, wa-plant, wa-stge_loc)
where lips~vbeln = p_vbeln
and lips~posnr = items_wa-posnr.
"документ и позиция
wa-deliv_numb = p_vbeln.
wa-deliv_item = items_wa-posnr.
* SELECT SINGLE vgbel vgpos "выбрать данные предыдущего документа "заказ на поставку"
* FROM lips
* INTO (wa-po_number, wa-po_item)
* WHERE lips~vbeln = p_vbeln
* AND lips~posnr = items_wa-posnr.
* wa-mvt_ind = 'B'. " Движение товара к заказу на поставку
wa-mvt_ind = ' '. " Движение товара без ссылки
wa-no_more_gr = 'X'.
If l_t_return IS not INITIAL. "есть сообщения об ошибках.
rcode = 2.
LOOP AT l_t_return INTO wa_return.
"вывести номер ошибочной позиции
tmp_str1 = wa_return-row.
concatenate wa_return-id wa_return-number wa_return-message into tmp_str2
separated by space.
concatenate 'Позиция ' tmp_str1 ': ' tmp_str2
into return_line-message respecting blanks.
return_line-type = wa_return-type.
append return_line to return.
endloop.
Return.
Endif.
"успешное проведение без ошибок
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = '3'.
rcode = 0.
concatenate 'Создано поступление материала №' matdoc mjahr 'г.'
into return_line-message separated by space.
return_line-type = 'S'.
append return_line to return.
Age: 180 Joined: 04 Oct 2007 Posts: 1218 Location: Санкт-Петербург
Posted: Thu Jul 24, 2008 5:25 pm Post subject:
Этот параметр и необходимые для заполнения поля расписаны в help на ФМ.
Quote:
Which fields have to be filled during the various transactions/ events?
The following sample scenarios demonstrate which fields have to be filled for which business transactions/events (code).
There are the following types of transactions/events:
1. GM_Code 01: Goods receipt for purchase order
2. GM_Code 02: Goods receipt for production order
3. GM_Code 03: Goods issue
4. GM_Code 04: Transfer posting
5. GM_Code 05: Other goods receipts
6. GM_Code 06: Reversal of goods movements
Entering the movement indicator
Depending on the transaction, you must enter the following in the movement indicator:
GM_Code 01 (Goods receipt for purchase order): B
GM_Code 02 (Goods receipt for production order): F
For all other transactions, you leave the field blank.
..........
Насколько понимаю, отпуск товара делается с БЕ 1 643 движением, а приемка в БЕ 2 101 движением. В БЕ 2 у вас создана Входящая поставка и на ее основании создается поступление материалов в БЕ 2 101 движением.
Каким образом у Вас в БЕ 2 появился 643 вид движения, судя по ошибке? Это раз.
Второе, вам нужно спросить MM-щиков, с помощью какой транзакции из списка можно сделать нужную вам приемку при перемещении товара между BE. И если возможно, то уже разбираться в параметрами функции для выбранного GM_Code
01 MB01
02 MB31
03 MB1A
04 MB1B
05 MB1C
06 MB11
08 VL02N
Каким образом у Вас в БЕ 2 появился 643 вид движения, судя по ошибке?
До этого случая я пытался использовать BAPI_GOODSMVT_CREATE при отпуске. Тогда я брал вид движения из поставки (он был равен 643). Здесь 643 вид движения появился, когда я использовал метод научного тыка и тоже взял вид движения из поставки. Насколько я теперь знаю, при приёмке нужно ставить 101 вид движения.
Quote:
с помощью какой транзакции из списка
Я спрошу. (Странно, почему в списке нет MIGO, ведь она заменяет собой транзакции MB*)
Итак, когда я подставил GM_Code = '01' и MVT_IND = 'B' бапишка успешно создала поступление материала.
Кусок окончательного кода ниже. Спасибо, vga!
Quote:
с помощью какой транзакции из списка
ММ-щики сказали, что для приёмки подойдёт MB0A, а из списка не подойдёт ничего. В целом функция работает, хотя при сторнировании созданных документов через MBST возникают предупреждения типа M7 352 "Поток документов к поставке не может быть обновлен".
Code:
********* вызвать BAPI_GOODSMVT_CREATE - начало
DATA: l_goodsmvt_header TYPE bapi2017_gm_head_01,
l_t_goodsmvt_item TYPE TABLE OF bapi2017_gm_item_create
INITIAL SIZE 0,
items_wa LIKE LINE OF my_items,
l_t_return TYPE TABLE OF bapiret2 INITIAL SIZE 0,
wa_return type bapiret2,
wa TYPE bapi2017_gm_item_create,
lifnr type lifnr.
DATA: matdoc type mblnr, mjahr type mjahr.
*- Header data
l_goodsmvt_header-pstng_date = sy-datum. " иначе ошибка F5 669 Posting date is initial
l_goodsmvt_header-header_txt = text-000.
"документ и позиция
wa-deliv_numb = vbeln.
wa-deliv_item = items_wa-posnr.
SELECT SINGLE vgbel vgpos "выбрать данные предыдущего документа "заказ на поставку"
FROM lips
INTO (wa-po_number, wa-po_item)
WHERE lips~vbeln = vbeln
AND lips~posnr = items_wa-posnr.
wa-mvt_ind = 'B'. "<----- Движение товара к заказу на поставку
Age: 180 Joined: 04 Oct 2007 Posts: 1218 Location: Санкт-Петербург
Posted: Sat Jul 26, 2008 12:00 pm Post subject:
Timer wrote:
ММ-щики сказали, что для приёмки подойдёт MB0A, а из списка не подойдёт ничего. В целом функция работает, хотя при сторнировании созданных документов через MBST возникают предупреждения типа M7 352 "Поток документов к поставке не может быть обновлен".
так и есть, смотри ноту
Note 199703 - Goods receipt for inbound delivery using MB0A, MIGO, VL32
Можешь добавить документы входящей поставки в поток с ФМ SD_DELIVERY_WE_FLOW_UPDATE
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.