‎2009 Jan 08 12:12 PM
Hi,
I have a requirement to batch update program to auto post the parked po invoice.
Is it possible to use the function module BAPI_INCOMINGINVOICE_CREATE to post po invoices as batch job? or Can I go for BDC program?
Please give me your suggestions.
Here I am giving the code which I used FM-> BAPI_INCOMINGINVOICE_CREATE.(But it gives the error)
REPORT ZSAT_BDC1.
TABLES: ZIXCP_T03,EKBE,EKPO.
DATA: BEGIN OF WA_PARK OCCURS 0,
EBELN LIKE ZIXCP_T03-EBELN,
XBLNR LIKE ZIXCP_T03-XBLNR,
BELNR LIKE ZIXCP_T03-BELNR,
END OF WA_PARK.
DATA: GT_PARK TYPE STANDARD TABLE OF ZIXCP_T03,
GWA_PARK TYPE ZIXCP_T03.
DATA:GT_RSEG TYPE STANDARD TABLE OF RSEG,
GWA_RSEG TYPE RSEG.
DATA: GT_HIST TYPE STANDARD TABLE OF EKBE,
GWA_HIST TYPE EKBE.
DATA: GT_HEADER TYPE STANDARD TABLE OF RBKP,
GWA_HEADER TYPE RBKP.
DATA:GT_BAPI_INCINV_CREATE_HEADER TYPE STANDARD TABLE OF BAPI_INCINV_CREATE_HEADER,
GWA_BAPI_INCINV_CREATE_HEADER TYPE BAPI_INCINV_CREATE_HEADER,
GT_BAPI_INCINV_CREATE_ITEM TYPE STANDARD TABLE OF BAPI_INCINV_CREATE_ITEM,
GWA_BAPI_INCINV_CREATE_ITEM TYPE BAPI_INCINV_CREATE_ITEM,
GT_BAPIRET2 TYPE STANDARD TABLE OF BAPIRET2,
GWA_BAPIRET2 TYPE BAPIRET2,
GV_INVOICEDOCNUMBER TYPE BAPI_INCINV_FLD-INV_DOC_NO,
GV_FISCALYEAR TYPE BAPI_INCINV_FLD-FISC_YEAR.
SELECT * FROM ZIXCP_T03
INTO TABLE GT_PARK
WHERE STATUS = '041' AND
PO_INDICATOR = 'X'.
IF SY-SUBRC = 0.
SELECT * FROM EKBE
INTO TABLE GT_HIST
FOR ALL ENTRIES IN GT_PARK
WHERE EBELN = GT_PARK-EBELN
and vgabe = 'P'
and BEWTP = 'T'.
IF SY-SUBRC = 0.
SELECT * FROM RBKP INTO TABLE GT_HEADER
FOR ALL ENTRIES IN GT_PARK
WHERE BELNR = GT_PARK-BELNR.
IF SY-SUBRC = 0.
SELECT * FROM RSEG INTO TABLE GT_RSEG
FOR ALL ENTRIES IN GT_PARK
WHERE BELNR = GT_PARK-BELNR.
LOOP AT GT_PARK INTO GWA_PARK.
READ TABLE GT_HEADER INTO GWA_HEADER WITH KEY BELNR = GWA_PARK-BELNR.
IF SY-SUBRC = 0.
* MOVE-CORRESPONDING GWA_HEADER TO GWA_BAPI_INCINV_CREATE_HEADER.
GWA_BAPI_INCINV_CREATE_HEADER-INVOICE_IND = 'X'.
GWA_BAPI_INCINV_CREATE_HEADER-COMP_CODE = GWA_HEADER-BUKRS.
GWA_BAPI_INCINV_CREATE_HEADER-DOC_DATE = GWA_HEADER-BLDAT.
GWA_BAPI_INCINV_CREATE_HEADER-PSTNG_DATE = GWA_HEADER-BUDAT.
GWA_BAPI_INCINV_CREATE_HEADER-REF_DOC_NO = GWA_HEADER-XBLNR.
GWA_BAPI_INCINV_CREATE_HEADER-CURRENCY = GWA_HEADER-WAERS.
* GWA_BAPI_INCINV_CREATE_HEADER-ITEM_TEXT = GWA_HEADER-
GWA_BAPI_INCINV_CREATE_HEADER-DEL_COSTS_TAXC = GWA_HEADER-MWSKZ1.
GWA_BAPI_INCINV_CREATE_HEADER-DOC_TYPE = GWA_HEADER-BLART.
GWA_BAPI_INCINV_CREATE_HEADER-BLINE_DATE = GWA_HEADER-ZFBDT.
READ TABLE GT_RSEG INTO GWA_RSEG WITH KEY BELNR = GWA_PARK-BELNR.
IF SY-SUBRC = 0.
CLEAR GWA_BAPI_INCINV_CREATE_ITEM.
REFRESH GT_BAPI_INCINV_CREATE_ITEM.
LOOP AT GT_RSEG INTO GWA_RSEG
WHERE BELNR = GWA_PARK-BELNR.
* MOVE-CORRESPONDING GWA_RSEG TO GWA_BAPI_INCINV_CREATE_ITEM.
GWA_BAPI_INCINV_CREATE_ITEM-INVOICE_DOC_ITEM = GWA_RSEG-BUZEI.
GWA_BAPI_INCINV_CREATE_ITEM-PO_NUMBER = GWA_RSEG-EBELN.
GWA_BAPI_INCINV_CREATE_ITEM-PO_ITEM = GWA_RSEG-EBELP.
GWA_BAPI_INCINV_CREATE_ITEM-ITEM_AMOUNT = GWA_RSEG-WRBTR.
GWA_BAPI_INCINV_CREATE_ITEM-REF_DOC = GWA_RSEG-LFBNR.
GWA_BAPI_INCINV_CREATE_ITEM-REF_DOC_YEAR = GWA_RSEG-LFGJA.
GWA_BAPI_INCINV_CREATE_ITEM-REF_DOC_IT = GWA_RSEG-LFPOS.
GWA_BAPI_INCINV_CREATE_ITEM-TAX_CODE = GWA_RSEG-MWSKZ.
APPEND GWA_BAPI_INCINV_CREATE_ITEM TO GT_BAPI_INCINV_CREATE_ITEM.
GWA_BAPI_INCINV_CREATE_HEADER-GROSS_AMOUNT = GWA_BAPI_INCINV_CREATE_HEADER-GROSS_AMOUNT + GWA_BAPI_INCINV_CREATE_ITEM-ITEM_AMOUNT.
ENDLOOP.
CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'
EXPORTING
HEADERDATA = GWA_BAPI_INCINV_CREATE_HEADER
IMPORTING
INVOICEDOCNUMBER = GV_INVOICEDOCNUMBER
FISCALYEAR = GV_FISCALYEAR
TABLES
ITEMDATA = GT_BAPI_INCINV_CREATE_ITEM
RETURN = GT_BAPIRET2.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
Code Formatted by: Alvaro Tejada Galindo on Jan 8, 2009 2:38 PM
‎2009 Jan 08 7:50 PM