vendor aging report

31
If standard report does not suffice your requirement, then create your own. FOR vendor USE K in transaction code instead of D. Hello, The following example I have given is for customers. The only difference is in transaction codes. For customer you go to FDI1, for vendor you go to FKI1 (reports). For Customer you go to FDI4, for vendor you go to FKI4 for forms. Remaining all are the same. Hello, Go to transaction code FDI4 Select Form Type RFFRRD20 Line item analysis Give your form name and description Structure (Two axis) - as defaulted Click on Create You will have lead column Delete the rows 2, 3 and 4 Double click on column 1 Enter the customer numbers from 1 to 999999 First column double click (A) Select following values Due date analysis 1 Days for net due date 0 to 30 Give the short name, medium name and long text for the column. Repeat this step in next columns like 31 to 60, 61 to 90, 91 to 120 and 121 to 99999 days etc in other columns and select due date analysis 1. (B,C,D,E) Create one more column by way of formula. To create a new column you need to double click on blue line. Put formula add all five columns you have created above. (F = A+B+C+D+E) You prepare one more column with Due date analysis 2 (G) Now you prepare one more column add (F+G) = This will be total open items =

Upload: vaishaliak2008

Post on 28-Oct-2014

129 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Vendor Aging Report

If standard report does not suffice your requirement, then create your own.

FOR vendor USE K in transaction code instead of D.

Hello,

The following example I have given is for customers.The only difference is in transaction codes. For customer you go to FDI1, for vendor you go to FKI1 (reports).For Customer you go to FDI4, for vendor you go to FKI4 for forms.Remaining all are the same.

Hello,

Go to transaction code FDI4Select Form Type RFFRRD20 Line item analysisGive your form name and descriptionStructure (Two axis) - as defaultedClick on CreateYou will have lead columnDelete the rows 2, 3 and 4Double click on column 1Enter the customer numbers from 1 to 999999

First column double click (A)Select following valuesDue date analysis 1Days for net due date 0 to 30Give the short name, medium name and long text for the column.

Repeat this step in next columns like 31 to 60, 61 to 90, 91 to 120 and 121 to 99999 days etc in other columns and select due date analysis 1. (B,C,D,E)

Create one more column by way of formula. To create a new column you need to double click on blue line. Put formula add all five columns you have created above. (F = A+B+C+D+E)

You prepare one more column with Due date analysis 2 (G)

Now you prepare one more column add (F+G) = This will be total open items = over due and not due.

Now go to FDI1 and prepare a report - assign the form created in FDI4 to the report.

Characteristics you need to select are

Account Type (Select Account Type as D for customers)CurrencyCustomerDocument Type

Page 2: Vendor Aging Report

Special G/L IndCompany Code

Change the output types and options according to your requirement.

Refer FDI2 and FDI3 for other standard reports created.Refer FDI5 and FDI6 for other standard forms created.

Save your report and execute.

Regards,

Page 3: Vendor Aging Report

Vendor Aging Report

edited by anya on Jul 29, 2010  (view change)

Author: name as link to Business Card

Submitted: 29.07.2010

Related Links:

<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.

&---------------------------------------------------------------------

*& 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,

view

Page 4: Vendor Aging Report

        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,

Page 5: Vendor Aging Report

         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, "BKPF

         bschl TYPE bschl,

         gsber TYPE gsber,

         wrbtr TYPE wrbtr, "Amount in document currency

         waers TYPE waers, " Currency

         dmbtr TYPE dmbtr, "Amount in Local Currency

         hwaer TYPE hwaer, "Local Currency

         dmbe2 TYPE dmbe2, "Amount in Second Local Currency

         hwae2 TYPE hwae2, "2nd Local Currency

         dmbe3 TYPE dmbe2, "Amount in 3rd Local Currency

         hwae3 TYPE hwae3, "3rd Local Currency

         objnr TYPE prps-objnr,

         posid TYPE prps-posid,

         kostl TYPE kostl, " COST CENTER

         prctr 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 tems

         zbd1t TYPE dzbd1t, "Cash discount days 1

         zbd2t TYPE dzbd2t, "Cash discount days 2

         zbd3t TYPE dzbd3t, "Net Payment Terms Period

         zbd1p TYPE dzbd1p, "Cash Discount Percentage 1

         zbd2p TYPE dzbd2p, "Cash Discount Percentage 2

         vname TYPE jv_name,

         egrup TYPE jv_egroup,

         qsskz TYPE qsskz, "Withholding Tax Code

         qsshb TYPE qsshb, "Withholding Tax Base Amount

         qbshb TYPE qbshb, "Withholding Tax Amount (in Document Currency)

         bktxt TYPE bktxt,

         recid TYPE recid, " Recov Indicator

         sgtxt TYPE sgtxt,

Page 6: Vendor Aging Report

         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 declaration

DATA :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 Ledger

SELECTION-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 parameter

            p_clear RADIOBUTTON GROUP r1,

            p_all   RADIOBUTTON GROUP r1.

Page 7: Vendor Aging Report

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 .            " Document Date

PARAMETERS :rb_budat RADIOBUTTON GROUP rb2 .            " Posting Date

SELECTION-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 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.

Page 8: Vendor Aging Report

      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

  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'.

Page 9: Vendor Aging Report

    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.

*     Fetch line item details from bsik/bsak

      PERFORM 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 table

      LOOP 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.

Page 10: Vendor Aging Report

        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)

Page 11: Vendor Aging Report

          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.

*       calculate no of days as per date selected and as per line item

*       For Base line date

        IF rb_zfbdt = 'X'.

          IF t_bsik2-st_flag IS INITIAL.

*           cleared items

            days = t_bsik2-augdt - t_bsik2-zfbdt.

          ELSE.

            days = ra_date-high - t_bsik2-zfbdt.

          ENDIF.

*       For Document date

        ELSEIF rb_bldat = '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-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.

Page 12: Vendor Aging Report

            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 items

        IF t_output-st_flag = 'O'.

          t_output-doc_status = 'Open'.

          t_output-st_icon = '  (5C)'. "icon_led_red

        ELSEIF  t_output-st_flag = ' '.

          t_output-doc_status = 'Close'.

          t_output-st_icon = '  (5B)'. "ICON_LED_GREEN

        ENDIF.

*       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 Due

        IF NOT t_output-st_flag IS INITIAL.

          IF t_output-days LT t_bsik2-zbd1t.

            t_output-due_status = 'Not due'.

            t_output-icon = '  (FR)'. "ICON_RESUBMISSION

          ELSEIF t_output-days LE t_bsik2-zbd3t AND  t_output-days GT t_bsik2-zbd1t.

            t_output-due_status = 'Due'.

            t_output-icon = '  (1V)'. "icon_alarm

          ELSEIF t_output-days GT t_bsik2-zbd3t.

Page 13: Vendor Aging Report

            t_output-due_status = 'Overdue'.

            t_output-icon = '  (AG)'. "ICON_ALERT

          ENDIF.

        ENDIF.

*       get local currency as per company code

        PERFORM 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 posid

               objnr

        INTO TABLE t_prps

        FROM prps

        FOR ALL ENTRIES IN t_output

        WHERE 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'

    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[]

Page 14: Vendor Aging Report

    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.

  PERFORM alv_user_comm USING r_ucomm

                              rs_selfield.

  IF sy-subrc = 0.

    IF g_exit_caused_by_caller = 'X'.

    ELSE.

      IF gs_exit_caused_by_user-back = 'X'.                 " 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     = 'COLOR'. "color a line

  alv_layout-detail_popup       = 'X'.

  alv_layout-zebra              = 'X'. "Zebra output

ENDFORM.                    " 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'.

Page 15: Vendor Aging Report

  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: <lt_events> LIKE LINE OF lt_events.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'

    EXPORTING

      i_list_type     = 0

    IMPORTING

      et_events       = lt_events

    EXCEPTIONS

      list_type_wrong = 1

      OTHERS          = 2.

Define TOP_OF_PAGE event

  READ TABLE lt_events WITH KEY name = slis_ev_top_of_page

       ASSIGNING <lt_events>.

  IF sy-subrc EQ 0.

    MOVE gc_formname_top_of_page TO <lt_events>-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'

    EXPORTING

      it_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:'.

Page 16: Vendor Aging Report

  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 Number

  alv_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 Name

  alv_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 Address

  alv_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.

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'.

Page 17: Vendor Aging Report

  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'.

  alv_fieldcat_line-seltext_l = 'Co Code'.

  alv_fieldcat_line-fieldname  = 'BUKRS'.

  APPEND alv_fieldcat_line TO alv_fieldcat.

  CLEAR alv_fieldcat_line.

Fiscal year

  alv_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 Date

  alv_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 Date

  alv_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 Date

  alv_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 Type

  alv_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 Period

  alv_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.

Reference

  alv_fieldcat_line-tabname    = 'T_OUTPUT'.

Page 18: Vendor Aging Report

  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 Key

  alv_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 Area

  alv_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 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'.

  APPEND alv_fieldcat_line TO alv_fieldcat.

Currency

  alv_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 Currency

  alv_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 Currency

  alv_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 Currency

  alv_fieldcat_line-tabname    = 'T_OUTPUT'.

  alv_fieldcat_line-seltext_l = 'Amount in S Lcurr'.

Page 19: Vendor Aging Report

  alv_fieldcat_line-fieldname  = 'DMBE2'.

  alv_fieldcat_line-no_out  = 'X'.

  APPEND alv_fieldcat_line TO alv_fieldcat.

Local Currency

  alv_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 Currency

  alv_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 Currency

  alv_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 Element

  alv_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 Center

  alv_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 Center

  alv_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 Indicator

  alv_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.

Page 20: Vendor Aging Report

General Ledger Account

  alv_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 Indicator

  alv_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 Doc

  alv_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  Date

  alv_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.

Days

  alv_fieldcat_line-tabname    = 'T_OUTPUT'.

  alv_fieldcat_line-seltext_l = 'Days'.

  alv_fieldcat_line-fieldname  = 'DAYS'.

  APPEND alv_fieldcat_line TO alv_fieldcat.

dif1

  CLEAR 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.

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.

  CONCATENATE 'DAYS ' s_date3 '-' s_date4 INTO text.

  alv_fieldcat_line-tabname    = 'T_OUTPUT'.

  alv_fieldcat_line-seltext_l = text.

Page 21: Vendor Aging Report

  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'.

  APPEND alv_fieldcat_line TO alv_fieldcat.

dif5

  CLEAR 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 Days

  alv_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 terms

  alv_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 1

  alv_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 2

  alv_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 Period

  alv_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 1

  alv_fieldcat_line-tabname    = 'T_OUTPUT'.

Page 22: Vendor Aging Report

  alv_fieldcat_line-seltext_l = 'Cash Discount % 1'.

  alv_fieldcat_line-fieldname = 'ZBD1P'.

  APPEND alv_fieldcat_line TO alv_fieldcat.

  CLEAR alv_fieldcat_line.

Cash Discount Percentage 2

  alv_fieldcat_line-tabname    = 'T_OUTPUT'.

  alv_fieldcat_line-seltext_l = 'Cash Discount % 2'.

  alv_fieldcat_line-fieldname = 'ZBD2P'.

  APPEND alv_fieldcat_line TO alv_fieldcat.

  CLEAR alv_fieldcat_line.

*  Assignment Number

  alv_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 text

  alv_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 Text

  alv_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 Venture

  alv_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 group

  alv_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 Indicator

  alv_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 Code

  alv_fieldcat_line-tabname    = 'T_OUTPUT'.

  alv_fieldcat_line-seltext_l = 'Withholding Tax Code'.

Page 23: Vendor Aging Report

  alv_fieldcat_line-fieldname = 'QSSKZ'.

  APPEND alv_fieldcat_line TO alv_fieldcat.

  CLEAR alv_fieldcat_line.

Withholding Tax Base Amount

  alv_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 Amount

  alv_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 Doc

  alv_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 Item

  alv_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 Status

  alv_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 icon

  alv_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 Status

  alv_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 icon

  alv_fieldcat_line-tabname    = 'T_OUTPUT'.

  alv_fieldcat_line-seltext_l = 'Status icon'.

  alv_fieldcat_line-fieldname = 'ST_ICON'.

Page 24: Vendor Aging Report

  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-ucomm

                         rs_selfield TYPE slis_selfield.

*Determine the main component beign viewed

  READ TABLE t_output INDEX rs_selfield-tabindex.

  CASE r_ucomm.

    WHEN '&IC1'.       " single / double click

      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

&---------------------------------------------------------------------

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'

    EXPORTING

Page 25: Vendor Aging Report

      is_variant = gs_variant

      i_save     = 'A'

    IMPORTING

      es_variant = gs_variant

    EXCEPTIONS

      OTHERS     = 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 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.

Validation of Company Code

  CLEAR t001-bukrs.

  IF NOT s_bukrs IS INITIAL.

    SELECT bukrs FROM t001 UP TO 1 ROWS

Page 26: Vendor Aging Report

    INTO t001-bukrs

    WHERE bukrs IN s_bukrs.

    ENDSELECT.

    IF sy-subrc NE 0.

      MESSAGE 'Invalid Company Code' TYPE 'E'.

    ENDIF.

  ENDIF.

Validation of Recoincilation Account

  IF NOT s_akont IS INITIAL.

    CLEAR skb1-saknr.

    SELECT saknr FROM skb1 UP TO 1 ROWS

    INTO skb1-saknr WHERE bukrs IN s_bukrs

                    AND 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 type

ENDFORM.                    " INIT_VARIANT

&---------------------------------------------------------------------

*&      Form  VARIANT_DEFAULT

&---------------------------------------------------------------------

FORM variant_default  USING  p_variant.

  w_variant = gs_variant.

  CALL FUNCTION 'LVC_VARIANT_DEFAULT_GET'

    EXPORTING

      i_save        = gs_variant_save

    CHANGING

      cs_variant    = w_variant

    EXCEPTIONS

      wrong_input   = 1

      not_found     = 2

      program_error = 3

      OTHERS        = 4.

  CASE sy-subrc.

Page 27: Vendor Aging Report

    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.

Page 28: Vendor Aging Report

    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.

    IF px_shbv = 'X' AND px_norm = ''.

*     for sp G/L indicator

      SELECT * FROM bsik  INTO TABLE t_bsik

                                WHERE bukrs IN s_bukrs

                                AND   lifnr IN s_lifnr

                                AND   umskz <> ''

                                AND   budat LE ra_date-high

                                AND   bstat NOT IN ('M' ,'S', 'V' ,'W' ,'Z').

    ELSEIF px_norm = 'X' AND px_shbv = '' .

*     for Normal items

      SELECT * FROM bsik  INTO TABLE t_bsik

                                 WHERE bukrs IN s_bukrs

                                 AND   lifnr IN s_lifnr

                                 AND   umskz = ''

                                 AND   budat LE ra_date-high

                                 AND   bstat NOT IN ('M' ,'S', 'V' ,'W' ,'Z').

    ELSEIF px_norm = 'X' AND px_shbv = 'X' .

*     for Normal items & Sp G/L indicator

      SELECT * FROM bsik  INTO TABLE t_bsik

                                 WHERE bukrs IN s_bukrs

                                 AND   lifnr IN s_lifnr

                                 AND   budat LE ra_date-high

                                 AND   bstat NOT IN ('M' ,'S', 'V' ,'W' ,'Z').

    ENDIF.

For Clear Line Items

  ELSEIF p_clear = 'X' .

    IF s_clear-high IS INITIAL.

      ra_date-high    = s_clear-low.

    ELSE.

Page 29: Vendor Aging Report

      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 = ''

                                             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').

Page 30: Vendor Aging Report

    ELSEIF px_norm = 'X' AND px_shbv = 'X' .

      SELECT * FROM bsik INTO TABLE t_bsik  WHERE bukrs IN s_bukrs

                                              AND   lifnr IN s_lifnr

                                              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   augdt IN s_all

                                            AND   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 currency

  SELECT SINGLE waers FROM t001 INTO t_output-hwaer

                      WHERE bukrs = t_output-bukrs.

  CLEAR: wa_x001.

  CALL FUNCTION 'FI_CURRENCY_INFORMATION'

    EXPORTING

      i_bukrs                = 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.                    " CURRENCY_INFO

 

Labels parameters

Labelsvendor

ageing

report

outstanding

days

Contact Us Site Index Marketing Opportunities Legal Terms Privacy Impressum Powered by SAP NetWeaver

Edit Add Labels http://w iki.sdn.sa 197689748 Snippets

Add Done Are you sure you Click to toggle the

Page 31: Vendor Aging Report