Я нашел две функции, BAPI_PO_CREATE
и BAPI_PO_CREATE1
. Поскольку CREATE1
имеет более позднюю дату модификации, я предположил, что это будет лучший вариант для использования. В качестве примера я создаю довольно простую покупку без материала.
call function 'BAPI_PO_CREATE1'
exporting
poheader = po_header
poheaderx = po_header_x
testrun = abap_false
tables
return = returning
poitem = po_items
poitemx = po_items_x
poaccount = po_accounts
poaccountx = po_accounts_x
poschedule = po_schedule
poschedulex = po_schedule_x.
Таким образом, я использую счет ГК и элемент СПП в качестве объекта затрат:
append initial line to po_accounts assigning field-symbol(<po_account>).
<po_account>-po_item = current_position.
" Classes that call CONVERSION_EXIT
<po_account>-gl_account = /dim/cl_bonadm_exit=>int_saknr( <item>-gl_account ).
<po_account>-wbs_element = /dim/cl_bonadm_exit=>int_posnr( <item>-wbs_id ).
append initial line to po_accounts_x assigning field-symbol(<po_account_x>).
<po_account_x>-po_item = current_position.
<po_account_x>-po_itemx = abap_true.
<po_account_x>-gl_account = abap_true.
<po_account_x>-wbs_element = abap_true.
Однако я продолжаю получать сообщение об ошибке:
No instance of object type PurchaseOrder has been created. External reference:
Purchase order item 00010 still contains faulty account assignments
Can delivery date be met?
Account 475000 requires an assignment to a CO object
Чего не должно быть, когда я заполняю те же точные данные в ME21n, я все еще получаю предупреждение о дате доставки, но не об ошибке в позиции заказа на покупку. Я столкнулся с двумя разными заметками SAP, но ни один из них не может быть реализован. Кроме того, даже когда я удаляю элемент WBS из учетной записи, я все равно получаю сообщение об ошибке.
Я также пытался заполнить элемент WBS в поле объекта CO структуры BAPI, но это ничего не дало. Я могу отследить точку в BAPI, где выдается это сообщение об ошибке, но я не могу понять, почему это происходит.
Весь метод: http://hastebin.com/ufarisozav.xml