Professional Documents
Culture Documents
Vendor Aging Report
Vendor Aging Report
<link>
Description There are many standard reports to calculate Vendor ageing based on open and clear items in
Account payable accounting
FBL2N - Vendor line item
S_ALR_87012078 - Due date analysis for open items
S_ALR_87012084 - Open items - Vendor due date forecast
S_ALR_87012085 - Vendor appraisal with Open Item sorted list
Many features like recoincilation account as input, ageing based on the baseline date, due days, item status
as due or overdue, amount in 2nd local currency are not available in any single report. Hence a customized
report has been developed where calculation of ageing can be done on any one of options - Baseline Date/
Document Date / Posting Date. Key date will also be provided to the end-user(s) for input, which will act as
the ageing cut-off dateoutstanding days or are not available in any of these . The Open & Cleared Items are
represented in icons as Red & Green coloured respectively, Item status is displayed as icons to depict NOT
DUE / DUE / OVERDUE line items.Relevant & proper Texts are also added in columns for the Icons used for the
purpose to download the narrative of the symbols in Excel.
TYPE slis_t_fieldcat_alv,
alv_fieldcat_line
alv_sort
ls_sort
TYPE slis_sortinfo_alv,
alv_sort_line
alv_layout
TYPE slis_layout_alv,
g_repid
alv_status_set
alv_user_comm
grid_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.
TYPE slis_layout_alv,
TYPE slis_t_listheader,
gt_events
TYPE slis_t_event,
message
TYPE string,
r_ucomm
LIKE sy-ucomm,
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 date
PARAMETERS :rb_bldat RADIOBUTTON GROUP rb2 .
PARAMETERS :rb_budat RADIOBUTTON GROUP rb2 .
AT SELECTION SCREEN
For variant
PERFORM 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_date4
AND s_date4 GT s_date3
AND s_date3 GT s_date2
AND s_date2 GT s_date1.
ELSE.
MESSAGE e379.
ENDIF.
ELSE.
IF NOT s_date4 IS INITIAL.
IF s_date4 GT s_date3
AND s_date3 GT s_date2
AND s_date2 GT s_date1.
ELSE.
MESSAGE e379.
ENDIF.
ELSE.
IF NOT s_date3 IS INITIAL.
IF s_date3 GT s_date2
AND 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.
o
o
o
o
Authorization check for company code
o
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD s_bukrs
ID '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
&--------------------------------------------------------------------*
text
---------------------------------------------------------------------* --> p1
text
* <-- p2
text
---------------------------------------------------------------------
FORM fetch_data .
Check Recoincilation account company code wise
SELECT bukrs saknr FROM skb1 INTO TABLE t_skb1 WHERE bukrs IN s_bukrs
AND saknr IN s_akont.
IF NOT t_skb1 IS INITIAL.
DELETE ADJACENT DUPLICATES FROM t_skb1.
Check vendor and its recoincilation account
SELECT lifnr bukrs akont FROM lfb1 INTO TABLE t_lfb1 FOR ALL ENTRIES IN t_skb1
WHERE lifnr IN s_lifnr
AND bukrs = t_skb1-bukrs
AND akont = t_skb1-saknr.
IF NOT t_lfb1 IS INITIAL.
*
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_bsik2
WHERE lifnr = t_bsik2-lifnr.
IF sy-subrc = 0.
SELECT addrnumber AS adrnr
street
city1
INTO TABLE t_adrc
FROM adrc
FOR ALL ENTRIES IN t_lfa1
WHERE addrnumber = t_lfa1-adrnr.
ENDIF.
SELECT bukrs belnr gjahr bldat budat bktxt xblnr INTO TABLE it_bkpf
FROM bkpf FOR ALL ENTRIES IN t_bsik2
WHERE bukrs = t_bsik2-bukrs
AND belnr = t_bsik2-belnr
AND gjahr = t_bsik2-gjahr.
SELECT bukrs belnr gjahr buzei koart zfbdt kostl recid projk
INTO TABLE it_bseg
FROM bseg FOR ALL ENTRIES IN t_bsik2
WHERE bukrs = t_bsik2-bukrs
AND belnr = t_bsik2-rebzg
AND gjahr = t_bsik2-rebzj
AND 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 projk
INTO (t_kostl, t_recid, t_projk)
FROM bseg
WHERE bukrs = t_bsik-bukrs
AND belnr = t_bsik-belnr
AND gjahr = t_bsik-gjahr
AND 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.
*
*
cleared items
days = t_bsik2-augdt - t_bsik2-zfbdt.
ELSE.
days = ra_date-high - t_bsik2-zfbdt.
ENDIF.
cleared items
days = 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-bukrs
belnr = t_bsik2-belnr
gjahr = t_bsik2-gjahr.
IF t_bsik2-st_flag IS INITIAL.
cleared items
days = 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.
*
(5C)'.
"icon_led_red
(5B)'.
"ICON_LED_GREEN
Due days lesser or EQ than 3rd part of term & GT 1st part of term - Due
(FR)'.
"ICON_RESUBMISSION
(1V)'.
"icon_alarm
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'
EXPORTING
i_callback_program
*
= g_repid
i_callback_pf_status_set = alv_status_set
i_callback_user_command = alv_user_comm
i_grid_title
= grid_title
i_save
= g_save
is_variant
= gs_variant
is_layout
= alv_layout
it_fieldcat
= alv_fieldcat[]
it_events
= gt_events[]
it_sort
= alv_sort[]
IMPORTING
e_exit_caused_by_caller = g_exit_caused_by_caller
es_exit_caused_by_user = gs_exit_caused_by_user
TABLES
t_outtab
= t_output.
" F3
ELSE.
IF gs_exit_caused_by_user-exit = 'X'.
" F15
ELSE.
IF gs_exit_caused_by_user-cancel = 'X'.
" F12
ELSE.
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
alv_layout-detail_popup
= 'X'.
alv_layout-zebra
ENDFORM.
" build_alv_layout
--------------------------------------------------------------------*
FORM s_sort_build
= 1.
ls_sort-fieldname = 'LIFNR'.
ls_sort-up
= 'X'.
ls_sort-group
= 'UL'.
ls_sort-subtot
= 'X'.
= 2.
ls_sort-fieldname = 'BELNR'.
ls_sort-up
= 'X'.
ls_sort-subtot
ls_sort-group
= 'X'.
= 'UL'.
"s_sort_build
&--------------------------------------------------------------------*&
Form eventtab_build
=0
IMPORTING
et_events
= lt_events
EXCEPTIONS
list_type_wrong = 1
OTHERS
= 2.
" 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'
EXPORTING
it_list_commentary = gt_list_top_of_page.
ENDFORM.
"top_of_page
&--------------------------------------------------------------------*&
Form COMMENT_BUILD
"comment_build
Form build_field_catalogs
&--------------------------------------------------------------------FORM build_field_catalogs.
CLEAR: alv_fieldcat.
REFRESH: alv_fieldcat.
Vendor Number
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Vendor Name
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Vendor Address
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
City
alv_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 Code
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Fiscal year
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Posting Date
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Doc Date
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Baseline Date
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Document Type
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Fiscal Period
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
Reference
alv_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'.
CLEAR alv_fieldcat_line.
Posting Key
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Bus Area
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Amount in Doc curr
alv_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'.
= 'T_OUTPUT'.
alv_fieldcat_line-seltext_l = 'Currency'.
alv_fieldcat_line-fieldname = 'WAERS'.
alv_fieldcat_line-no_out = 'X'.
= 'T_OUTPUT'.
= 'T_OUTPUT'.
= 'T_OUTPUT'.
= 'T_OUTPUT'.
= 'T_OUTPUT'.
= 'T_OUTPUT'.
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
WBS Element
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
= 'T_OUTPUT'.
= 'T_OUTPUT'.
= 'T_OUTPUT'.
alv_fieldcat_line-fieldname = 'UMSKZ'.
APPEND alv_fieldcat_line TO alv_fieldcat.
CLEAR alv_fieldcat_line.
General Ledger Account
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Clearing Doc
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Clearing Date
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Days
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
alv_fieldcat_line-seltext_l = 'Days'.
alv_fieldcat_line-fieldname = 'DAYS'.
= 'T_OUTPUT'.
alv_fieldcat_line-seltext_l = text.
alv_fieldcat_line-fieldname = 'DIF1'.
APPEND alv_fieldcat_line TO alv_fieldcat.
CLEAR alv_fieldcat_line.
dif2
CLEAR 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.
dif3
CLEAR text.
= 'T_OUTPUT'.
alv_fieldcat_line-seltext_l = text.
alv_fieldcat_line-fieldname = 'DIF3'.
APPEND alv_fieldcat_line TO alv_fieldcat.
CLEAR alv_fieldcat_line.
dif4
CLEAR 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'.
= 'T_OUTPUT'.
alv_fieldcat_line-seltext_l = text.
alv_fieldcat_line-fieldname = 'DIF5'.
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Payment terms
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Cash discount days 1
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Cash discount days 2
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Net Payment Terms Period
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Cash Discount Percentage 1
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Cash Discount Percentage 2
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
= 'T_OUTPUT'.
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Item Text
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
= 'T_OUTPUT'.
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Recovery Indicator
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Withholding Tax Code
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Withholding Tax Base Amount
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Withholding Tax Base Amount
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Purchasing Doc
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Purchasing Item
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
= 'T_OUTPUT'.
= 'T_OUTPUT'.
CLEAR alv_fieldcat_line.
Document Status
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
alv_fieldcat_line-tabname
= 'T_OUTPUT'.
" build_field_catalogs
&--------------------------------------------------------------------*&
Form ALV_USER_COMM
LIKE sy-ucomm
CASE rs_selfield-fieldname.
*
Display FI document
WHEN '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
"alv_status_set
&--------------------------------------------------------------------*&
Form ALV_VARIANT_F4
ENDIF.
ENDLOOP.
gs_variant-report = g_repid.
gs_variant-username = sy-uname.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
is_variant = gs_variant
i_save
= 'A'
IMPORTING
es_variant = gs_variant
EXCEPTIONS
OTHERS
= 1.
" ALV_VARIANT_F4
&--------------------------------------------------------------------*&
Form CHECK_BUKRS
&--------------------------------------------------------------------FORM check_bukrs .
IF s_bukrs-low NE space.
lfdnr = 0.
waers_old = space.
SELECT * FROM t001
WHERE 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 Number
CLEAR lfa1-lifnr.
IF NOT s_lifnr IS INITIAL.
SELECT lifnr FROM lfa1 UP TO 1 ROWS
INTO lfa1-lifnr
WHERE lifnr IN s_lifnr.
ENDSELECT.
IF sy-subrc NE 0.
MESSAGE e318.
ENDIF.
ENDIF.
" 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 type
ENDFORM.
" INIT_VARIANT
&--------------------------------------------------------------------*&
Form VARIANT_DEFAULT
= gs_variant_save
CHANGING
cs_variant
= w_variant
EXCEPTIONS
wrong_input = 1
not_found
=2
program_error = 3
OTHERS
= 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'
EXPORTING
i_save
= gs_variant_save
CHANGING
cs_variant = gs_variant
EXCEPTIONS
OTHERS
= 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 Items
IF p_open = 'X' .
ra_date-high
= s_open-low.
ENDIF.
For Clear Line Items
ELSEIF 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_bukrs
AND lifnr IN s_lifnr
AND umskz <> ''
AND augdt IN s_clear
AND 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_bukrs
AND lifnr IN s_lifnr
AND umskz = ''
AND augdt IN s_clear
AND 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_bukrs
AND lifnr IN s_lifnr
AND augdt IN s_clear
AND bstat NOT IN ('M' ,'S', 'V' ,'W' ,'Z').
ENDIF.
For All Line Items
ELSEIF 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_bukrs
AND lifnr IN s_lifnr
AND umskz <> ''
AND budat IN s_all
AND bstat NOT IN ('M' ,'S', 'V' ,'W' ,'Z').
SELECT * FROM bsak INTO TABLE t_bsak WHERE bukrs IN s_bukrs
AND lifnr IN s_lifnr
AND umskz <> ''
AND augdt IN s_all
AND 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_bukrs
AND lifnr IN s_lifnr
AND umskz = ''
" LINE_ITEM_DETAILS
&--------------------------------------------------------------------*&
Form CURRENCY_INFO
&--------------------------------------------------------------------FORM currency_info .
= t_output-bukrs
IMPORTING
e_x001
= wa_x001
EXCEPTIONS
currency_2_not_defined = 1
currency_3_not_defined = 2
OTHERS
= 3.
t_output-hwae2 = wa_x001-hwae2.
t_output-hwae3 = wa_x001-hwae3.
ENDFORM.
Labels parameters
Labels
vendor
ageing
" CURRENCY_INFO
report
outstanding
days