‎2007 Sep 25 7:38 PM
Hi ,
I am creating invoice through this bapi, but when i am excuting i am getting error message as
E
Document contains same order item more than once
Code:
REPORT ztest.
*----
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.
Error flag *
DATA: l_errflag(1) TYPE c.
*----
Build Invoice header
*----
Document Type (Invoice)
gs_headerdata-invoice_ind = 'X'.
*gs_headerdata-doc_type = 51. "RK
Document Date
gs_headerdata-doc_date = l_date.
Posting Date
gs_headerdata-pstng_date = l_date.
Reference Document No
gs_headerdata-ref_doc_no = 'T2'.
gs_headerdata-gross_amount = 60.
Currency
gs_headerdata-currency = 'USD'.
Company Code
gs_headerdata-comp_code = '1002'.
Baseline Date
gs_headerdata-bline_date = l_date.
*
*Tax Indicator
gs_headerdata-calc_tax_ind = 'X'. "RK
*----
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 = 4500000017.
Purchase Order Item
gs_itemdata-po_item = '00020'.
Item Amount
gs_itemdata-item_amount = 30.
Quantity
gs_itemdata-quantity = 10.
gs_itemdata-po_unit = 'EA'.
gs_itemdata-tax_code = 'E0'.
*gs_itemdata-taxjurcode = '0100000000'. "RK
APPEND gs_itemdata TO gt_itemdata.
Document Item
gs_itemdata-invoice_doc_item = 000002.
Purchase Order Number
gs_itemdata-po_number = 4500000017.
Purchase Order Item
gs_itemdata-po_item = '00020'.
Item Amount
gs_itemdata-item_amount = 30.
Quantity
gs_itemdata-quantity = 10.
gs_itemdata-po_unit = 'EA'.
gs_itemdata-tax_code = 'E0'.
*gs_itemdata-taxjurcode = '0100000000'. "RK
APPEND gs_itemdata TO gt_itemdata.
*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
‎2007 Sep 25 7:45 PM
Asha,
Pl try as indicated below...
REPORT ztest.
*----
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.
Error flag *
DATA: l_errflag(1) TYPE c.
*----
Build Invoice header
*----
Document Type (Invoice)
gs_headerdata-invoice_ind = 'X'.
*gs_headerdata-doc_type = 51. "RK
Document Date
gs_headerdata-doc_date = l_date.
Posting Date
gs_headerdata-pstng_date = l_date.
Reference Document No
gs_headerdata-ref_doc_no = 'T2'.
gs_headerdata-gross_amount = 60.
Currency
gs_headerdata-currency = 'USD'.
Company Code
gs_headerdata-comp_code = '1002'.
Baseline Date
gs_headerdata-bline_date = l_date.
*
*Tax Indicator
gs_headerdata-calc_tax_ind = 'X'. "RK
*----
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 = 4500000017.
Purchase Order Item
gs_itemdata-po_item = '00020'.
Item Amount
gs_itemdata-item_amount = 30.
Quantity
gs_itemdata-quantity = 10.
gs_itemdata-po_unit = 'EA'.
gs_itemdata-tax_code = 'E0'.
*gs_itemdata-taxjurcode = '0100000000'. "RK
APPEND gs_itemdata TO gt_itemdata.
<b>CLEAR: gs_itemdata, gt_itemdata.</b>
Document Item
gs_itemdata-invoice_doc_item = 000002.
Purchase Order Number
gs_itemdata-po_number = 4500000017.
Purchase Order Item
gs_itemdata-po_item = '00020'.
Item Amount
gs_itemdata-item_amount = 30.
Quantity
gs_itemdata-quantity = 10.
gs_itemdata-po_unit = 'EA'.
gs_itemdata-tax_code = 'E0'.
*gs_itemdata-taxjurcode = '0100000000'. "RK
APPEND gs_itemdata TO gt_itemdata.
<b>CLEAR: gs_itemdata, gt_itemdata.</b>
*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
Message was edited by:
Karthik