07-23-2007 4:30 PM
Hi all,
Iam using the BAPI "' BAPI_INCOMINGINVOICE_CREATE''. and iam passsing the mandatary data ie Header data and Item data Only. when executing it is giving error like " Enter a reference to a valid goods receipt (line 000001)''. How to solve this ?
If any one is having some tested data(header data and Item data) , please send it to me..
Thanks in Advance.
Krishnasri....
07-23-2007 4:35 PM
Hi,
See the sample code for the same BAPI and modify accordingly
REPORT z_yaktest3 NO STANDARD PAGE HEADING MESSAGE-ID zi455.
*----
Internal table declaration *
----
DATA: gt_headerdata TYPE STANDARD TABLE OF bapi_incinv_create_header
INITIAL SIZE 0,
gt_itemdata TYPE STANDARD TABLE OF bapi_incinv_create_item
INITIAL SIZE 0,
gt_accountingdata TYPE STANDARD TABLE OF bapi_incinv_create_account
INITIAL SIZE 0,
gt_return TYPE STANDARD TABLE OF bapiret2
INITIAL SIZE 0.
DATA: gs_headerdata LIKE bapi_incinv_create_header.
DATA: gs_itemdata LIKE bapi_incinv_create_item.
DATA: gs_accountingdata TYPE bapi_incinv_create_account.
DATA: gs_return TYPE bapiret2.
DATA: l_date TYPE sy-datum.
l_date = sy-datum - 15.
Error flag *
DATA: l_errflag(1) TYPE c.
*----
Build Invoice header
*----
Document Type (Invoice)
gs_headerdata-invoice_ind = 'X'.
gs_headerdata-doc_type = 51.
Document Date
gs_headerdata-doc_date = l_date.
Posting Date
gs_headerdata-pstng_date = l_date.
Reference Document No
gs_headerdata-ref_doc_no = 323348.
gs_headerdata-gross_amount = 31.
Currency
gs_headerdata-currency = 'USD'.
Company Code
gs_headerdata-comp_code = 'D3'.
Baseline Date
gs_headerdata-bline_date = l_date.
*
**Tax Indicator
*gs_headerdata-calc_tax_ind = 'X'.
*----
Build order item(s) - Only 1 is used in this example
*----
Document Item
gs_itemdata-invoice_doc_item = 000001.
Purchase Order Number
gs_itemdata-po_number = 3700000011.
Purchase Order Item
gs_itemdata-po_item = 00010.
Quantity
gs_itemdata-quantity = 31.
gs_itemdata-po_unit = 'Z00'.
Item Amount
gs_itemdata-item_amount = 31.
gs_itemdata-tax_code = 'O0'.
gs_itemdata-taxjurcode = '0100000000'.
APPEND gs_itemdata TO gt_itemdata.
Document Item
*gs_itemdata-invoice_doc_item = '00002'.
*
Purchase Order Number
*gs_itemdata-po_number = '4700000158'.
*
Purchase Order Item
*gs_itemdata-po_item ='00020' .
*
Quantity
*gs_itemdata-quantity = '5'.
*gs_itemdata-po_unit = 'Z00'.
*
Item Amount
*gs_itemdata-item_amount = '5'.
*gs_itemdata-tax_code = 'O0'.
*gs_itemdata-taxjurcode = '0100000000'.
*
*APPEND gs_itemdata TO gt_itemdata.
*
Accounting Data
***gs_accountingdata-costcenter = 'DUMMY CCTR'.
*gs_accountingdata-invoice_doc_item = '00001'.
*gs_accountingdata-xunpl = 'X'.
*gs_accountingdata-tax_code = 'O0'.
*gs_accountingdata-taxjurcode = '0100000000'.
*gs_accountingdata-ITEM_AMOUNT = 100.
*gs_accountingdata-gl_account = '0003805101'.
*
*APPEND gs_accountingdata TO gt_accountingdata.
*CLEAR :gs_accountingdata.
*Call the BAPI to Create the Return Order
data: gv_INVOICE type BAPI_INCINV_FLD-INV_DOC_NO,
gv_YEAR type BAPI_INCINV_FLD-FISC_YEAR.
CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'
EXPORTING
headerdata = gs_headerdata
IMPORTING
INVOICEDOCNUMBER = gv_INVOICE
FISCALYEAR = gv_YEAR
TABLES
return = gt_return
itemdata = gt_itemdata.
accountingdata = gt_accountingdata.
PERFORM error.
*----
Check and write Return table
*----
FORM error.
LEAVE TO LIST-PROCESSING.
CLEAR l_errflag.
LOOP AT gt_return INTO gs_return.
WRITE: / gs_return-type, gs_return-message(200).
IF gs_return-type = 'E'.
l_errflag = 'X'.
ENDIF.
ENDLOOP.
PERFORM commit.
ENDFORM. " ERROR INPUT
*----
No errors - Commit
*----
FORM commit.
IF l_errflag IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ENDIF.
ENDFORM. " COMMIT INPUT
Reward points if useful
Regards
Sudheer
07-23-2007 4:32 PM
hi Krishna,
Check this code out
LOOP AT t_upload.
*** HEADER ***
headerdata-invoice_ind = 'X'.
headerdata-doc_type = 'RI'.
CONCATENATE t_upload-bldat+6(4) t_upload-bldat+3(2) t_upload-bldat+0(2)
INTO headerdata-doc_date.
CONCATENATE t_upload-budat+6(4) t_upload-budat+3(2) t_upload-budat+0(2)
INTO headerdata-pstng_date.
CONCATENATE t_upload-zfbdt+6(4) t_upload-zfbdt+3(2) t_upload-zfbdt+0(2)
INTO headerdata-bline_date.
headerdata-comp_code = t_upload-bukrs.
headerdata-gross_amount = t_upload-wrbtr.
headerdata-header_txt = 'PMIS-SAP'.
headerdata-ref_doc_no = t_upload-bktxt.
SELECT SINGLE zterm waers
INTO (ekko-zterm, ekko-waers)
FROM ekko WHERE ebeln = t_upload-ebeln.
headerdata-currency = ekko-waers.
headerdata-pmnttrms = ekko-zterm.
*** ITEM ***
w_itemdata-invoice_doc_item = '000001'.
w_itemdata-po_number = t_upload-ebeln.
w_itemdata-po_item = t_upload-ebelp.
w_itemdata-tax_code = t_upload-mwskz.
w_itemdata-item_amount = t_upload-iwrbt.
w_itemdata-quantity = t_upload-imeng.
w_itemdata-po_unit = t_upload-meins.
APPEND w_itemdata TO itemdata.
CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'
EXPORTING
headerdata = headerdata
* ADDRESSDATA =
IMPORTING
invoicedocnumber = invoicedocnumber
fiscalyear = fiscalyear
TABLES
itemdata = itemdata
* NFMETALLITMS =
* ACCOUNTINGDATA =
* GLACCOUNTDATA =
* MATERIALDATA =
* TAXDATA =
* WITHTAXDATA =
* VENDORITEMSPLITDATA =
return = it_return.
IF invoicedocnumber IS NOT INITIAL.
***** Commit the Transaction *****
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ENDIF.
ENDLOOP.
07-23-2007 4:52 PM
Hi Santosh ,
Could you please send it in detail...?
Thanks in Advance
KrishnSri..
07-23-2007 4:35 PM
Hi,
See the sample code for the same BAPI and modify accordingly
REPORT z_yaktest3 NO STANDARD PAGE HEADING MESSAGE-ID zi455.
*----
Internal table declaration *
----
DATA: gt_headerdata TYPE STANDARD TABLE OF bapi_incinv_create_header
INITIAL SIZE 0,
gt_itemdata TYPE STANDARD TABLE OF bapi_incinv_create_item
INITIAL SIZE 0,
gt_accountingdata TYPE STANDARD TABLE OF bapi_incinv_create_account
INITIAL SIZE 0,
gt_return TYPE STANDARD TABLE OF bapiret2
INITIAL SIZE 0.
DATA: gs_headerdata LIKE bapi_incinv_create_header.
DATA: gs_itemdata LIKE bapi_incinv_create_item.
DATA: gs_accountingdata TYPE bapi_incinv_create_account.
DATA: gs_return TYPE bapiret2.
DATA: l_date TYPE sy-datum.
l_date = sy-datum - 15.
Error flag *
DATA: l_errflag(1) TYPE c.
*----
Build Invoice header
*----
Document Type (Invoice)
gs_headerdata-invoice_ind = 'X'.
gs_headerdata-doc_type = 51.
Document Date
gs_headerdata-doc_date = l_date.
Posting Date
gs_headerdata-pstng_date = l_date.
Reference Document No
gs_headerdata-ref_doc_no = 323348.
gs_headerdata-gross_amount = 31.
Currency
gs_headerdata-currency = 'USD'.
Company Code
gs_headerdata-comp_code = 'D3'.
Baseline Date
gs_headerdata-bline_date = l_date.
*
**Tax Indicator
*gs_headerdata-calc_tax_ind = 'X'.
*----
Build order item(s) - Only 1 is used in this example
*----
Document Item
gs_itemdata-invoice_doc_item = 000001.
Purchase Order Number
gs_itemdata-po_number = 3700000011.
Purchase Order Item
gs_itemdata-po_item = 00010.
Quantity
gs_itemdata-quantity = 31.
gs_itemdata-po_unit = 'Z00'.
Item Amount
gs_itemdata-item_amount = 31.
gs_itemdata-tax_code = 'O0'.
gs_itemdata-taxjurcode = '0100000000'.
APPEND gs_itemdata TO gt_itemdata.
Document Item
*gs_itemdata-invoice_doc_item = '00002'.
*
Purchase Order Number
*gs_itemdata-po_number = '4700000158'.
*
Purchase Order Item
*gs_itemdata-po_item ='00020' .
*
Quantity
*gs_itemdata-quantity = '5'.
*gs_itemdata-po_unit = 'Z00'.
*
Item Amount
*gs_itemdata-item_amount = '5'.
*gs_itemdata-tax_code = 'O0'.
*gs_itemdata-taxjurcode = '0100000000'.
*
*APPEND gs_itemdata TO gt_itemdata.
*
Accounting Data
***gs_accountingdata-costcenter = 'DUMMY CCTR'.
*gs_accountingdata-invoice_doc_item = '00001'.
*gs_accountingdata-xunpl = 'X'.
*gs_accountingdata-tax_code = 'O0'.
*gs_accountingdata-taxjurcode = '0100000000'.
*gs_accountingdata-ITEM_AMOUNT = 100.
*gs_accountingdata-gl_account = '0003805101'.
*
*APPEND gs_accountingdata TO gt_accountingdata.
*CLEAR :gs_accountingdata.
*Call the BAPI to Create the Return Order
data: gv_INVOICE type BAPI_INCINV_FLD-INV_DOC_NO,
gv_YEAR type BAPI_INCINV_FLD-FISC_YEAR.
CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'
EXPORTING
headerdata = gs_headerdata
IMPORTING
INVOICEDOCNUMBER = gv_INVOICE
FISCALYEAR = gv_YEAR
TABLES
return = gt_return
itemdata = gt_itemdata.
accountingdata = gt_accountingdata.
PERFORM error.
*----
Check and write Return table
*----
FORM error.
LEAVE TO LIST-PROCESSING.
CLEAR l_errflag.
LOOP AT gt_return INTO gs_return.
WRITE: / gs_return-type, gs_return-message(200).
IF gs_return-type = 'E'.
l_errflag = 'X'.
ENDIF.
ENDLOOP.
PERFORM commit.
ENDFORM. " ERROR INPUT
*----
No errors - Commit
*----
FORM commit.
IF l_errflag IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ENDIF.
ENDFORM. " COMMIT INPUT
Reward points if useful
Regards
Sudheer
07-24-2007 5:37 AM
hi sudheer good morning,
thanks for the code, we have followed the same and when executed, instead of generating INVOICE ACCOUNTING DOCUMENT it is taking us to the initial screen where we input data, what could be the reason???? early response is appreciated.
Sri
07-23-2007 5:14 PM
Hi Sri,
Please check if the PO against which you are entering the invoice needs a GR (GR based IV or GR flag set in PO). If it is so, make sure that a GR is already posted before you enter the invoice into the system. If the GR is already posted, then make sure that you are refering to that particular GR using BOL(Bill of Lading number) in the invoice that you are entering to make sure that you are entering invoice against that particular Goods Receipt.
Thanks,
Vinod M.
PS: Reward points if helpful.