Posted: Sat Apr 12, 2008 11:04 am Post subject: Outstanding Invoice Receipts (IR) from Purchase Order (PO)
The purpose of this program is to highlight goods receipts (GR) that have no corresponding invoice receipts (IR). Either the invoice has not been received, or it has not been keyed in, or it was keyed in incorrectly.
The program is written as an interface for an ABAP Query. The output should be like that of ME2L (Purchasing IS), except that the format is different, and only those items with different quantities for GR and IR are listed. The code is not very optimized. The only advantage of using it as an ABAP Query is being able to quickly change the online format, sorting, etc.
Outstanding IRs from PO
Code:
*&---------------------------------------------------------------------*
*& Report ZGR-IR *
*& *
*&---------------------------------------------------------------------*
*& Used for ABAP Query to list goods received that have not been *
*& fully invoiced *
*&---------------------------------------------------------------------*
REPORT ZGR-IR.
TABLES: EKBE. "Define Dictionary structure
* Conditions to limit search
SELECT-OPTIONS: PO_DOC FOR EKBE-EBELN, "Purchase order
PO_ITEM FOR EKBE-EBELP, "Purchase order item
POSTDATE FOR EKBE-BUDAT, "GR Posting Date
MAT_NR FOR EKBE-MATNR. "Material number
DATA: GOODSRCVD LIKE EKBE-MENGE, "goods received in units
GOODSINVOICED LIKE EKBE-MENGE, "goods invoiced in units
LAST_EBELN LIKE EKBE-EBELN, "to keep track of already processed POs
LAST_EBELP LIKE EKBE-EBELP, " and PO items
BEGIN OF SUMS OCCURS 4,
BEWTP LIKE EKBE-BEWTP,
MENGE LIKE EKBE-MENGE,
SHKZG LIKE EKBE-SHKZG, "Debt/Credit indicator
END OF SUMS.
* <Query_head> "This comment must always appear after data decl'ns
* check header GR documents for un-invoiced inventory
SELECT * FROM EKBE
WHERE BWART = '101' AND " GR document
EBELN IN PO_DOC AND
EBELP IN PO_ITEM AND
BUDAT IN POSTDATE AND
MATNR IN MAT_NR
ORDER BY EBELN EBELP BELNR.
CHECK " only get the header one
NOT ( EKBE-EBELN = LAST_EBELN AND EKBE-EBELP = LAST_EBELP ).
LAST_EBELN = EKBE-EBELN.
LAST_EBELP = EKBE-EBELP.
CLEAR SUMS. CLEAR SUMS[].
SELECT BEWTP MENGE SHKZG FROM EKBE INTO SUMS
WHERE EBELN = EKBE-EBELN AND EBELP = EKBE-EBELP.
COLLECT SUMS.
ENDSELECT.
GOODSRCVD = 0. GOODSINVOICED = 0.
LOOP AT SUMS. "sums table should now have 4 totals
IF SUMS-SHKZG = 'S'. "positive value
IF SUMS-BEWTP = 'E'. "goods received
GOODSRCVD = GOODSRCVD + SUMS-MENGE.
ELSE. "goods invoiced
GOODSINVOICED = GOODSINVOICED + SUMS-MENGE.
ENDIF.
ELSE. " negative value
IF SUMS-BEWTP = 'E'. "goods received
GOODSRCVD = GOODSRCVD - SUMS-MENGE.
ELSE. "goods invoiced
GOODSINVOICED = GOODSINVOICED - SUMS-MENGE.
ENDIF.
ENDIF.
ENDLOOP.
IF GOODSRCVD = GOODSINVOICED. "amount received = amount invoiced
CONTINUE.
ELSE.
EKBE-BPMNG = GOODSRCVD - GOODSINVOICED. "missing invoice amount
ENDIF.
* <Query_body> send data to query
ENDSELECT.
*&---------------------------------------------------------------------*
*& End of Report ZGR-IR *
*& *
*&---------------------------------------------------------------------*
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You cannot download files in this forum
All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG. SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG. Every effort is made to ensure content integrity. Use information on this site at your own risk.