*&---------------------------------------------------------------------*
*& Report Z_FI_GLACC
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z_fi_glacc NO STANDARD PAGE HEADING.
TABLES : bseg,bkpf,skat,lfa1.
TYPES: BEGIN OF ty_final,
sel, " for extra coloun in alv
prctr TYPE prctr, " profit centre
hkont TYPE hkont, " General Ledger Account
belnr TYPE belnr_d, " Accounting Document Number
budat TYPE budat, " Posting Date in the Document
bldat TYPE bldat, " Document Date in Document
augcp TYPE augcp, " Clearing Entry Date
pswsl TYPE pswsl, " Amount for Updating in General Ledger
sgtxt TYPE sgtxt, " Item Text
dzuonr TYPE dzuonr, " Assignment number
wrbtr TYPE wrbtr, " Amount in document currency
lifnr TYPE lifnr, " Account Number of Vendor or Creditor
gsber TYPE gsber, " Business area
bupla TYPE bupla, " business place
xblnr TYPE xblnr, " Reference Document Number
bktxt TYPE bktxt, " Document Header Text
cpudt TYPE cpudt, " Day On Which Accounting Document Was Entered
saknr TYPE saknr, " gl account
txt50 TYPE txt50_skat, " G/L Account Long Text
name1 TYPE name1, " Vendor Namae
END OF ty_final.
DATA: gt TYPE TABLE OF ty_final,
gwa TYPE ty_final,
gt_fcat TYPE slis_t_fieldcat_alv,
wa_fcat TYPE slis_fieldcat_alv,
gs_layout TYPE slis_layout_alv,
gs_varient TYPE disvariant,
v_prog TYPE sy-repid,
v_name TYPE sy-uname,
rs_selfield TYPE slis_selfield,
v_selfield TYPE slis_selfield-value,
r_ucomm TYPE sy-ucomm.
INITIALIZATION.
v_prog = sy-repid.
v_name = sy-uname.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS : s_hkont FOR bseg-hkont, " gl account num
s_budat FOR bseg-h_budat, " posting data
s_prctr FOR bseg-prctr. " profit centre
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM get_data.
END-OF-SELECTION.
PERFORM fcat.
PERFORM alvcall.
PERFORM usercmd USING r_ucomm CHANGING rs_selfield.
FORM get_data.
SELECT
prctr,
hkont,
belnr,
h_budat,
h_bldat,
augcp,
pswsl,
sgtxt,
zuonr,
wrbtr,
lifnr,
gsber,
bupla
FROM bseg INTO TABLE @DATA(l_bseg)
WHERE hkont IN @s_hkont
AND h_budat IN @s_budat
AND prctr IN @s_prctr.
CHECK sy-subrc EQ 0.
SELECT xblnr,
bktxt,
cpudt,
belnr
FROM bkpf INTO TABLE @DATA(l_bkpf) FOR ALL ENTRIES IN @l_bseg
WHERE belnr EQ @l_bseg-belnr
AND budat IN @s_budat.
SELECT saknr,
txt50
FROM skat INTO TABLE @DATA(l_skat) FOR ALL ENTRIES IN @l_bseg
WHERE saknr EQ @l_bseg-hkont.
ENDIF.
SELECT lifnr,
name1 FROM lfa1 INTO TABLE @DATA(l_lfa1) FOR ALL ENTRIES IN @l_bseg
WHERE lifnr EQ @l_bseg-lifnr.
SORT: l_bseg BY belnr ,
l_bkpf BY belnr.
LOOP AT l_bseg INTO DATA(w_bseg).
gwa-prctr = w_bseg-prctr.
gwa-hkont = w_bseg-hkont.
gwa-belnr = w_bseg-belnr.
gwa-budat = w_bseg-h_budat.
gwa-bldat = w_bseg-h_bldat.
gwa-augcp = w_bseg-augcp.
gwa-pswsl = w_bseg-pswsl.
gwa-sgtxt = w_bseg-sgtxt.
gwa-dzuonr = w_bseg-zuonr.
gwa-wrbtr = w_bseg-wrbtr.
gwa-lifnr = w_bseg-lifnr.
gwa-gsber = w_bseg-gsber.
gwa-bupla = w_bseg-bupla.
READ TABLE l_bkpf INTO DATA(w_bkpf) WITH KEY belnr = w_bseg-belnr BINARY SEARCH.
IF sy-subrc EQ 0.
gwa-xblnr = w_bkpf-xblnr.
gwa-bktxt = w_bkpf-bktxt.
gwa-cpudt = w_bkpf-cpudt.
ENDIF.
READ TABLE l_skat INTO DATA(w_skat) WITH KEY saknr = w_bseg-hkont BINARY SEARCH.
IF sy-subrc EQ 0.
gwa-saknr = w_skat-saknr.
gwa-txt50 = w_skat-txt50.
ENDIF.
READ TABLE l_lfa1 INTO DATA(w_lfa1) WITH KEY lifnr = w_bseg-lifnr .
IF sy-subrc EQ 0.
gwa-name1 = w_lfa1-name1.
ENDIF.
APPEND gwa TO gt.
CLEAR gwa.
ENDLOOP.
ENDFORM.
FORM fcat.
gs_layout-zebra = 'X'.
gs_layout-colwidth_optimize = 'X'.
gs_layout-box_fieldname = 'SEL'.
gs_varient-report = sy-repid.
wa_fcat-fieldname = 'BELNR'.
wa_fcat-ref_tabname = 'BSEG'.
wa_fcat-seltext_m = 'Document Number'.
wa_fcat-hotspot = 'X'.
wa_fcat-outputlen = '15'.
APPEND wa_fcat TO gt_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'SGTXT'.
wa_fcat-ref_tabname = 'BSEG'.
wa_fcat-seltext_m = 'Text'.
APPEND wa_fcat TO gt_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'PRCTR'.
wa_fcat-ref_tabname = 'BSEG'.
wa_fcat-seltext_m = 'Profit Centre'.
APPEND wa_fcat TO gt_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'BUDAT'.
wa_fcat-ref_tabname = 'BSEG'.
wa_fcat-seltext_m = 'Posting Date'.
wa_fcat-datatype = 'DATS'.
APPEND wa_fcat TO gt_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'AUGCP'.
wa_fcat-ref_tabname = 'BSEG'.
wa_fcat-seltext_m = 'Clearing Entry Date'.
wa_fcat-datatype = 'DATS'.
APPEND wa_fcat TO gt_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'BLDAT'.
wa_fcat-ref_tabname = 'BSEG'.
wa_fcat-seltext_m = 'Document Date'.
wa_fcat-datatype = 'DATS'.
APPEND wa_fcat TO gt_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'CPUDT'.
wa_fcat-ref_tabname = 'BKPF'.
wa_fcat-seltext_m = 'Entry Date'.
APPEND wa_fcat TO gt_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'WRBTR'.
wa_fcat-ref_tabname = 'BSEG'.
wa_fcat-seltext_m = 'Amount in Document Currency'.
APPEND wa_fcat TO gt_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'PSWSL'.
wa_fcat-ref_tabname = 'BSEG'.
wa_fcat-seltext_m = 'Currency'.
APPEND wa_fcat TO gt_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'LIFNR'.
wa_fcat-ref_tabname = 'LFA1'.
wa_fcat-seltext_m = 'Vendor Number'.
APPEND wa_fcat TO gt_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'NAME1'.
wa_fcat-ref_tabname = 'LFA1'.
wa_fcat-seltext_m = 'Vendor Name'.
APPEND wa_fcat TO gt_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'XBLNR'.
wa_fcat-ref_tabname = 'BKPF'.
wa_fcat-seltext_m = 'Reference Document Number'.
APPEND wa_fcat TO gt_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'DZUONR'.
wa_fcat-ref_tabname = 'BSEG'.
wa_fcat-seltext_m = 'Assignmeant'.
APPEND wa_fcat TO gt_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'BKTXT'.
wa_fcat-ref_tabname = 'BKPF'.
wa_fcat-seltext_m = 'Header Text'.
APPEND wa_fcat TO gt_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'SAKNR'.
wa_fcat-ref_tabname = 'SKA1'.
wa_fcat-seltext_m = 'G/L Account'.
APPEND wa_fcat TO gt_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'TXT50'.
wa_fcat-ref_tabname = 'SKAT'.
wa_fcat-seltext_m = 'G/L Discription'.
APPEND wa_fcat TO gt_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'GSBER'.
wa_fcat-ref_tabname = 'BSEG'.
wa_fcat-seltext_m = 'Business Area'.
wa_fcat-outputlen = '15'.
APPEND wa_fcat TO gt_fcat.
CLEAR wa_fcat.
wa_fcat-fieldname = 'BUPLA'.
wa_fcat-ref_tabname = 'BSEG'.
wa_fcat-seltext_m = 'Business Place'.
wa_fcat-outputlen = '15'.
APPEND wa_fcat TO gt_fcat.
CLEAR wa_fcat.
ENDFORM.
FORM alvcall.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = v_prog
i_callback_user_command = 'USERCMD'
i_grid_title = 'G/L ACCOUNTS DETAILS'
is_layout = gs_layout
it_fieldcat = gt_fcat
is_variant = gs_varient
TABLES
t_outtab = gt.
ENDFORM.
FORM usercmd USING r_ucoma TYPE sy-ucomm CHANGING rs_selfield TYPE slis_selfield.
CASE r_ucoma.
WHEN '&IC1'.
CASE rs_selfield-fieldname.
WHEN 'BELNR'.
SET PARAMETER ID 'BLN'
FIELD rs_selfield-value.
CALL TRANSACTION 'FB03'.
" AND SKIP FIRST SCREEN.
ENDCASE.
ENDCASE.
ENDFORM.