REPORT ZALV_REPORT_PROJ.
TYPE-POOLS: SLIS.
TABLES VBRK.
TABLES VBRP.
TABLES LIPS.
TYPES: BEGIN OF VBRK,
VBELN TYPE VBRK-VBELN,
FKDAT TYPE VBRK-FKDAT,
KUNRG TYPE VBRK-KUNRG,
END OF VBRK.
TYPES: BEGIN OF VBRP,
VBELN TYPE VBRP-VBELN,
FKLMG TYPE VBRP-FKLMG,
MATNR TYPE VBRP-MATNR,
ARKTX TYPE VBRP-ARKTX,
WERKS TYPE VBRP-WERKS,
END OF VBRP.
TYPES: BEGIN OF LIPS,
VBELN1 TYPE LIPS-VBELN,
ERDAT TYPE LIPS-ERDAT,
LFIMG TYPE LIPS-LFIMG,
END OF LIPS.
TYPES: BEGIN OF SALES,
VBELN TYPE VBRK-VBELN,
FKDAT TYPE VBRK-FKDAT,
KUNRG TYPE VBRK-KUNRG,
FKLMG TYPE VBRP-FKLMG,
MATNR TYPE VBRP-MATNR,
ARKTX TYPE VBRP-ARKTX,
WERKS TYPE VBRP-WERKS,
VBELN1 TYPE LIPS-VBELN1,
ERDAT TYPE LIPS-ERDAT,
LFIMG TYPE LIPS-LFIMG,
END OF SALES.
DATA: ISALES TYPE TABLE OF SALES,
WA_SALES TYPE SALES.
DATA: MSEG TYPE MSEG-ERFMG.
DATA: IVBRK TYPE TABLE OF VBRK,
WA_VBRK TYPE VBRK.
DATA: IVBRP TYPE TABLE OF VBRP,
WA_VBRP TYPE VBRP.
DATA: ILIPS TYPE TABLE OF LIPS,
WA_LIPS TYPE LIPS.
DATA: I_FCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FCAT LIKE LINE OF I_FCAT.
DATA: DIFF TYPE I.
SELECT-OPTIONS SUPPL FOR VBRP-WERKS.
SELECT-OPTIONS RECV FOR VBRK-KUNAG.
SELECT-OPTIONS MATERIAL FOR VBRP-MATNR.
SELECT-OPTIONS INVOICE FOR VBRK-FKDAT.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM CREATE_FCAT.
PERFORM DISPLAY.
FORM GET_DATA.
SELECT * FROM VBRK INTO CORRESPONDING FIELDS OF TABLE IVBRK
WHERE KUNAG IN RECV AND FKDAT IN MATERIAL.
IF NOT IVBRK IS INITIAL.
SELECT * FROM VBRP INTO CORRESPONDING FIELDS OF TABLE IVBRP
FOR ALL ENTRIES IN IVBRK WHERE VBELN = IVBRK-VBELN AND WERKS IN SUPPL AND MATNR IN MATERIAL.
ENDIF.
IF NOT IVBRP IS INITIAL.
SELECT * FROM LIPS INTO CORRESPONDING FIELDS OF TABLE ILIPS
FOR ALL ENTRIES IN IVBRP WHERE VBELN = IVBRP-VBELN.
ENDIF.
ENDFORM.
FORM DISPLAY.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = 'SY-REPID'
IT_FIELDCAT = I_FCAT
TABLES
T_OUTTAB = ISALES
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
ENDFORM.
FORM CREATE_FCAT.
WA_FCAT-COL_POS = '1'.
WA_FCAT-FIELDNAME = 'VBELN'.
WA_FCAT-TABNAME = 'ISALES'.
WA_FCAT-SELTEXT_m = 'INVOICE NUMBER'.
APPEND WA_FCAT TO I_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = '2'.
WA_FCAT-FIELDNAME = 'FKDATE'.
WA_FCAT-TABNAME = 'ISALES'.
WA_FCAT-SELTEXT_m = 'INVOICE DATE'.
APPEND WA_FCAT TO I_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = '3'.
WA_FCAT-FIELDNAME = 'MATNR'.
WA_FCAT-TABNAME = 'ISALES'.
WA_FCAT-SELTEXT_m = 'MATERIAL CODE'.
APPEND WA_FCAT TO I_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = '4'.
WA_FCAT-FIELDNAME = 'ARKTX'.
WA_FCAT-TABNAME = 'ISALES'.
WA_FCAT-SELTEXT_L = 'MATERIAL DESCRIPTION'.
APPEND WA_FCAT TO I_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = '5'.
WA_FCAT-FIELDNAME = 'FKIMG'.
WA_FCAT-TABNAME = 'ISALES'.
WA_FCAT-SELTEXT_m = 'INVOICE QTY'.
APPEND WA_FCAT TO I_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = '6'.
WA_FCAT-FIELDNAME = 'WERKS'.
WA_FCAT-TABNAME = 'ISALES'.
WA_FCAT-SELTEXT_m = 'SHIPPING PLANT'.
APPEND WA_FCAT TO I_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = '7'.
WA_FCAT-FIELDNAME = 'KUNAG'.
WA_FCAT-TABNAME = 'ISALES'.
WA_FCAT-SELTEXT_m = 'RECEIVING PLANT'.
APPEND WA_FCAT TO I_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = '8'.
WA_FCAT-FIELDNAME = 'ERDAT'.
WA_FCAT-TABNAME = 'ISALES'.
WA_FCAT-SELTEXT_m = 'GATE IN DATE'.
APPEND WA_FCAT TO I_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = '9'.
WA_FCAT-FIELDNAME = 'VEBLN1'.
WA_FCAT-TABNAME = 'ISALES'.
WA_FCAT-SELTEXT_m = 'GATE ENTRY NO'.
APPEND WA_FCAT TO I_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = '10'.
WA_FCAT-FIELDNAME = 'LFIMG'.
WA_FCAT-TABNAME = 'ISALES'.
WA_FCAT-SELTEXT_m = 'GATE ENTRY QTY'.
APPEND WA_FCAT TO I_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = '11'.
WA_FCAT-FIELDNAME = 'BUDAT_MKPF'.
WA_FCAT-TABNAME = 'ISALES'.
WA_FCAT-SELTEXT_m = 'GRN DATE'.
APPEND WA_FCAT TO I_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = '12'.
WA_FCAT-FIELDNAME = 'MSEG'.
WA_FCAT-TABNAME = 'ISALES'.
WA_FCAT-SELTEXT_m = 'GRN NUMBER'.
APPEND WA_FCAT TO I_FCAT.
CLEAR WA_FCAT.
WA_FCAT-COL_POS = '14'.
WA_FCAT-FIELDNAME = 'MSEG'.
WA_FCAT-TABNAME = 'ISALES'.
WA_FCAT-SELTEXT_m = 'GRN QTY'.
APPEND WA_FCAT TO I_FCAT.
CLEAR WA_FCAT.
DIFF = LIPS-LFIMG - MSEG.
WA_FCAT-COL_POS = '15'.
WA_FCAT-FIELDNAME = 'DIFF'.
WA_FCAT-TABNAME = 'ISALES'.
WA_FCAT-SELTEXT_L = 'DIFFERENCE INVOICES VS GRN QTY'.
APPEND WA_FCAT TO I_FCAT.
CLEAR WA_FCAT.
LOOP AT I_FCAT INTO WA_FCAT.
* READ TABLE ISALES INTO WA_SALES WITH KEY VBELN = WA_VBRP-VBELN BINARY SEARCH.
WA_SALES-VBELN = WA_VBRK-VBELN.
WA_SALES-FKDAT = WA_VBRK-FKDAT.
WA_SALES-KUNRG = WA_VBRK-KUNRG.
WA_SALES-FKLMG = WA_VBRP-FKLMG.
WA_SALES-MATNR = WA_VBRP-MATNR.
WA_SALES-ARKTX = WA_VBRP-ARKTX.
WA_SALES-WERKS = WA_VBRP-WERKS.
WA_SALES-VBELN1 = WA_LIPS-VBELN1.
WA_SALES-ERDAT = WA_LIPS-ERDAT.
WA_SALES-LFIMG = WA_LIPS-lfimg.
APPEND WA_SALES TO ISALES.
ENDLOOP.
ENDFORM.