on 08-16-2017 8:58 PM
Hi Gurus,
Any one can suggest which BAPI will work to create a Invoice against a contract(Outline Agreement).
I am using BAPI_INCOMINGINVOICE_CREATE , but its not working. But the same BAPI is working when I create invoice for Purchase order.
Its very urgent, thanks in advance.
Regards,
Ayyappan.V
Hi All,
I found a way to create an invoice for a contract using BAPI_INCOMINGINVOICE_CREATE.
There is no direct bapi available to create invoice for a contract, we have to enhance the std. bapi BAPI_INCOMINGINVOICE_CREATE.
Go inside the bapi and find the below Enhancement spot and create custom implementation for the same.
ENHANCEMENT-POINT BAPI_INCOMINGINVOICE_CREATE_02 SPOTS ES_SAPLMRM_BAPI.
Try modifying the TAB_DRSEG internal table by passing contract no and contract item, company code, vendor, plant as below.
ENHANCEMENT 1 ZAP_I126_CONTRACT_POSTING. "active version
*----------------------------------------------------------------------*
*Purpose: To create a invoice based on a contract. This Enhancment
*will be called only for specific FSD-> Contract related invoice creation
*scenario
*----------------------------------------------------------------------*
*Local Variable & Internal table Declaration
*----------------------------------------------------------------------*
DATA:
lv_ricefid TYPE char4,
lt_frseg LIKE tab_frseg.
*----------------------------------------------------------------------*
*Local Field Symbol Declaration
*----------------------------------------------------------------------*
FIELD-SYMBOLS:
<fs_cobl_mrm> TYPE cobl_mrm.
*----------------------------------------------------------------------*
*Local Constant Declaration
*----------------------------------------------------------------------*
CONSTANTS:
lc_i126 TYPE char20 VALUE 'I126_CONTRACT_INV',
lc_ricefid TYPE char20 VALUE 'RICEF_ID',
lc_c TYPE char1 VALUE 'C'.
*---Check whether the RICEF is I126 or not---*
SORT extensionin ASCENDING BY structure.
READ TABLE extensionin INTO DATA(lw_extensionin)
WITH KEY structure = lc_ricefid.
IF sy-subrc = 0.
IF lw_extensionin-valuepart1 = lc_i126.
IF tab_frseg IS NOT INITIAL.
*---Populating Contract details---*
LOOP AT tab_frseg INTO DATA(lw_frseg).
lw_frseg-erp_contract_id = lw_frseg-ebeln."Contract No
lw_frseg-erp_contract_itm = lw_frseg-ebelp."Contract Item
lw_frseg-ebeln = space.
lw_frseg-ebelp = space.
lw_frseg-xekbe = abap_true.
lw_frseg-lifnr = s_rbkpv-lifnr."Vendor
lw_frseg-koart = lc_c.
*Populate a logic to retrieve plant from lw_frseg-ebeln
lw_frseg-bwkey = 'OCPP'.
LOOP AT lw_frseg-cobl_mrm ASSIGNING <fs_cobl_mrm>.
<fs_cobl_mrm>-xunpl = abap_true.
<fs_cobl_mrm>-bukrs = s_rbkpv-bukrs.
ENDLOOP.
APPEND lw_frseg TO lt_frseg.
CLEAR: lw_frseg.
ENDLOOP.
REFRESH: tab_frseg.
*---Assigning back the modified values---*
tab_frseg = lt_frseg.
ENDIF.
ENDIF.
ENDIF.
ENDENHANCEMENT.
Sample program for creation of invoice for a contract.
DATA:lw_headerdata TYPE bapi_incinv_create_header,
lt_itemdata TYPE TABLE OF bapi_incinv_create_item,
lw_itemdata TYPE bapi_incinv_create_item,
lt_accountdata TYPE TABLE OF bapi_incinv_create_account,
lw_accountdata TYPE bapi_incinv_create_account,
lt_glaccount TYPE TABLE OF bapi_incinv_create_gl_account,
lw_glaccount TYPE bapi_incinv_create_gl_account,
lt_bapirettab TYPE bapirettab,
lv_invoicedocu LIKE bapi_incinv_fld-inv_doc_no,
lv_fyear LIKE bapi_incinv_fld-fisc_year,
lt_bapiret2 TYPE STANDARD TABLE OF bapiret2,
lt_extensionin TYPE TABLE OF bapiparex,
lw_extensionin TYPE bapiparex,
lw_i126_extn TYPE zst_i126_contractinvoice.
lw_headerdata-invoice_ind = abap_true.
lw_headerdata-doc_type = 'RE'.
lw_headerdata-doc_date = sy-datum.
lw_headerdata-pstng_date = sy-datum.
lw_headerdata-comp_code = 'XXXX'. "Pass relevant compcode
lw_headerdata-currency = 'USD'.
lw_headerdata-gross_amount = 5.
lw_headerdata-pmnttrms = 'B040'.
lw_headerdata-calc_tax_ind = abap_true.
lw_headerdata-header_txt = 'FSD-I126'.
*Item Details
lw_itemdata-invoice_doc_item = 1.
lw_itemdata-po_number = 4910000012.
lw_itemdata-po_item = 30.
*lw_itemdata-tax_code = 'EX'.
*lw_itemdata-taxjurcode = 'WI0010000'.
lw_itemdata-item_amount = 2.
lw_itemdata-po_unit = 'EA'.
lw_itemdata-quantity = 1.
APPEND lw_itemdata TO lt_itemdata.
lw_itemdata-invoice_doc_item = 2.
lw_itemdata-po_number = 4910000012.
lw_itemdata-po_item = 10.
*lw_itemdata-tax_code = 'EX'.
*lw_itemdata-taxjurcode = 'WI0010000'.
lw_itemdata-item_amount = 3.
lw_itemdata-po_unit = 'EA'.
lw_itemdata-quantity = 1.
APPEND lw_itemdata TO lt_itemdata.
*GL Account Details
lw_accountdata-invoice_doc_item = 1.
lw_accountdata-serial_no = 01.
lw_accountdata-taxjurcode = 'WI0010000'.
lw_accountdata-tax_code = 'EX'.
lw_accountdata-gl_account = '0713003000'.
lw_accountdata-quantity = 1.
lw_accountdata-po_unit = 'EA'.
lw_accountdata-item_amount = 2.
lw_accountdata-orderid = '001000000000'.
APPEND lw_accountdata TO lt_accountdata.
lw_accountdata-invoice_doc_item = 2.
lw_accountdata-serial_no = 02.
lw_accountdata-taxjurcode = 'WI0010000'.
lw_accountdata-tax_code = 'EX'.
lw_accountdata-gl_account = '0713003000'.
lw_accountdata-quantity = 1.
lw_accountdata-item_amount = 3.
lw_accountdata-orderid = '001000000000'.
APPEND lw_accountdata TO lt_accountdata.
*
lw_extensionin-structure = 'RICEF_ID'.
lw_extensionin-valuepart1 = 'XXXXXXXXX'.
APPEND lw_extensionin TO lt_extensionin.
CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'
EXPORTING
headerdata = lw_headerdata
IMPORTING
invoicedocnumber = lv_invoicedocu
fiscalyear = lv_fyear
TABLES
itemdata = lt_itemdata
accountingdata = lt_accountdata
glaccountdata = lt_glaccount
return = lt_bapiret2
extensionin = lt_extensionin.
BREAK-POINT.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
LOOP AT lt_bapiret2 INTO DATA(lw_ret2).
WRITE:/1 lw_ret2-number , 10 lw_ret2-id , 20 lw_ret2-message.
ENDLOOP.
WRITE:/ lv_invoicedocu.
WRITE:/ lv_fyear.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
87 | |
10 | |
10 | |
10 | |
7 | |
6 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.