BAPI_PO_CREATE1 Счет 475000 требует присвоения объекту CO

Я нашел две функции, 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


person user3704258    schedule 02.11.2016    source источник


Ответы (1)


Вам также потребуется заполнить таблицу poaccountx (как показано в документации функционального модуля), иначе система может проигнорировать некоторые или все данные, вставленные в таблицу poaccount.

person vwegert    schedule 02.11.2016
comment
Я также заполнил это, я просто не включил фрагмент кода, добавленный в сообщение - person user3704258; 02.11.2016
comment
Вот почему так важен полный образец. Вы также заполнили SERIAL_NO и забыли вставить это? - person vwegert; 02.11.2016
comment
нет, позвольте мне бросить что-нибудь в него и посмотреть. Изменить: ничего не изменилось, я включил фрагмент всего метода. - person user3704258; 02.11.2016
comment
Вам нужно указать SERIAL_NO как в poaccount, так и в poaccountx. - person vwegert; 02.11.2016
comment
Я заполнил эти поля, это не имеет значения. Есть также кое-что, что я нахожу довольно странным. Когда я не предоставляю учетную запись GL или использую другую учетную запись, таблица, которую я отправляю в BAPI, содержит другую учетную запись GL (например, я ввожу 800 и вижу, что она превращается в 475000, и сообщает об этом) - person user3704258; 02.11.2016
comment
Как говорится, учетная запись является элементом затрат и поэтому нуждается в объекте CO. Это сообщение KI 235. Найдите его в SAP-нотах. Вы найдете множество заметок SAP для этого. Если WBS-элемент не является статистическим, он должен работать. Может быть, попробовать просто для целей тестирования центра затрат. См. также SAP-ноту 2217322. - person Tapio Reisinger; 03.11.2016
comment
Проверьте также категорию контировки в отдельной позиции и прочтите документацию по BAPI. Это хорошо задокументировано. - person Tapio Reisinger; 03.11.2016