2007 Jan 23 8:51 PM
Hi,
I am using BAPI_INCOMINGINVOICE_CREATE to create invoice which is working fine. But for some POs which does not have GR-Based IV checked in its Item data > Invoice tab the BAPI fails with the error: Enter goods receipt data only when working with GR-based IV. My question is: Is there any field to be set at BAPI item data for this kind of POs? Please let me know if you want my code.
Thank you,
Surya.
Surya,
Can you post a Goods receipt(MIGO) and Invoice (MIRO) online when you don't check the GR based flag on the PO?
2007 Jan 23 9:18 PM
Surya,
Can you post a Goods receipt(MIGO) and Invoice (MIRO) online when you don't check the GR based flag on the PO?
2007 Jan 23 9:24 PM
Hi,
Don't populate the following fields if it is not GR-Based IV.
ref_doc
ref_doc_year
ref_doc_it
Thanks,
Naren
2007 Jan 23 10:31 PM
Kris,
I have not done this let me try it.
Naren,
I will try your suggsion also.
Thank you for your quick response.
-Thank you,
Surya.
2007 Jan 24 12:13 AM
Hi,
You can check this sample code which creates invoice for the input PO..
TABLES: ekko.
PARAMETERS: p_ebeln TYPE ebeln OBLIGATORY.
DATA: itab LIKE ekpo OCCURS 0 WITH HEADER LINE.
DATA: invoice_items LIKE bapi_incinv_create_item OCCURS 0
WITH HEADER LINE.
DATA: return LIKE bapiret2 OCCURS 0 WITH HEADER LINE.
DATA: invheader TYPE bapi_incinv_create_header.
DATA: v_counter TYPE rblgp.
DATA: v_amount TYPE rbkp-rmwwr,
v_invoice TYPE bapi_incinv_fld-inv_doc_no,
v_year TYPE bapi_incinv_fld-fisc_year.
START-OF-SELECTION.
Get ekko.
SELECT SINGLE * FROM ekko
WHERE ebeln = p_ebeln.
IF sy-subrc <> 0.
MESSAGE s208(00) WITH 'INVALID PO'.
LEAVE LIST-PROCESSING.
ENDIF.
Get ekpo.
SELECT * FROM ekpo
INTO TABLE itab
WHERE ebeln = p_ebeln.
IF sy-subrc <> 0.
MESSAGE s208(00) WITH 'INVALID PO'.
LEAVE LIST-PROCESSING.
ENDIF.
Prepare the line items.
LOOP AT itab.
Increment the counter.
v_counter = v_counter + 1.
Populate the invoice line item details.
invoice_items-invoice_doc_item = v_counter.
invoice_items-po_number = itab-ebeln.
invoice_items-po_item = itab-ebelp.
invoice_items-item_amount = itab-netpr *
itab-menge.
invoice_items-quantity = itab-menge.
invoice_items-po_unit = itab-meins.
APPEND invoice_items.
v_amount = v_amount + invoice_items-item_amount.
ENDLOOP.
Prepare the header
invheader-doc_date = sy-datum.
invheader-pstng_date = sy-datum .
invheader-comp_code = ekko-bukrs.
invheader-invoice_ind = 'X'.
invheader-currency = ekko-waers.
invheader-ref_doc_no = 'Test Invoice'.
invheader-gross_amount = v_amount.
Call the BAPI
CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'
EXPORTING
headerdata = invheader
IMPORTING
invoicedocnumber = v_invoice
fiscalyear = v_year
TABLES
itemdata = invoice_items
return = return.
Check the return code..
LOOP AT return
TRANSPORTING NO FIELDS
WHERE type = 'E' OR type = 'A'.
EXIT.
ENDLOOP.
IF sy-subrc = 0.
WRITE: / 'Error in creating'.
ELSE.
COMMIT WORK.
WRITE: / 'Invoice ', v_invoice, ' Year ', v_year, ' Created'.
ENDIF.
Thanks,
Naren
2007 Jan 24 3:31 PM
Hi Naren,
In your following sample code, you are not passing values to ref_doc, ref_doc_year, and ref_doc_it. So all your POs with GR-Based IV unchecked ?What are these fields use?
Thank you,
Surya.
2007 Jan 24 4:57 PM
Surya,
Please see the documentation for BAPI_INCOMINGINVOICE_CREATE.It is pretty extensive.
Ref_doc fields are populated for GR based invoices with GR document details.
regards
2007 Jan 24 3:47 AM
Hi,
Try this passing
CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'
EXPORTING
headerdata = i_headerdata
IMPORTING
invoicedocnumber = v_invoicedocnumber
fiscalyear = v_fiscalyear
TABLES
itemdata = i_itemdata
accountingdata = i_accountingdata
glaccountdata = i_glaccountdata
return = i_return.
IF i_return[] IS INITIAL.
COMMIT WORK.
ELSE.
ROLLBACK.
ENDIF.
2007 Jan 24 5:00 PM
Hi,
If it is GR based based Invoice..Then in the fields REF_DOC..you have to populate the Material document number that created after the goods receipt..
SO in your case you don't have to populate those fields..
Thanks,
Naren
2007 Jan 24 7:10 PM
Naren,
I have both kinds of POs, that means some are GR-Based IV checked and some not checked. Right now I does not have a check on whether GR-Based IV checked or not. I can change the code accordingly. Here are the values I am passing to these fields now. Please let me if I am passing wrong values.
ref_doc = wa_ekbe-lfbnr (EKBE-LFBNR)
ref_doc_year = wa_ekbe-lfpos (EKBE-LFPOS)
ref_doc_it = wa_ekbe-gjahr (Is EKBE-GJAHR the right field? I just saw a field EKBE-LFGJA )
Kris:
I will look into the documentation also.
Thank you,
Surya.
| User | Count |
|---|---|
| 6 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |