vendor ageing report to calculate the outstanding days

31
*&--------------------------------------------------------------------- *& Report ZFI_VENDOR_AGEING_REPORT * Purpose : Vendor Ageing report to calculate the outstanding days *---------------------------------------------------------------------- REPORT zfi_vendor_ageing_report MESSAGE-ID fr. TYPE-POOLS: icon,slis. TABLES : bsik, bsak, lfa1, lfb1, skb1, t001, bapifvdexp_vzzbepp. DATA : t_bsik LIKE bsik OCCURS 0 WITH HEADER LINE, t_bsak LIKE bsak OCCURS 0 WITH HEADER LINE, days LIKE bapifvdexp_vzzbepp-num4. TYPES: BEGIN OF it_bsik2. INCLUDE STRUCTURE bsik. TYPES: st_flag(1) TYPE c. TYPES: END OF it_bsik2. DATA : BEGIN OF t_lfa1 OCCURS 0, lifnr LIKE lfa1-lifnr, name1 LIKE lfa1-name1, adrnr LIKE lfa1-adrnr, END OF t_lfa1. TYPES : BEGIN OF it_lfb1, lifnr LIKE lfb1-lifnr, bukrs LIKE lfb1-bukrs, akont LIKE lfb1-akont, END OF it_lfb1. TYPES : BEGIN OF it_skb1, bukrs LIKE skb1-bukrs, saknr LIKE skb1-saknr, END OF it_skb1. DATA: t_lfb1 TYPE STANDARD TABLE OF it_lfb1 INITIAL SIZE 0, t_skb1 TYPE STANDARD TABLE OF it_skb1 INITIAL SIZE 0, t_bsik2 TYPE it_bsik2 OCCURS 0 WITH HEADER LINE, wa_x001 LIKE x001. DATA : BEGIN OF t_adrc OCCURS 0, adrnr LIKE lfa1-adrnr, street LIKE adrc-street, city1 LIKE adrc-city1, END OF t_adrc. DATA : BEGIN OF it_bkpf OCCURS 0, bukrs TYPE bukrs, belnr TYPE belnr_d, gjahr TYPE gjahr, bldat TYPE bldat, budat TYPE budat,

Upload: kabil-rocky

Post on 24-Nov-2015

42 views

Category:

Documents


4 download

DESCRIPTION

Vendor Ageing Report to Calculate the Outstanding Days

TRANSCRIPT

*&---------------------------------------------------------------------*& Report ZFI_VENDOR_AGEING_REPORT* Purpose : Vendor Ageing report to calculate the outstanding days*----------------------------------------------------------------------REPORT zfi_vendor_ageing_report MESSAGE-ID fr.TYPE-POOLS: icon,slis.TABLES : bsik, bsak, lfa1, lfb1, skb1, t001, bapifvdexp_vzzbepp.DATA : t_bsik LIKE bsik OCCURS 0 WITH HEADER LINE,t_bsak LIKE bsak OCCURS 0 WITH HEADER LINE,days LIKE bapifvdexp_vzzbepp-num4.TYPES: BEGIN OF it_bsik2.INCLUDE STRUCTURE bsik.TYPES: st_flag(1) TYPE c.TYPES: END OF it_bsik2.DATA : BEGIN OF t_lfa1 OCCURS 0,lifnr LIKE lfa1-lifnr,name1 LIKE lfa1-name1,adrnr LIKE lfa1-adrnr,END OF t_lfa1.TYPES : BEGIN OF it_lfb1,lifnr LIKE lfb1-lifnr,bukrs LIKE lfb1-bukrs,akont LIKE lfb1-akont,END OF it_lfb1.TYPES : BEGIN OF it_skb1,bukrs LIKE skb1-bukrs,saknr LIKE skb1-saknr,END OF it_skb1.DATA: t_lfb1 TYPE STANDARD TABLE OF it_lfb1 INITIAL SIZE 0,t_skb1 TYPE STANDARD TABLE OF it_skb1 INITIAL SIZE 0,t_bsik2 TYPE it_bsik2 OCCURS 0 WITH HEADER LINE,wa_x001 LIKE x001.DATA : BEGIN OF t_adrc OCCURS 0,adrnr LIKE lfa1-adrnr,street LIKE adrc-street,city1 LIKE adrc-city1,END OF t_adrc.DATA : BEGIN OF it_bkpf OCCURS 0,bukrs TYPE bukrs,belnr TYPE belnr_d,gjahr TYPE gjahr,bldat TYPE bldat,budat TYPE budat,bktxt TYPE bktxt,xblnr TYPE xblnr,END OF it_bkpf.DATA : BEGIN OF it_bseg OCCURS 0,bukrs TYPE bukrs,belnr TYPE belnr_d,gjahr TYPE gjahr,buzei TYPE buzei,koart LIKE bseg-koart,zfbdt LIKE bseg-zfbdt,kostl LIKE bseg-kostl,recid TYPE recid,projk LIKE bseg-projk,END OF it_bseg.DATA : BEGIN OF t_prps OCCURS 0,posid LIKE prps-posid,objnr LIKE prps-objnr,END OF t_prps.DATA : t_kostl LIKE bseg-kostl,t_projk LIKE bseg-projk,t_recid LIKE bseg-recid,text(15).DATA : BEGIN OF t_output OCCURS 0,lifnr TYPE lifnr,name1 TYPE name1,street TYPE ad_street,city1 TYPE ad_city1,belnr TYPE bsik-belnr,bukrs TYPE bsik-bukrs,gjahr TYPE gjahr,budat TYPE budat,bldat TYPE bldat,zfbdt TYPE dzfbdt,blart TYPE blart,monat TYPE monat,xblnr TYPE xblnr1,xblnr2 TYPE xblnr, "BKPFbschl TYPE bschl,gsber TYPE gsber,wrbtr TYPE wrbtr, "Amount in document currencywaers TYPE waers, " Currencydmbtr TYPE dmbtr, "Amount in Local Currencyhwaer TYPE hwaer, "Local Currencydmbe2 TYPE dmbe2, "Amount in Second Local Currencyhwae2 TYPE hwae2, "2nd Local Currencydmbe3 TYPE dmbe2, "Amount in 3rd Local Currencyhwae3 TYPE hwae3, "3rd Local Currencyobjnr TYPE prps-objnr,posid TYPE prps-posid,kostl TYPE kostl, " COST CENTERprctr TYPE prctr,umskz TYPE umskz,hkont TYPE hkont,zumsk TYPE dzumsk,augbl TYPE augbl,augdt TYPE augdt,days TYPE bapifvdexp_vzzbepp-num4,dif1 TYPE bsik-wrbtr,dif2 TYPE bsik-wrbtr,dif3 TYPE bsik-wrbtr,dif4 TYPE bsik-wrbtr,dif5 TYPE bsik-wrbtr,d_flag TYPE text,zterm TYPE dzterm, "Payment temszbd1t TYPE dzbd1t, "Cash discount days 1zbd2t TYPE dzbd2t, "Cash discount days 2zbd3t TYPE dzbd3t, "Net Payment Terms Periodzbd1p TYPE dzbd1p, "Cash Discount Percentage 1zbd2p TYPE dzbd2p, "Cash Discount Percentage 2vname TYPE jv_name,egrup TYPE jv_egroup,qsskz TYPE qsskz, "Withholding Tax Codeqsshb TYPE qsshb, "Withholding Tax Base Amountqbshb TYPE qbshb, "Withholding Tax Amount (in Document Currency)bktxt TYPE bktxt,recid TYPE recid, " Recov Indicatorsgtxt TYPE sgtxt,mwskz TYPE mwskz,zuonr TYPE dzuonr,ebeln TYPE ebeln,ebelp TYPE ebelp,due_status TYPE text,icon(4) TYPE c,st_flag(1) TYPE c,doc_status(5) TYPE c,st_icon(4) TYPE c,END OF t_output.RANGES ra_date FOR bsak-budat .*Alv data declarationDATA :alv_fieldcat TYPE slis_t_fieldcat_alv,alv_fieldcat_line LIKE LINE OF alv_fieldcat,alv_sort TYPE slis_t_sortinfo_alv,ls_sort TYPE slis_sortinfo_alv,alv_sort_line LIKE LINE OF alv_sort,alv_layout TYPE slis_layout_alv,g_repid LIKE sy-repid VALUE sy-repid,alv_status_set TYPE slis_formname VALUE 'ALV_STATUS_SET',alv_user_comm TYPE slis_formname VALUE 'ALV_USER_COMM',grid_title TYPE lvc_title,alv_fieldcat_acty TYPE slis_t_fieldcat_alv,g_save,gs_variant TYPE disvariant,w_variant TYPE disvariant,gs_variant_save(1) TYPE c,g_exit_caused_by_caller TYPE c,gs_exit_caused_by_user TYPE slis_exit_by_user.DATA: alv_fieldcat_line_acty LIKE LINE OF alv_fieldcat_acty,alv_layout_acty TYPE slis_layout_alv,gt_list_top_of_page TYPE slis_t_listheader,gt_events TYPE slis_t_event,message TYPE string,r_ucomm LIKE sy-ucomm,rs_selfield TYPE slis_selfield.DATA: lfdnr TYPE i,waers_old LIKE t001-waers.CONSTANTS: gc_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.SELECT-OPTIONS : s_lifnr FOR bsik-lifnr MEMORY ID lif MATCHCODE OBJECT kred,s_bukrs FOR bsik-bukrs OBLIGATORY DEFAULT '999',s_akont FOR lfb1-akont MATCHCODE OBJECT sako. " Reconciliation Account in General LedgerSELECTION-SCREEN END OF BLOCK b1.SELECTION-SCREEN BEGIN OF BLOCK b11 WITH FRAME TITLE text-003.PARAMETERS: p_open RADIOBUTTON GROUP r1 USER-COMMAND r DEFAULT 'X', "User Command is required and always with first parameterp_clear RADIOBUTTON GROUP r1,p_all RADIOBUTTON GROUP r1.SELECTION-SCREEN SKIP 1.SELECT-OPTIONS: s_open FOR bsak-budat DEFAULT sy-datum NO INTERVALS NO-EXTENSION MODIF ID opn,s_clear FOR bsak-augdt DEFAULT sy-datum NO-EXTENSION MODIF ID clr,s_all FOR bsak-budat DEFAULT sy-datum NO-EXTENSION MODIF ID all.SELECTION-SCREEN END OF BLOCK b11.SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.PARAMETERS :rb_zfbdt RADIOBUTTON GROUP rb2 DEFAULT 'X'. " Base line datePARAMETERS :rb_bldat RADIOBUTTON GROUP rb2 . " Document DatePARAMETERS :rb_budat RADIOBUTTON GROUP rb2 . " Posting DateSELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 01(31) text-020 FOR FIELD s_date1.PARAMETERS: s_date1 LIKE rfpdo1-allgrogr DEFAULT '000'.PARAMETERS: s_date2 LIKE rfpdo1-allgrogr DEFAULT '030'.PARAMETERS: s_date3 LIKE rfpdo1-allgrogr DEFAULT '060'.PARAMETERS: s_date4 LIKE rfpdo1-allgrogr DEFAULT '090'.PARAMETERS: s_date5 LIKE rfpdo1-allgrogr DEFAULT '120'.SELECTION-SCREEN END OF LINE.SELECTION-SCREEN END OF BLOCK b2.SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-025.PARAMETERS: px_norm LIKE itemset-xnorm AS CHECKBOX DEFAULT 'X',px_shbv LIKE itemset-xshbv AS CHECKBOX.SELECTION-SCREEN END OF BLOCK b3.SELECTION-SCREEN BEGIN OF BLOCK list WITH FRAME TITLE text-030.PARAMETERS: pa_vari TYPE slis_vari.SELECTION-SCREEN END OF BLOCK list.*----------------------------------------------------------------------* AT SELECTION SCREEN*----------------------------------------------------------------------AT SELECTION-SCREEN OUTPUT.PERFORM sub_screen.INITIALIZATION.*For variantPERFORM init_variant.PERFORM variant_default USING pa_vari.AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_vari.PERFORM alv_variant_f4 CHANGING pa_vari.AT SELECTION-SCREEN ON s_bukrs.PERFORM check_bukrs.AT SELECTION-SCREEN.PERFORM variant_fill.*Checking for the input values of selection screen.PERFORM screen_check.IF NOT s_date5 IS INITIAL.IF s_date5 GT s_date4AND s_date4 GT s_date3AND s_date3 GT s_date2AND s_date2 GT s_date1.ELSE.MESSAGE e379.ENDIF.ELSE.IF NOT s_date4 IS INITIAL.IF s_date4 GT s_date3AND s_date3 GT s_date2AND s_date2 GT s_date1.ELSE.MESSAGE e379.ENDIF.ELSE.IF NOT s_date3 IS INITIAL.IF s_date3 GT s_date2AND s_date2 GT s_date1.ELSE.MESSAGE e379.ENDIF.ELSE.IF NOT s_date2 IS INITIAL.IF s_date2 GT s_date1.ELSE.MESSAGE e379.ENDIF.ENDIF.ENDIF.ENDIF.ENDIF.START-OF-SELECTION.*Authorization check for company codeAUTHORITY-CHECK OBJECT 'F_BKPF_BUK'ID 'BUKRS' FIELD s_bukrsID 'ACTVT' FIELD '03'.IF sy-subrc 0.MESSAGE e460(f5) WITH s_bukrs.ENDIF.IF p_open = 'X'.IF s_open IS INITIAL .MESSAGE 'Please enter any date' TYPE 'I'.LEAVE TO TRANSACTION 'ZVAGE'.ENDIF.ENDIF.IF p_clear = 'X'.IF s_clear IS INITIAL .MESSAGE 'Please enter any date' TYPE 'I'.LEAVE TO TRANSACTION 'ZVAGE'.ENDIF.ENDIF.IF p_all = 'X'.IF s_all IS INITIAL .MESSAGE 'Please enter any date' TYPE 'I'.LEAVE TO TRANSACTION 'ZVAGE'.ENDIF.ENDIF.PERFORM fetch_data.END-OF-SELECTION.PERFORM display.*&---------------------------------------------------------------------*& Form fetch_data*&---------------------------------------------------------------------FORM fetch_data .*Check Recoincilation account company code wiseSELECT bukrs saknr FROM skb1 INTO TABLE t_skb1 WHERE bukrs IN s_bukrsAND saknr IN s_akont.IF NOT t_skb1 IS INITIAL.DELETE ADJACENT DUPLICATES FROM t_skb1.*Check vendor and its recoincilation accountSELECT lifnr bukrs akont FROM lfb1 INTO TABLE t_lfb1 FOR ALL ENTRIES IN t_skb1WHERE lifnr IN s_lifnrAND bukrs = t_skb1-bukrsAND akont = t_skb1-saknr.IF NOT t_lfb1 IS INITIAL.* Fetch line item details from bsik/bsakPERFORM line_item_details.LOOP AT t_bsak.MOVE-CORRESPONDING t_bsak TO t_bsik2.APPEND t_bsik2.CLEAR t_bsik2.ENDLOOP.* Move Open line items to final tableLOOP AT t_bsik.MOVE-CORRESPONDING t_bsik TO t_bsik2.MOVE 'O' TO t_bsik2-st_flag.APPEND t_bsik2.CLEAR t_bsik2.ENDLOOP.LOOP AT t_bsik2.IF t_bsik2-zfbdt IS INITIAL.t_bsik2-zfbdt = t_bsik2-bldat.MODIFY t_bsik2 TRANSPORTING zfbdt.ENDIF.ENDLOOP.SELECT lifnr name1 adrnr INTO TABLE t_lfa1 FROM lfa1 FOR ALL ENTRIES IN t_bsik2WHERE lifnr = t_bsik2-lifnr.IF sy-subrc = 0.SELECT addrnumber AS adrnrstreetcity1INTO TABLE t_adrcFROM adrcFOR ALL ENTRIES IN t_lfa1WHERE addrnumber = t_lfa1-adrnr.ENDIF.SELECT bukrs belnr gjahr bldat budat bktxt xblnr INTO TABLE it_bkpfFROM bkpf FOR ALL ENTRIES IN t_bsik2WHERE bukrs = t_bsik2-bukrsAND belnr = t_bsik2-belnrAND gjahr = t_bsik2-gjahr.SELECT bukrs belnr gjahr buzei koart zfbdt kostl recid projkINTO TABLE it_bsegFROM bseg FOR ALL ENTRIES IN t_bsik2WHERE bukrs = t_bsik2-bukrsAND belnr = t_bsik2-rebzgAND gjahr = t_bsik2-rebzjAND koart IN ('K','S').LOOP AT t_bsik2.IF t_bsik2-shkzg = 'H'.t_bsik2-dmbtr = t_bsik2-dmbtr * -1.t_bsik2-wrbtr = t_bsik2-wrbtr * -1.t_bsik2-dmbe2 = t_bsik2-dmbe2 * -1.t_bsik2-dmbe3 = t_bsik2-dmbe3 * -1.ENDIF.IF t_bsik2-rebzg IS NOT INITIAL.LOOP AT it_bseg.IF it_bseg-koart = 'K' AND it_bseg-zfbdt IS NOT INITIAL.t_bsik2-zfbdt = it_bseg-zfbdt.MODIFY t_bsik2 TRANSPORTING zfbdt.ELSEIF it_bseg-koart = 'S'.t_kostl = it_bseg-kostl.t_projk = it_bseg-projk.t_recid = it_bseg-recid.ENDIF.ENDLOOP.ELSE.SELECT SINGLE kostl recid projkINTO (t_kostl, t_recid, t_projk)FROM bsegWHERE bukrs = t_bsik-bukrsAND belnr = t_bsik-belnrAND gjahr = t_bsik-gjahrAND koart = 'S'.ENDIF.MOVE-CORRESPONDING t_bsik2 TO t_output.t_output-kostl = t_kostl.t_output-recid = t_recid.CONCATENATE 'PR' t_projk INTO t_output-objnr.* calculate no of days as per date selected and as per line item* For Base line dateIF rb_zfbdt = 'X'.IF t_bsik2-st_flag IS INITIAL.* cleared itemsdays = t_bsik2-augdt - t_bsik2-zfbdt.ELSE.days = ra_date-high - t_bsik2-zfbdt.ENDIF.* For Document dateELSEIF rb_bldat = 'X'.READ TABLE it_bkpf WITH KEY bukrs = t_bsik2-bukrsbelnr = t_bsik2-belnrgjahr = t_bsik2-gjahr.IF t_bsik2-st_flag IS INITIAL.* cleared itemsdays = t_bsik2-augdt - it_bkpf-bldat.ELSE.days = ra_date-high - it_bkpf-bldat.ENDIF.ELSEIF rb_budat = 'X'.READ TABLE it_bkpf WITH KEY bukrs = t_bsik2-bukrsbelnr = t_bsik2-belnrgjahr = t_bsik2-gjahr.IF t_bsik2-st_flag IS INITIAL.* cleared itemsdays = t_bsik2-augdt - it_bkpf-budat.ELSE.days = ra_date-high - it_bkpf-budat.ENDIF.ENDIF.t_output-bktxt = it_bkpf-bktxt.t_output-xblnr2 = it_bkpf-xblnr.READ TABLE t_lfa1 WITH KEY lifnr = t_output-lifnr.IF sy-subrc = 0.t_output-name1 = t_lfa1-name1.READ TABLE t_adrc WITH KEY adrnr = t_lfa1-adrnr.IF sy-subrc = 0.t_output-street = t_adrc-street.t_output-city1 = t_adrc-city1.ENDIF.ENDIF.t_output-days = days.IF days >= s_date1 AND days < s_date2.t_output-dif1 = t_bsik2-dmbtr.CONCATENATE ' DAYS ' s_date1 '-' s_date2 INTO text.t_output-d_flag = text.ELSEIF days >= s_date2 AND days < s_date3.t_output-dif2 = t_bsik2-dmbtr.CONCATENATE ' DAYS ' s_date2 '-' s_date3 INTO text.t_output-d_flag = text.ELSEIF days >= s_date3 AND days < s_date4.t_output-dif3 = t_bsik2-dmbtr.CONCATENATE ' DAYS ' s_date3 '-' s_date4 INTO text.t_output-d_flag = text.ELSEIF days >= s_date4 AND days < s_date5.t_output-dif4 = t_bsik2-dmbtr.CONCATENATE ' DAYS ' s_date4 '-' s_date5 INTO text.t_output-d_flag = text.ELSEIF days >= s_date5 .t_output-dif5 = t_bsik2-dmbtr.CONCATENATE ' DAYS' ' > ' s_date5 INTO text.t_output-d_flag = text.ENDIF.* Check whether open itemsIF t_output-st_flag = 'O'.t_output-doc_status = 'Open'.t_output-st_icon = ''. "icon_led_redELSEIF t_output-st_flag = ' '.t_output-doc_status = 'Close'.t_output-st_icon = ''. "ICON_LED_GREENENDIF.* Due status on the basis of Payment terms for open items* Due days LT 1st part of term - Not Due* Due days lesser or EQ than 3rd part of term & GT 1st part of term - Due* Due days GT than 3rd part of term- Over DueIF NOT t_output-st_flag IS INITIAL.IF t_output-days LT t_bsik2-zbd1t.t_output-due_status = 'Not due'.t_output-icon = ''. "ICON_RESUBMISSIONELSEIF t_output-days LE t_bsik2-zbd3t AND t_output-days GT t_bsik2-zbd1t.t_output-due_status = 'Due'.t_output-icon = ''. "icon_alarmELSEIF t_output-days GT t_bsik2-zbd3t.t_output-due_status = 'Overdue'.t_output-icon = ''. "ICON_ALERTENDIF.ENDIF.* get local currency as per company codePERFORM currency_info.APPEND t_output.CLEAR: t_bsik2, it_bkpf, t_output, days, t_kostl, t_projk, t_recid.ENDLOOP.IF t_output[] IS NOT INITIAL.SELECT posidobjnrINTO TABLE t_prpsFROM prpsFOR ALL ENTRIES IN t_outputWHERE objnr = t_output-objnr.ENDIF.LOOP AT t_output.READ TABLE t_prps WITH KEY objnr = t_output-objnr.IF sy-subrc = 0.t_output-posid = t_prps-posid.MODIFY t_output TRANSPORTING posid.ENDIF.ENDLOOP.ENDIF.ENDIF.ENDFORM. " fetch_data*&---------------------------------------------------------------------*& Form display*&---------------------------------------------------------------------FORM display .PERFORM build_alv_layout.* PERFORM s_sort_build USING alv_sort[].PERFORM build_field_catalogs.PERFORM eventtab_build CHANGING gt_events.g_save = 'A'.CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'EXPORTINGi_callback_program = g_repidi_callback_user_command = alv_user_commi_grid_title = grid_titlei_save = g_saveis_variant = gs_variantis_layout = alv_layoutit_fieldcat = alv_fieldcat[]it_events = gt_events[]it_sort = alv_sort[]IMPORTINGe_exit_caused_by_caller = g_exit_caused_by_calleres_exit_caused_by_user = gs_exit_caused_by_userTABLESt_outtab = t_output.PERFORM alv_user_comm USING r_ucommrs_selfield.IF sy-subrc = 0.IF g_exit_caused_by_caller = 'X'.ELSE.IF gs_exit_caused_by_user-back = 'X'. " F3ELSE.IF gs_exit_caused_by_user-exit = 'X'. " F15ELSE.IF gs_exit_caused_by_user-cancel = 'X'. " F12ELSE.ENDIF.ENDIF.ENDIF.ENDIF.ENDIF.ENDFORM. " display*&---------------------------------------------------------------------*& Form build_alv_layout*&---------------------------------------------------------------------FORM build_alv_layout.CLEAR alv_layout.alv_layout-colwidth_optimize = 'X'. "always display full columns* alv_layout-box_tabname = 'T_OUTPUT'.alv_layout-info_fieldname = 'COLOR'. "color a linealv_layout-detail_popup = 'X'.alv_layout-zebra = 'X'. "Zebra outputENDFORM. " build_alv_layout*---------------------------------------------------------------------* FORM s_sort_build **---------------------------------------------------------------------FORM s_sort_build USING lt_sort TYPE slis_t_sortinfo_alv.CLEAR ls_sort.ls_sort-spos = 1.ls_sort-fieldname = 'LIFNR'.ls_sort-up = 'X'.ls_sort-group = 'UL'.ls_sort-subtot = 'X'.APPEND ls_sort TO lt_sort.CLEAR ls_sort.ls_sort-spos = 2.ls_sort-fieldname = 'BELNR'.ls_sort-up = 'X'.ls_sort-subtot = 'X'.ls_sort-group = 'UL'.APPEND ls_sort TO lt_sort.CLEAR ls_sort.ENDFORM. "s_sort_build*&---------------------------------------------------------------------*& Form eventtab_build*&---------------------------------------------------------------------FORM eventtab_build CHANGING lt_events TYPE slis_t_event.FIELD-SYMBOLS: LIKE LINE OF lt_events.CALL FUNCTION 'REUSE_ALV_EVENTS_GET'EXPORTINGi_list_type = 0IMPORTINGet_events = lt_eventsEXCEPTIONSlist_type_wrong = 1OTHERS = 2.*Define TOP_OF_PAGE eventREAD TABLE lt_events WITH KEY name = slis_ev_top_of_pageASSIGNING .IF sy-subrc EQ 0.MOVE gc_formname_top_of_page TO -form.ENDIF.ENDFORM. " eventtab_build*&---------------------------------------------------------------------*& Form TOP_OF_PAGE*&---------------------------------------------------------------------FORM top_of_page.REFRESH gt_list_top_of_page.CLEAR gt_list_top_of_page.PERFORM comment_build USING gt_list_top_of_page.CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'EXPORTINGit_list_commentary = gt_list_top_of_page.ENDFORM. "top_of_page*&---------------------------------------------------------------------*& Form COMMENT_BUILD*&---------------------------------------------------------------------*Build comments at top of page*----------------------------------------------------------------------FORM comment_build CHANGING gt_top_of_page TYPE slis_t_listheader.DATA: gs_line TYPE slis_listheader.CLEAR gs_line.gs_line-typ = 'H'.gs_line-info = 'Vendor Ageing Report'.APPEND gs_line TO gt_top_of_page.CLEAR gs_line.gs_line-typ = 'S'.gs_line-key = 'Key Date:'.WRITE ra_date-high TO gs_line-info MM/DD/YYYY.APPEND gs_line TO gt_top_of_page.CLEAR gs_line.gs_line-typ = 'S'.gs_line-key = 'Time:'.WRITE sy-uzeit TO gs_line-info USING EDIT MASK '_::_'.APPEND gs_line TO gt_top_of_page.CLEAR gs_line.gs_line-typ = 'S'.gs_line-key = ''.WRITE ' '.APPEND gs_line TO gt_top_of_page.ENDFORM. "comment_build*----------------------------------------------------------------------*Build ALV Summary field catalog*----------------------------------------------------------------------*&---------------------------------------------------------------------*& Form build_field_catalogs*&---------------------------------------------------------------------FORM build_field_catalogs.CLEAR: alv_fieldcat.REFRESH: alv_fieldcat.*Vendor Numberalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Vendor Number'.alv_fieldcat_line-fieldname = 'LIFNR'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Vendor Namealv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Vendor Name'.alv_fieldcat_line-fieldname = 'NAME1'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Vendor Addressalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Vendor Address'.alv_fieldcat_line-fieldname = 'STREET'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Cityalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'City'.alv_fieldcat_line-fieldname = 'CITY1'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Document No.alv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-hotspot = 'X'.alv_fieldcat_line-seltext_l = 'Document No.'.alv_fieldcat_line-fieldname = 'BELNR'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Co Codealv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Co Code'.alv_fieldcat_line-fieldname = 'BUKRS'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Fiscal yearalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Fiscal year'.alv_fieldcat_line-fieldname = 'GJAHR'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Posting Datealv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Posting Date'.alv_fieldcat_line-fieldname = 'BUDAT'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Doc Datealv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Doc Date'.alv_fieldcat_line-fieldname = 'BLDAT'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Baseline Datealv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Baseline Date'.alv_fieldcat_line-fieldname = 'ZFBDT'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Document Typealv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Document Type'.alv_fieldcat_line-fieldname = 'BLART'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Fiscal Periodalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Fiscal Period'.alv_fieldcat_line-fieldname = 'MONAT'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Referencealv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Reference'.alv_fieldcat_line-fieldname = 'XBLNR'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Ref Document No.alv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Ref Doc No.'.alv_fieldcat_line-fieldname = 'XBLNR2'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Posting Keyalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Posting Key'.alv_fieldcat_line-fieldname = 'BSCHL'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Bus Areaalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Business Area'.alv_fieldcat_line-fieldname = 'GSBER'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Amount in Doc curralv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Amount in Doc curr'.alv_fieldcat_line-fieldname = 'WRBTR'.alv_fieldcat_line-no_out = 'X'.APPEND alv_fieldcat_line TO alv_fieldcat.*Currencyalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Currency'.alv_fieldcat_line-fieldname = 'WAERS'.alv_fieldcat_line-no_out = 'X'.APPEND alv_fieldcat_line TO alv_fieldcat.*Amount in Local Currencyalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Amount in LCurr'.alv_fieldcat_line-fieldname = 'DMBTR'.alv_fieldcat_line-no_out = 'X'.APPEND alv_fieldcat_line TO alv_fieldcat.*Local Currencyalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Local Curr'.alv_fieldcat_line-fieldname = 'HWAER'.alv_fieldcat_line-no_out = 'X'.APPEND alv_fieldcat_line TO alv_fieldcat.*Amount in 2nd Local Currencyalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Amount in S Lcurr'.alv_fieldcat_line-fieldname = 'DMBE2'.alv_fieldcat_line-no_out = 'X'.APPEND alv_fieldcat_line TO alv_fieldcat.*Local Currencyalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Second LCurr'.alv_fieldcat_line-fieldname = 'HWAE2'.alv_fieldcat_line-no_out = 'X'.APPEND alv_fieldcat_line TO alv_fieldcat.*Amount in 2nd Local Currencyalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Amount in third Lcurr'.alv_fieldcat_line-fieldname = 'DMBE3'.alv_fieldcat_line-no_out = 'X'.APPEND alv_fieldcat_line TO alv_fieldcat.*Local Currencyalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Third LCurr'.alv_fieldcat_line-fieldname = 'HWAE3'.alv_fieldcat_line-no_out = 'X'.APPEND alv_fieldcat_line TO alv_fieldcat.*Object number #alv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Object No'.alv_fieldcat_line-fieldname = 'OBJNR'.alv_fieldcat_line-no_out = 'X'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*WBS Elementalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'WBS Element'.alv_fieldcat_line-fieldname = 'POSID'.APPEND alv_fieldcat_line TO alv_fieldcat.*Cost Centeralv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Cost Center'.alv_fieldcat_line-fieldname = 'KOSTL'.APPEND alv_fieldcat_line TO alv_fieldcat.*Profit Centeralv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Profit Center'.alv_fieldcat_line-fieldname = 'PRCTR'.APPEND alv_fieldcat_line TO alv_fieldcat.*GL Indicatoralv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'GL Indicator'.alv_fieldcat_line-fieldname = 'UMSKZ'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*General Ledger Accountalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'G/L Account'.alv_fieldcat_line-fieldname = 'HKONT'.APPEND alv_fieldcat_line TO alv_fieldcat.*Special G/L Indicatoralv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Sp G/L Indicator'.alv_fieldcat_line-fieldname = 'ZUMSK'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Clearing Docalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Clearing Doc.'.alv_fieldcat_line-fieldname = 'AUGBL'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Clearing Datealv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Clearing Date'.alv_fieldcat_line-fieldname = 'AUGDT'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Daysalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Days'.alv_fieldcat_line-fieldname = 'DAYS'.APPEND alv_fieldcat_line TO alv_fieldcat.*dif1CLEAR text.CONCATENATE ' DAYS ' s_date1 '-' s_date2 INTO text.alv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = text.alv_fieldcat_line-fieldname = 'DIF1'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*dif2CLEAR text.CONCATENATE ' DAYS ' s_date2 '-' s_date3 INTO text.alv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = text.alv_fieldcat_line-fieldname = 'DIF2'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*dif3CLEAR text.CONCATENATE 'DAYS ' s_date3 '-' s_date4 INTO text.alv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = text.alv_fieldcat_line-fieldname = 'DIF3'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*dif4CLEAR text.CONCATENATE 'DAYS ' s_date4 '-' s_date5 INTO text.alv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = text.alv_fieldcat_line-fieldname = 'DIF4'.APPEND alv_fieldcat_line TO alv_fieldcat.*dif5CLEAR text.CONCATENATE ' DAYS' ' > ' s_date5 INTO text.alv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = text.alv_fieldcat_line-fieldname = 'DIF5'.APPEND alv_fieldcat_line TO alv_fieldcat.*No of Daysalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'No of Days'.alv_fieldcat_line-fieldname = 'D_FLAG'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Payment termsalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Payment Terms'.alv_fieldcat_line-fieldname = 'ZTERM'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Cash discount days 1alv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Cash Dis days 1'.alv_fieldcat_line-fieldname = 'ZBD1T'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Cash discount days 2alv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Cash Dis days 2'.alv_fieldcat_line-fieldname = 'ZBD2T'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Net Payment Terms Periodalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Net Payment Terms'.alv_fieldcat_line-fieldname = 'ZBD3T'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Cash Discount Percentage 1alv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Cash Discount 1'. 2'.alv_fieldcat_line-fieldname = 'ZBD2P'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.* Assignment Numberalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Assignment No'.alv_fieldcat_line-fieldname = 'ZUONR'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.* Header textalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Header Text'.alv_fieldcat_line-fieldname = 'BKTXT'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Item Textalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Item Text'.alv_fieldcat_line-fieldname = 'SGTXT'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.* Joint Venturealv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Joint Venture'.alv_fieldcat_line-fieldname = 'VNAME'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.* Equity groupalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Equity group'.alv_fieldcat_line-fieldname = 'EGRUP'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Recovery Indicatoralv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Recovery Indicator'.alv_fieldcat_line-fieldname = 'RECID'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Withholding Tax Codealv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Withholding Tax Code'.alv_fieldcat_line-fieldname = 'QSSKZ'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Withholding Tax Base Amountalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Withholding Tax Base Amount'.alv_fieldcat_line-fieldname = 'QSSHB'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Withholding Tax Base Amountalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Withholding Tax Amount'.alv_fieldcat_line-fieldname = 'QBSHB'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Purchasing Docalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Purchasing Doc'.alv_fieldcat_line-fieldname = 'EBELN'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Purchasing Itemalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Purchasing Item'.alv_fieldcat_line-fieldname = 'EBELP'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.* Due Statusalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Due Status'.alv_fieldcat_line-fieldname = 'DUE_STATUS'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.* Due iconalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Due icon'.alv_fieldcat_line-fieldname = 'ICON'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Document Statusalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Doc. Status'.alv_fieldcat_line-fieldname = 'DOC_STATUS'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.*Document Status iconalv_fieldcat_line-tabname = 'T_OUTPUT'.alv_fieldcat_line-seltext_l = 'Status icon'.alv_fieldcat_line-fieldname = 'ST_ICON'.APPEND alv_fieldcat_line TO alv_fieldcat.CLEAR alv_fieldcat_line.ENDFORM. " build_field_catalogs*&---------------------------------------------------------------------*& Form ALV_USER_COMM*&---------------------------------------------------------------------*Process User Status*----------------------------------------------------------------------FORM alv_user_comm USING r_ucomm LIKE sy-ucommrs_selfield TYPE slis_selfield.*Determine the main component beign viewedREAD TABLE t_output INDEX rs_selfield-tabindex.CASE r_ucomm.WHEN '&IC1'. " single / double clickCASE rs_selfield-fieldname.* Display FI documentWHEN 'BELNR'.SET PARAMETER ID 'BLN' FIELD t_output-belnr.SET PARAMETER ID 'BUK' FIELD t_output-bukrs.SET PARAMETER ID 'GJR' FIELD t_output-gjahr.CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.ENDCASE.ENDCASE.ENDFORM. "alv_user_comm*&---------------------------------------------------------------------*& Form ALV_STATUS_SET*&---------------------------------------------------------------------*Set the status for the ALV screen*----------------------------------------------------------------------FORM alv_status_set USING rt_extab TYPE slis_t_extab.SET PF-STATUS 'STANDARD' EXCLUDING rt_extab.ENDFORM. "alv_status_set*&---------------------------------------------------------------------*& Form ALV_VARIANT_F4*&---------------------------------------------------------------------FORM alv_variant_f4 CHANGING p_pa_vari.DATA nof4 TYPE c.CLEAR nof4.LOOP AT SCREEN.IF screen-name = 'PA_VARI'.IF screen-input = 0.nof4 = 'X'.ENDIF.ENDIF.ENDLOOP.gs_variant-report = g_repid.gs_variant-username = sy-uname.CALL FUNCTION 'REUSE_ALV_VARIANT_F4'EXPORTINGis_variant = gs_varianti_save = 'A'IMPORTINGes_variant = gs_variantEXCEPTIONSOTHERS = 1.IF sy-subrc = 0 AND nof4 EQ space.pa_vari = gs_variant-variant.ENDIF.ENDFORM. " ALV_VARIANT_F4*&---------------------------------------------------------------------*& Form CHECK_BUKRS*&---------------------------------------------------------------------FORM check_bukrs .IF s_bukrs-low NE space.lfdnr = 0.waers_old = space.SELECT * FROM t001WHERE bukrs IN s_bukrs.lfdnr = lfdnr + 1.IF lfdnr = 1.waers_old = t001-waers.ENDIF.IF waers_old NE t001-waers.MESSAGE e181(fr).ENDIF.ENDSELECT.lfdnr = 0.ENDIF.ENDFORM. " CHECK_BUKRS*&---------------------------------------------------------------------*& Form SCREEN_CHECK*&---------------------------------------------------------------------FORM screen_check .*Validation of Vendor NumberCLEAR lfa1-lifnr.IF NOT s_lifnr IS INITIAL.SELECT lifnr FROM lfa1 UP TO 1 ROWSINTO lfa1-lifnrWHERE lifnr IN s_lifnr.ENDSELECT.IF sy-subrc NE 0.MESSAGE e318.ENDIF.ENDIF.*Validation of Company CodeCLEAR t001-bukrs.IF NOT s_bukrs IS INITIAL.SELECT bukrs FROM t001 UP TO 1 ROWSINTO t001-bukrsWHERE bukrs IN s_bukrs.ENDSELECT.IF sy-subrc NE 0.MESSAGE 'Invalid Company Code' TYPE 'E'.ENDIF.ENDIF.*Validation of Recoincilation AccountIF NOT s_akont IS INITIAL.CLEAR skb1-saknr.SELECT saknr FROM skb1 UP TO 1 ROWSINTO skb1-saknr WHERE bukrs IN s_bukrsAND saknr IN s_akont.ENDSELECT.IF sy-subrc NE 0.MESSAGE 'Invalid Recoincilation Account' TYPE 'E'.ENDIF.ENDIF.ENDFORM. " SCREEN_CHECK*&---------------------------------------------------------------------*& Form INIT_VARIANT*&---------------------------------------------------------------------FORM init_variant .*set variant:REFRESH: alv_fieldcat,gt_events, gt_list_top_of_page.CLEAR: alv_fieldcat, gt_events, gt_list_top_of_page.CLEAR: gs_variant.g_repid = sy-repid.gs_variant-report = g_repid.gs_variant-username = sy-uname.gs_variant-variant = pa_vari.gs_variant_save = 'A'. " All typeENDFORM. " INIT_VARIANT*&---------------------------------------------------------------------*& Form VARIANT_DEFAULT*&---------------------------------------------------------------------FORM variant_default USING p_variant.w_variant = gs_variant.CALL FUNCTION 'LVC_VARIANT_DEFAULT_GET'EXPORTINGi_save = gs_variant_saveCHANGINGcs_variant = w_variantEXCEPTIONSwrong_input = 1not_found = 2program_error = 3OTHERS = 4.CASE sy-subrc.WHEN 0.p_variant = w_variant-variant.WHEN 2.CLEAR p_variant.ENDCASE.ENDFORM. " VARIANT_DEFAULT*&---------------------------------------------------------------------*& Form VARIANT_FILL*&---------------------------------------------------------------------FORM variant_fill .CLEAR gs_variant.IF pa_vari IS INITIAL.gs_variant-variant = 'STANDARD'.gs_variant-report = g_repid.ELSE.gs_variant-variant = pa_vari.gs_variant-report = g_repid.CALL FUNCTION 'LVC_VARIANT_EXISTENCE_CHECK'EXPORTINGi_save = gs_variant_saveCHANGINGcs_variant = gs_variantEXCEPTIONSOTHERS = 01.ENDIF.ENDFORM. " VARIANT_FILL*&---------------------------------------------------------------------*& Form SUB_SCREEN*&---------------------------------------------------------------------FORM sub_screen .LOOP AT SCREEN.IF p_open = 'X'.IF screen-group1 = 'CLR'.screen-active = '0'.MODIFY SCREEN.ENDIF.IF screen-group1 = 'ALL'.screen-active = '0'.MODIFY SCREEN.ENDIF.ELSEIF p_clear = 'X'.IF screen-group1 = 'OPN'.screen-active = '0'.MODIFY SCREEN.ENDIF.IF screen-group1 = 'ALL'.screen-active = '0'.MODIFY SCREEN.ENDIF.ELSEIF p_all = 'X'.IF screen-group1 = 'OPN'.screen-active = '0'.MODIFY SCREEN.ENDIF.IF screen-group1 = 'CLR'.screen-active = '0'.MODIFY SCREEN.ENDIF.ENDIF.ENDLOOP.ENDFORM. " SUB_SCREEN*&---------------------------------------------------------------------*& Form LINE_ITEM_DETAILS*&---------------------------------------------------------------------FORM line_item_details .*Fetch line item details as per status - Open/Clear/All*For Open ItemsIF p_open = 'X' .ra_date-high = s_open-low.IF px_shbv = 'X' AND px_norm = ''.* for sp G/L indicatorSELECT * FROM bsik INTO TABLE t_bsikWHERE bukrs IN s_bukrsAND lifnr IN s_lifnrAND umskz ''AND budat LE ra_date-highAND bstat NOT IN ('M' ,'S', 'V' ,'W' ,'Z').ELSEIF px_norm = 'X' AND px_shbv = '' .* for Normal itemsSELECT * FROM bsik INTO TABLE t_bsikWHERE bukrs IN s_bukrsAND lifnr IN s_lifnrAND umskz = ''AND budat LE ra_date-highAND bstat NOT IN ('M' ,'S', 'V' ,'W' ,'Z').ELSEIF px_norm = 'X' AND px_shbv = 'X' .* for Normal items & Sp G/L indicatorSELECT * FROM bsik INTO TABLE t_bsikWHERE bukrs IN s_bukrsAND lifnr IN s_lifnrAND budat LE ra_date-highAND bstat NOT IN ('M' ,'S', 'V' ,'W' ,'Z').ENDIF.*For Clear Line ItemsELSEIF p_clear = 'X' .IF s_clear-high IS INITIAL.ra_date-high = s_clear-low.ELSE.ra_date-high = s_clear-high.ENDIF.IF px_shbv = 'X' AND px_norm = ''.SELECT * FROM bsak INTO TABLE t_bsak WHERE bukrs IN s_bukrsAND lifnr IN s_lifnrAND umskz ''AND augdt IN s_clearAND bstat NOT IN ('M' ,'S', 'V' ,'W' ,'Z').ELSEIF px_norm = 'X' AND px_shbv = '' .SELECT * FROM bsak INTO TABLE t_bsak WHERE bukrs IN s_bukrsAND lifnr IN s_lifnrAND umskz = ''AND augdt IN s_clearAND bstat NOT IN ('M' ,'S', 'V' ,'W' ,'Z').ELSEIF px_norm = 'X' AND px_shbv = 'X' .SELECT * FROM bsak INTO TABLE t_bsak WHERE bukrs IN s_bukrsAND lifnr IN s_lifnrAND augdt IN s_clearAND bstat NOT IN ('M' ,'S', 'V' ,'W' ,'Z').ENDIF.*For All Line ItemsELSEIF p_all = 'X' .IF s_all-high IS INITIAL.ra_date-high = s_all-low.ELSE.ra_date-high = s_all-high.ENDIF.IF px_shbv = 'X' AND px_norm = ''.SELECT * FROM bsik INTO TABLE t_bsik WHERE bukrs IN s_bukrsAND lifnr IN s_lifnrAND umskz ''AND budat IN s_allAND bstat NOT IN ('M' ,'S', 'V' ,'W' ,'Z').SELECT * FROM bsak INTO TABLE t_bsak WHERE bukrs IN s_bukrsAND lifnr IN s_lifnrAND umskz ''AND augdt IN s_allAND bstat NOT IN ('M' ,'S', 'V' ,'W' ,'Z').ELSEIF px_norm = 'X' AND px_shbv = '' .SELECT * FROM bsik INTO TABLE t_bsik WHERE bukrs IN s_bukrsAND lifnr IN s_lifnrAND umskz = ''AND budat IN s_allAND bstat NOT IN ('M' ,'S', 'V' ,'W' ,'Z').SELECT * FROM bsak INTO TABLE t_bsak WHERE bukrs IN s_bukrsAND lifnr IN s_lifnrAND umskz = ''AND augdt IN s_allAND bstat NOT IN ('M' ,'S', 'V' ,'W' ,'Z').ELSEIF px_norm = 'X' AND px_shbv = 'X' .SELECT * FROM bsik INTO TABLE t_bsik WHERE bukrs IN s_bukrsAND lifnr IN s_lifnrAND budat IN s_allAND bstat NOT IN ('M' ,'S', 'V' ,'W' ,'Z').SELECT * FROM bsak INTO TABLE t_bsak WHERE bukrs IN s_bukrsAND lifnr IN s_lifnrAND augdt IN s_allAND bstat NOT IN ('M' ,'S', 'V' ,'W' ,'Z').ENDIF.ENDIF.ENDFORM. " LINE_ITEM_DETAILS*&---------------------------------------------------------------------*& Form CURRENCY_INFO*&---------------------------------------------------------------------FORM currency_info .*get local currency - 2nd & 3rd currencySELECT SINGLE waers FROM t001 INTO t_output-hwaerWHERE bukrs = t_output-bukrs.CLEAR: wa_x001.CALL FUNCTION 'FI_CURRENCY_INFORMATION'EXPORTINGi_bukrs = t_output-bukrsIMPORTINGe_x001 = wa_x001EXCEPTIONScurrency_2_not_defined = 1currency_3_not_defined = 2OTHERS = 3.t_output-hwae2 = wa_x001-hwae2.t_output-hwae3 = wa_x001-hwae3.ENDFORM. " CURRENCY_INFO