Получилось! Всем большое спасибо за ответы.
Дело было в правильном указании поля COND_TYPE, я просто не понимал, откуда это можно взять.
А взял я в итоге из ekbz.
Вываливаю свой код, сорри если где-то не очень красивый, но работает ))
Вдруг кому-то поможет
Code:
FORM run_transaction_miro3.
DATA: lwa_header TYPE BAPI_INCINV_CREATE_HEADER,
lh_invnumb LIKE BAPI_INCINV_FLD-INV_DOC_NO,
lh_gjahr LIKE BAPI_INCINV_FLD-FISC_YEAR,
lwa_item TYPE BAPI_INCINV_CREATE_ITEM,
lit_items TYPE TABLE OF BAPI_INCINV_CREATE_ITEM,
RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE,
addressdata TYPE BAPI_INCINV_CREATE_ADDRESSDATA,
lit_lips TYPE TABLE OF lips,
lwa_lips TYPE lips,
lit_likp TYPE TABLE OF likp,
lwa_likp TYPE likp,
lh_ebelp LIKE ekpo-ebelp,
lh_netpr LIKE ekpo-netpr,
lwa_ekpo TYPE ekpo,
lwa_ekko TYPE ekko,
lwa_ek08bn TYPE ek08bn,
lit_ek08bn TYPE TABLE OF ek08bn,
lwa_ziic_created TYPE zsd_ziic_created,
lh_text TYPE STRING,
opt LIKE ctu_params,
lh_wrbtr LIKE rseg-wrbtr,
lh_has_created(1) TYPE C,
lh_error(1) TYPE C.
SELECT *
FROM lips
INTO CORRESPONDING FIELDS OF TABLE lit_lips
WHERE vbeln IN S_VBELN
ORDER BY vgbel vgpos.
IF sy-subrc <> 0.
MESSAGE 'Поставка не найдена, проверьте ввод' TYPE 'I'.
RETURN.
ENDIF.
DELETE ADJACENT DUPLICATES FROM lit_lips COMPARING vgbel vgpos.
READ TABLE lit_lips INDEX 1 INTO lwa_lips.
lwa_header-comp_code = '2000'.
lwa_header-invoice_ind = 'X'.
lwa_header-doc_type = 'RE'.
lwa_header-doc_date = p_bldat.
lwa_header-pstng_date = p_budat.
lwa_header-bline_date = p_bdate.
lwa_header-diff_inv = p_lifnr.
lwa_header-calc_tax_ind = 'X'.
IF P_CURR IS NOT INITIAL.
lwa_header-currency = P_CURR.
ELSE.
lwa_header-currency = 'RUB'.
ENDIF.
lwa_header-currency_iso = lwa_header-currency.
SELECT SINGLE zaccount_num
INTO lwa_header-ref_doc_no
FROM likp
WHERE vbeln = lwa_lips-vbeln.
CLEAR lh_has_created.
LOOP AT lit_lips INTO lwa_lips.
lh_ebelp = lwa_lips-vgpos.
SELECT SINGLE *
FROM ekpo
INTO CORRESPONDING FIELDS OF lwa_ekpo
WHERE ebeln = lwa_lips-vgbel
AND ebelp = lh_ebelp.
SELECT SINGLE *
FROM ekko
INTO CORRESPONDING FIELDS OF lwa_ekko
WHERE ebeln = lwa_ekpo-ebeln.
CHECK sy-subrc = 0.
CLEAR lwa_item.
lwa_item-invoice_doc_item = sy-tabix.
lwa_item-po_number = lwa_ekpo-ebeln.
lwa_item-po_item = lwa_ekpo-ebelp.
lwa_item-po_unit = lwa_ekpo-meins.
lwa_item-po_unit_iso = lwa_ekpo-meins.
lwa_item-tax_code = P_TXCODE.
" Просто позиции - тянем цены из заказов
IF p_wxbkn = '1'.
PERFORM convert_summ USING lwa_header-pstng_date
lwa_ekko-waers
lwa_header-currency
lwa_ekpo-netwr
'M'
CHANGING lh_netpr.
lwa_item-item_amount = lh_netpr.
lwa_item-quantity = lwa_ekpo-menge.
lwa_header-gross_amount = lwa_header-gross_amount + lwa_item-item_amount.
" Доп. затраты
ELSEIF p_wxbkn = '2'.
PERFORM get_cond_type USING lwa_ekpo-ebeln lwa_ekpo-ebelp p_lifnr
CHANGING lwa_item-cond_type.
lwa_item-FREIGHT_VEN = p_lifnr.
lh_ebelp = lwa_lips-vgpos.
REFRESH lit_ek08bn[].
CALL FUNCTION 'ME_READ_COND_INVOICE'
EXPORTING
i_ebeln = lwa_lips-vgbel
i_ebelp = lh_ebelp
i_lifnr = p_lifnr
TABLES
XEK08BN = lit_ek08bn
EXCEPTIONS
error_message = 02.
IF lit_ek08bn[] IS NOT INITIAL.
READ TABLE lit_ek08bn INDEX 1 INTO lwa_ek08bn.
PERFORM convert_summ USING lwa_header-pstng_date
'RUB'
lwa_header-currency
lwa_ek08bn-wewrt
'M'
CHANGING lh_netpr.
lwa_item-item_amount = lh_netpr.
lwa_item-quantity = lwa_ek08bn-wemng.
ENDIF.
ENDIF.
IF ( p_wxbkn = '2' AND ( lwa_item-item_amount IS NOT INITIAL OR lwa_item-quantity IS NOT INITIAL )
AND lwa_item-cond_type IS NOT INITIAL )
OR p_wxbkn <> '2'.
APPEND lwa_item TO lit_items.
lh_has_created = 'X'.
ENDIF.
ENDLOOP.
IF lh_has_created IS INITIAL AND p_wxbkn = '2'.
MESSAGE 'Строки не выбраны, проверьте наличие прихода и введенных доп. затрат в документе фрахта' TYPE 'I'.
RETURN.
ENDIF.
" CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE' " Эта BAPI сразу проводит
CALL FUNCTION 'BAPI_INCOMINGINVOICE_PARK' " Эта BAPI предварительно сохраняет
EXPORTING
HEADERDATA = lwa_header
ADDRESSDATA = addressdata
IMPORTING
INVOICEDOCNUMBER = lh_invnumb
FISCALYEAR = lh_gjahr
TABLES
ITEMDATA = lit_items
RETURN = RETURN.
READ TABLE RETURN WITH KEY TYPE = 'E'.
IF sy-subrc = 0.
lh_error = 'X'.
ENDIF.
READ TABLE RETURN WITH KEY TYPE = 'A'.
IF sy-subrc = 0.
lh_error = 'X'.
ENDIF.
IF lh_error = 'X'.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
write: / 'Произошла ошибка:'.
LOOP AT RETURN WHERE TYPE = 'A' OR TYPE = 'E'.
write: / RETURN-MESSAGE.
ENDLOOP.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
CALL FUNCTION 'DEQUEUE_ALL'.
ENDFORM.
* Возвращает тип позиции для строки заказа на поставку на доп. затраты
FORM get_cond_type USING pi_ebeln LIKE ekko-ebeln
pi_ebelp LIKE ekpo-ebelp
pi_lifnr LIKE ekko-lifnr
CHANGING pc_cond_type TYPE kschl.
DATA: lit_ekbz TYPE TABLE OF ekbz,
lwa_ekbz TYPE ekbz.
SELECT *
FROM ekbz
INTO CORRESPONDING FIELDS OF TABLE lit_ekbz
UP TO 1 ROWS
WHERE ebeln = pi_ebeln
AND ebelp = pi_ebelp
AND lifnr = pi_lifnr
AND vgabe = '1' " Приход
ORDER BY belnr DESCENDING.
READ TABLE lit_ekbz INDEX 1 INTO lwa_ekbz.
pc_cond_type = lwa_ekbz-kschl.
ENDFORM. " get_cond_type