REPORT ALV VENDOR LEDGER [FI] MODULE
-------------------------------------------------------------
REPORT ZFI_VENDOR_LEDGER.
*-----Declaration of Selection Screen Variables as Global variables
DATA:GV_BUKRS TYPE BSEG-BUKRS,
GV_BLDAT TYPE BKPF-BLDAT,
GV_BLART TYPE BKPF-BLART,
GV_LIFNR TYPE BSEG-LIFNR,
GV_HKONT TYPE BSEG-HKONT,
GV_PRCTR TYPE BSEG-PRCTR,
GV_SEGMENT TYPE BSEG-SEGMENT.
*-----Creating Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-000.
PARAMETERS:P_BUKRS TYPE BSEG-BUKRS OBLIGATORY DEFAULT '1000'.
SELECT-OPTIONS:S_BLDAT FOR GV_BLDAT,
S_BLART FOR GV_BLART,
S_LIFNR FOR GV_LIFNR,
S_HKONT FOR GV_HKONT,
S_PRCTR FOR GV_PRCTR,
S_SEGME FOR GV_SEGMENT.
PARAMETERS P_LEDGER TYPE C AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK BLK.
*-----Declaration of Structures
TYPES:BEGIN OF LTY_BSEG,
LIFNR TYPE BSEG-LIFNR,
BELNR TYPE BSEG-BELNR,
HKONT TYPE BSEG-HKONT,
SGTXT TYPE BSEG-SGTXT,
SHKZG TYPE BSEG-SHKZG,
DMBTR TYPE BSEG-DMBTR,
END OF LTY_BSEG.
TYPES:BEGIN OF LTY_SKAT,
SAKNR TYPE SKAT-SAKNR,
TXT50 TYPE SKAT-TXT50,
END OF LTY_SKAT.
TYPES:BEGIN OF LTY_BKPF,
BELNR TYPE BKPF-BELNR,
BLART TYPE BKPF-BLART,
BLDAT TYPE BKPF-BLDAT,
BUDAT TYPE BKPF-BUDAT,
AWKEY TYPE BKPF-BELNR,
XBLNR TYPE BKPF-XBLNR,
END OF LTY_BKPF.
TYPES:BEGIN OF LTY_LFA1,
LIFNR TYPE LFA1-LIFNR,
NAME1 TYPE LFA1-NAME1,
END OF LTY_LFA1.
TYPES:BEGIN OF LTY_FINAL,
LIFNR TYPE BSEG-LIFNR,
BELNR TYPE BSEG-BELNR,
HKONT TYPE BSEG-HKONT,
SAKNR TYPE SKAT-SAKNR,
TXT50 TYPE SKAT-TXT50,
BLART TYPE BKPF-BLART,
BLDAT TYPE BKPF-BLDAT,
BUDAT TYPE BKPF-BUDAT,
AWKEY TYPE BKPF-BELNR,
XBLNR TYPE BKPF-XBLNR,
SGTXT TYPE BSEG-SGTXT,
DMBTR TYPE BSEG-DMBTR,
NAME1 TYPE LFA1-NAME1,
DMBTR1 TYPE BSEG-DMBTR,
END OF LTY_FINAL.
*-------Declaration of Workarea's and Internal Tables
DATA:LWA_BSEG TYPE LTY_BSEG,
LWA_SKAT TYPE LTY_SKAT,
LWA_BKPF TYPE LTY_BKPF,
LWA_LFA1 TYPE LTY_LFA1,
LWA_FINAL TYPE LTY_FINAL,
LT_BSEG TYPE TABLE OF LTY_BSEG,
LT_SKAT TYPE TABLE OF LTY_SKAT,
LT_BKPF TYPE TABLE OF LTY_BKPF,
LT_LFA1 TYPE TABLE OF LTY_LFA1,
LT_FINAL TYPE TABLE OF LTY_FINAL.
*-----Declarations of Workarea's and Internal Tables of Fieldcatalogs and
Layout
DATA:LWA_FCAT TYPE SLIS_FIELDCAT_ALV,
LWA_LAYO TYPE SLIS_LAYOUT_ALV,
LT_FCAT TYPE SLIS_T_FIELDCAT_ALV.
*-----Fetching the Data and declarations of Fieldcatalogs and Layout using
Subroutines
PERFORM F_GET_BSEG.
PERFORM F_GET_SKAT.
PERFORM F_GET_BKPF.
PERFORM F_GET_LFA1.
PERFORM F_READ_DATA.
PERFORM F_FILL_CAT.
PERFORM F_LAYOUT.
PERFORM F_DISPLAY_ALV.
FORM F_GET_BSEG.
* IF LIFNR IS NOT INITIAL.
SELECT LIFNR
BELNR
HKONT
SGTXT
SHKZG
DMBTR
FROM BSEG INTO TABLE LT_BSEG
WHERE HKONT IN S_HKONT
AND BUKRS EQ P_BUKRS
AND PRCTR IN S_PRCTR
AND LIFNR IN S_LIFNR
AND SEGMENT IN S_SEGME.
* ENDIF.
ENDFORM.
FORM F_GET_SKAT.
IF LT_BSEG IS NOT INITIAL.
SELECT SAKNR
TXT50
FROM SKAT INTO TABLE LT_SKAT
FOR ALL ENTRIES IN LT_BSEG
WHERE SAKNR = LT_BSEG-HKONT
AND SPRAS EQ SY-LANGU.
ENDIF.
ENDFORM.
FORM F_GET_BKPF.
IF LT_BSEG IS NOT INITIAL.
SELECT BELNR
BLART
BLDAT
BUDAT
AWKEY
XBLNR
FROM BKPF INTO TABLE LT_BKPF
FOR ALL ENTRIES IN LT_BSEG
WHERE BELNR = LT_BSEG-BELNR
AND BLDAT IN S_BLDAT
AND BLART IN S_BLART.
ENDIF.
ENDFORM.
FORM F_GET_LFA1.
IF LT_BSEG IS NOT INITIAL.
SELECT LIFNR
NAME1
FROM LFA1 INTO TABLE LT_LFA1
FOR ALL ENTRIES IN LT_BSEG
WHERE LIFNR = LT_BSEG-LIFNR
AND SPRAS EQ SY-LANGU.
ENDIF.
ENDFORM.
FORM F_READ_DATA.
LOOP AT LT_BKPF INTO LWA_BKPF.
LWA_FINAL-BELNR = LWA_BKPF-BELNR.
LWA_FINAL-BLART = LWA_BKPF-BLART.
LWA_FINAL-BLDAT = LWA_BKPF-BLDAT.
LWA_FINAL-BUDAT = LWA_BKPF-BUDAT.
LWA_FINAL-AWKEY = LWA_BKPF-AWKEY.
LWA_FINAL-XBLNR = LWA_BKPF-XBLNR.
READ TABLE LT_BSEG INTO LWA_BSEG WITH KEY BELNR = LWA_BKPF-BELNR.
IF SY-SUBRC EQ 0.
LWA_FINAL-LIFNR = LWA_BSEG-LIFNR.
LWA_FINAL-HKONT = LWA_BSEG-HKONT.
LWA_FINAL-SGTXT = LWA_BSEG-SGTXT.
IF LWA_BSEG-SHKZG = 'S'.
LWA_FINAL-DMBTR = LWA_BSEG-DMBTR.
ELSEIF LWA_BSEG-SHKZG = 'H'.
LWA_FINAL-DMBTR1 = LWA_BSEG-DMBTR.
ENDIF.
READ TABLE LT_SKAT INTO LWA_SKAT WITH KEY SAKNR = LWA_BSEG-HKONT.
IF SY-SUBRC EQ 0.
LWA_FINAL-TXT50 = LWA_SKAT-TXT50.
READ TABLE LT_LFA1 INTO LWA_LFA1 WITH KEY LIFNR = LWA_BSEG-LIFNR.
IF SY-SUBRC EQ 0.
LWA_FINAL-NAME1 = LWA_LFA1-NAME1.
ENDIF.
ENDIF.
ENDIF.
APPEND LWA_FINAL TO LT_FINAL.
CLEAR LWA_FINAL.
ENDLOOP.
ENDFORM.
FORM F_FILL_CAT.
LWA_FCAT-FIELDNAME = 'LIFNR'.
LWA_FCAT-SELTEXT_M = 'Vendor'.
APPEND LWA_FCAT TO LT_FCAT.
CLEAR LWA_FCAT.
LWA_FCAT-FIELDNAME = 'NAME1'.
LWA_FCAT-SELTEXT_M = 'Vendor Name'.
APPEND LWA_FCAT TO LT_FCAT.
CLEAR LWA_FCAT.
LWA_FCAT-FIELDNAME = 'BELNR'.
LWA_FCAT-SELTEXT_M = 'Document Number'.
APPEND LWA_FCAT TO LT_FCAT.
CLEAR LWA_FCAT.
LWA_FCAT-FIELDNAME = 'HKONT'.
LWA_FCAT-SELTEXT_M = 'GL Account'.
APPEND LWA_FCAT TO LT_FCAT.
CLEAR LWA_FCAT.
LWA_FCAT-FIELDNAME = 'TXT50'.
LWA_FCAT-SELTEXT_M = 'GL Description'.
APPEND LWA_FCAT TO LT_FCAT.
CLEAR LWA_FCAT.
LWA_FCAT-FIELDNAME = 'BLART'.
LWA_FCAT-SELTEXT_M = 'Document Type'.
APPEND LWA_FCAT TO LT_FCAT.
CLEAR LWA_FCAT.
LWA_FCAT-FIELDNAME = 'BLDAT'.
LWA_FCAT-SELTEXT_M = 'Document Date'.
APPEND LWA_FCAT TO LT_FCAT.
CLEAR LWA_FCAT.
LWA_FCAT-FIELDNAME = 'BUDAT'.
LWA_FCAT-SELTEXT_M = 'Posting Date'.
APPEND LWA_FCAT TO LT_FCAT.
CLEAR LWA_FCAT.
LWA_FCAT-FIELDNAME = 'AWKEY'.
LWA_FCAT-SELTEXT_M = 'MIRO Doc No'.
APPEND LWA_FCAT TO LT_FCAT.
CLEAR LWA_FCAT.
LWA_FCAT-FIELDNAME = 'XBLNR'.
LWA_FCAT-SELTEXT_M = 'Reference'.
APPEND LWA_FCAT TO LT_FCAT.
CLEAR LWA_FCAT.
LWA_FCAT-FIELDNAME = 'SGTXT'.
LWA_FCAT-SELTEXT_M = 'Text'.
APPEND LWA_FCAT TO LT_FCAT.
CLEAR LWA_FCAT.
LWA_FCAT-FIELDNAME = 'DMBTR'.
LWA_FCAT-SELTEXT_M = 'Debit'.
APPEND LWA_FCAT TO LT_FCAT.
CLEAR LWA_FCAT.
LWA_FCAT-FIELDNAME = 'DMBTR1'.
LWA_FCAT-SELTEXT_M = 'Credit'.
APPEND LWA_FCAT TO LT_FCAT.
CLEAR LWA_FCAT.
ENDFORM.
FORM F_LAYOUT.
LWA_LAYO-ZEBRA = 'X'.
LWA_LAYO-COLWIDTH_OPTIMIZE = 'X'.
ENDFORM.
FORM F_DISPLAY_ALV.
DATA:LV_REPID TYPE SY-REPID.
LV_REPID = SY-REPID.
if lt_final is NOT INITIAL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = LV_REPID
IS_LAYOUT = LWA_LAYO
IT_FIELDCAT = LT_FCAT
TABLES
T_OUTTAB = LT_FINAL.
else.
MESSAGE 'NO DATA FOUND' TYPE 'I' DISPLAY LIKE 'W'.
ENDIF.
ENDFORM.