Текущее время: Ср, июл 23 2025, 18:22

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Создание заказа на поставку из BAPI_PO_CREATE1
СообщениеДобавлено: Пн, мар 28 2011, 15:09 
Ассистент
Ассистент

Зарегистрирован:
Вт, ноя 13 2007, 12:25
Сообщения: 40
Добрый день, коллеги!
Помогите решить проблему: пробую создать заказ на поставку из BAPI_PO_CREATE1, выдает сообщение 062(ME) Для материала 31000020 контировка обязательна (укажите тип контировки).
Для позиций, где необязательно указывать тип контировки - заказ создается.

Вот код:
Code:
    ls_header-comp_code = ztmmekko-bukrs." Company Code
    ls_header-doc_type = 'NB'. " Order Typr BSART
    ls_header-creat_date = SY-DATUM. " P.O Dt - BEDAT
    ls_header-vendor = ztmmekko-lifnr. "Vendor - EKKO-LIFNR
    ls_header-purch_org = ztmmekko-ekorg. " Purch. Org - EKKO-EKORG
    ls_header-pur_group = ztmmekko-ekgrp. " Purch Group - EKKO-EKGRP
    ls_header-currency_iso = ztmmekko-waers. " Currency Default field for Enjoy

    ls_headerx-po_number = 'X'.
    ls_headerx-comp_code = 'X'." Company Code
    ls_headerx-doc_type = 'X'. " Order Typr BSART
    ls_headerx-creat_date = 'X'.
    ls_headerx-vendor = 'X'. "Vendor - EKKO-LIFNR
    ls_headerx-purch_org = 'X'. " Purch. Org - EKKO-EKORG
    ls_headerx-pur_group = 'X'. " Purch Group - EKKO-EKGRP
    ls_headerx-currency_iso = 'X'. " Currency Default field for Enjoy

    " customer fields
    clear lt_extensionin.
    lt_extensionin-structure = 'BAPI_TE_MEPOHEADER'.
    ls_bapi_te_mepoheader-zzdoknr = ztmmekko-doknr.
    " выбор номера договора
    select single znum_1 from zvca_dogovor
      into ls_bapi_te_mepoheader-zznum_1
     where doknr = ztmmekko-doknr.
    if sy-subrc <> 0.
      select single znum_1 from zvca_dogovor_dop
        into ls_bapi_te_mepoheader-zznum_1
       where doknr = ztmmekko-doknr.
      if sy-subrc <> 0.
        clear ls_bapi_te_mepoheader-zznum_1.
      endif.
    endif.
    lt_extensionin+30 = ls_bapi_te_mepoheader.
    append lt_extensionin.
    clear lt_extensionin.
    lt_extensionin-structure = 'BAPI_TE_MEPOHEADERX'.
    ls_bapi_te_mepoheaderx-zzdoknr = 'X'.
    ls_bapi_te_mepoheaderx-zznum_1 = 'X'.
    lt_extensionin+30 = ls_bapi_te_mepoheaderx.
    append lt_extensionin.


    " позиции
    loop at lt_selpos1.

      lt_items-po_item = lt_selpos1-aktpo." line item no - ekpo-ebelp
*      t_po_items-short_text = 'ksr text'." line item text
      lt_items-acctasscat = lt_selpos1-knttp.    " тип контировки
      lt_items-material = lt_selpos1-matnr. " material no - ekpo-ematn
      lt_items-plant = ztmmekko-werks. " plant - ekpo-werks
*      lt_items-quantity = '1'.
      lt_items-quantity = '1.000'.
      loop at lt_selpos where matnr = lt_selpos1-matnr and
                              mwskz = lt_selpos1-mwskz and
                              knttp = lt_selpos1-knttp and
                              sakto = lt_selpos1-sakto and
                              kostl = lt_selpos1-kostl.
        if lt_selpos1-mwskz = 'F1'.
          lt_items-net_price = lt_items-net_price + lt_selpos-wrbtr + lt_selpos-wmwst.
        else.
          lt_items-net_price = lt_items-net_price + lt_selpos-wrbtr.
        endif.
      endloop.
      lt_items-po_price = '2'.
      lt_items-price_unit = '1'.
      lt_items-tax_code = lt_selpos1-mwskz.
      lt_items-gr_ind = 'X'.
      lt_items-ir_ind = 'X'.
      lt_items-gr_basediv = 'X'.
      append lt_items.
      clear lt_items.

      lt_itemsx-po_item = lt_selpos1-aktpo.
      lt_itemsx-po_itemx = 'X'.
      lt_items-acctasscat = 'X'.
      lt_itemsx-ematerial = 'X'.
      lt_itemsx-plant = 'X'.
      lt_itemsx-quantity = 'X'.
      lt_itemsx-net_price = 'X'.
      lt_itemsx-po_price = 'X'.
      lt_itemsx-price_unit = 'X'.
      lt_itemsx-tax_code = 'X'.
      lt_itemsx-gr_ind = 'X'.
      lt_itemsx-ir_ind = 'X'.
      lt_itemsx-gr_basediv = 'X'.
      append lt_itemsx.
      clear lt_itemsx.

      " контировка
      lt_account-po_item = lt_selpos1-aktpo .
      lt_account-serial_no = '01' .
*      account-creat_date = sy-datum .
      lt_account-costcenter = lt_selpos1-kostl .
      lt_account-gl_account = lt_selpos1-sakto .
      lt_account-co_area = '1000' .
      lt_account-tax_code = lt_selpos1-mwskz .
      append lt_account.
      clear lt_account.

      lt_accountx-po_item = lt_selpos1-aktpo .
      lt_accountx-po_itemx = 'X' .
      lt_accountx-serial_no = 'X' .
      lt_accountx-serial_nox = 'X' .
*      accountx-creat_date = c_x .
      lt_accountx-costcenter = 'X' .
      lt_accountx-gl_account = 'X' .
      lt_accountx-co_area = 'X' .
      lt_accountx-tax_code = 'X' .
      append lt_accountx.
      clear lt_accountx.

    endloop.


    call function 'SAPGUI_PROGRESS_INDICATOR'
      exporting
        percentage = 5
        text       = 'Создание заказа на поставку...'.

    call function 'BAPI_PO_CREATE1'
      exporting
        poheader                     = ls_header
        poheaderx                    = ls_headerx
      importing
        exppurchaseorder             = l_purchaseorder
      tables
        return                       = lt_return[]
        poitem                       = lt_items[]
        poitemx                      = lt_itemsx[]
        poaccount                    = lt_account[]
        poaccountx                   = lt_accountx[]
        extensionin                  = lt_extensionin[]
              .



образец брал вот отсюда: http://sapnet.ru/viewtopic.php?t=268&highlight=bapipocreate1

Вроде все правильно заполнил...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание заказа на поставку из BAPI_PO_CREATE1
СообщениеДобавлено: Пн, мар 28 2011, 15:23 
Председатель
Председатель

Зарегистрирован:
Чт, май 10 2007, 09:15
Сообщения: 1558
В ошибке все написано, для указанного материала необходимо указывать контировку.
Соответственно, необходимо в BAPI_PO_CREATE1 необходимо заполнить еще контировку.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Создание заказа на поставку из BAPI_PO_CREATE1
СообщениеДобавлено: Вт, мар 29 2011, 06:49 
Ассистент
Ассистент

Зарегистрирован:
Вт, ноя 13 2007, 12:25
Сообщения: 40
Насчет контировки понял в чем ошибка - не было подтверждения в таблице флагов:
я указал
Code:
lt_items-acctasscat = 'X'.

а нужно было
Code:
lt_itemsx-acctasscat = 'X'.

глупо конечно)) но это машинально

Тем не менее исправление обнажило другую проблему: если ставлю контировку 'К', BAPI просит указать МВЗ, если 'X' - основной счет.
Я указываю их как в вышеупомянутом образце c SAPNET:
МВЗ:
lt_account-costcenter = lt_selpos1-kostl .
lt_accountx-costcenter = 'X' .
Основной счет:
lt_account-gl_account = lt_selpos1-sakto .
lt_accountx-gl_account = 'X' .

Значения в таблицы BAPI записываются и проверено, что с такими значениями МВЗ и контрольного счета ч-з тр. ME21N заказ на поставку создается.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание заказа на поставку из BAPI_PO_CREATE1
СообщениеДобавлено: Вт, мар 29 2011, 09:03 
Ассистент
Ассистент

Зарегистрирован:
Вт, ноя 13 2007, 12:25
Сообщения: 40
Тема закрыта - оказалось лишним для заполнения: lt_accountx-serial_nox = 'X' - убрал строчку и все заработало


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Создание заказа на поставку из BAPI_PO_CREATE1
СообщениеДобавлено: Вт, мар 29 2011, 09:05 
Председатель
Председатель

Зарегистрирован:
Чт, май 10 2007, 09:15
Сообщения: 1558
А через BAPI какие сообщения он тебе возвращает ?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB