SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Исходящая поставка - приёмка и отпуск, поиск BAPI.



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
Timer
Участник
Участник



Joined: 21 Jul 2008
Posts: 6

PostPosted: Thu Jul 24, 2008 2:39 am    Post subject: Исходящая поставка - приёмка и отпуск, поиск BAPI. Reply with quote

Здравствуйте! Ответьте пожалуйста на несколько вопросов по проблемам в использовании исходящих поставок.

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 для отпуска?
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 160
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Thu Jul 24, 2008 3:04 pm    Post subject: Reply with quote

1) Покажите Ваш код?
Пример 101 движения:
BAPI_GOODSMVT_CREATE to post Goods Movement
Back to top
View user's profile Send private message Blog Visit poster's website
Timer
Участник
Участник



Joined: 21 Jul 2008
Posts: 6

PostPosted: Thu Jul 24, 2008 4:12 pm    Post subject: Reply with quote

Выдернутый из моего фм кусок кода с вызовом бапишки:
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.

*- Header data
  l_goodsmvt_header-pstng_date        = sy-datum.
  l_goodsmvt_header-doc_date          = sy-datum.
  l_goodsmvt_header-header_txt = text-000.
  l_goodsmvt_header-pr_uname = sy-uname.

*- 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-move_type    = '101'.
    wa-vendor       = lifnr.
    wa-entry_qnt    = items_wa-lfimg. "$##@items_wa-erfmg.
    wa-entry_uom    = items_wa-meins. "$##@items_wa-erfme.

    "документ и позиция
    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'.

    APPEND wa TO l_t_goodsmvt_item.

  ENDLOOP.

  CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
  EXPORTING
    goodsmvt_header  = l_goodsmvt_header
    goodsmvt_code    = '05' "#EC *
    TESTRUN          = ' '
  IMPORTING
    materialdocument = matdoc
    matdocumentyear  = mjahr
  TABLES
    goodsmvt_item    = l_t_goodsmvt_item
    return           = l_t_return.


  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.

********* вызвать BAPI_GOODSMVT_CREATE - конец
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 160
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Thu Jul 24, 2008 5:25 pm    Post subject: Reply with quote

Этот параметр и необходимые для заполнения поля расписаны в 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
Back to top
View user's profile Send private message Blog Visit poster's website
Timer
Участник
Участник



Joined: 21 Jul 2008
Posts: 6

PostPosted: Thu Jul 24, 2008 7:22 pm    Post subject: Reply with quote

Quote:
Каким образом у Вас в БЕ 2 появился 643 вид движения, судя по ошибке?

До этого случая я пытался использовать BAPI_GOODSMVT_CREATE при отпуске. Тогда я брал вид движения из поставки (он был равен 643). Здесь 643 вид движения появился, когда я использовал метод научного тыка и тоже взял вид движения из поставки. Насколько я теперь знаю, при приёмке нужно ставить 101 вид движения.

Quote:
с помощью какой транзакции из списка

Я спрошу. (Странно, почему в списке нет MIGO, ведь она заменяет собой транзакции MB*)


PS. Давайте на ты.
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 160
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Thu Jul 24, 2008 8:58 pm    Post subject: Reply with quote

Если создано PO на закупку, попробуй
1. GM_Code 01: Goods receipt for purchase order

выше по ссылке как раз пример 101 дв. на основе PO
Back to top
View user's profile Send private message Blog Visit poster's website
Timer
Участник
Участник



Joined: 21 Jul 2008
Posts: 6

PostPosted: Fri Jul 25, 2008 7:25 pm    Post subject: Reply with quote

Итак, когда я подставил 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.

*- Item data

  LOOP AT my_items INTO items_wa.

    wa-plant = werks.
    wa-stge_loc = '0001'.

    wa-move_type    = '101'.

    wa-entry_qnt    = items_wa-lfimg.
    wa-entry_uom    = items_wa-meins.

    "документ и позиция
    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'. "<----- Движение товара к заказу на поставку

    wa-no_more_gr   = 'X'.

    APPEND wa TO l_t_goodsmvt_item.

  ENDLOOP.

  CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
  EXPORTING
    goodsmvt_header  = l_goodsmvt_header
    goodsmvt_code    = '01'"#EC * "<--------------
    TESTRUN          = ' '
  IMPORTING
    materialdocument = matdoc
    matdocumentyear  = mjahr
  TABLES
    goodsmvt_item    = l_t_goodsmvt_item
    return           = l_t_return.


  If l_t_return IS not INITIAL. "есть сообщения об ошибках.
    rcode = 2.
      "обработка ошибок
    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.

********* вызвать BAPI_GOODSMVT_CREATE - конец
Back to top
View user's profile Send private message
vga
Мастер
Мастер


Age: 160
Joined: 04 Oct 2007
Posts: 1218
Location: Санкт-Петербург

PostPosted: Sat Jul 26, 2008 12:00 pm    Post subject: Reply with quote

Timer wrote:
ММ-щики сказали, что для приёмки подойдёт MB0A, а из списка не подойдёт ничего. В целом функция работает, хотя при сторнировании созданных документов через MBST возникают предупреждения типа M7 352 "Поток документов к поставке не может быть обновлен".


так и есть, смотри ноту
Note 199703 - Goods receipt for inbound delivery using MB0A, MIGO, VL32

Можешь добавить документы входящей поставки в поток с ФМ SD_DELIVERY_WE_FLOW_UPDATE
Back to top
View user's profile Send private message Blog Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
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.