‎2007 Mar 22 4:15 AM
‎2007 Mar 22 4:21 AM
Hi,
ap - accounts payable
vendor ageing analysis is same only.
ac -accounts receiable customer ageing analysis are same only.
Thanks,
Shankar
‎2007 Mar 22 4:25 AM
‎2007 Mar 22 4:26 AM
HI,
This is the sample z report for customer ageing analysis report man.
REPORT YMS_CUSTOMERAGEINGANALYSIS NO STANDARD PAGE HEADING MESSAGE-ID FB LINE-COUNT 65
LINE-SIZE 230.
***********************************************************************
Purpose : This ABAP program will fetch the Account Receivables for
a Customer for the given period and display the due days.
*----
TABLES: T001, " Company Codes
T005, " Countries
SKB1, " GL Master
KNA1. " Customer Master
***********************************************************************
Internal Tables
***********************************************************************
Internal table for BSID (Open Items) data
DATA: BEGIN OF IT_BSID OCCURS 0,
KUNNR LIKE BSID-KUNNR, " Customer Number
GJAHR LIKE BSID-GJAHR, " Fiscal Year
BELNR LIKE BSID-BELNR, " Acc.Document
BUZEI LIKE BSID-BUZEI, " Item
BUDAT LIKE BSID-BUDAT, " Posting Date
SHKZG LIKE BSID-SHKZG, " Dr/Cr Indicator
DMBTR LIKE BSID-DMBTR, " Amount(Local Curr)
WRBTR LIKE BSID-WRBTR, " Amount(Doc Curr)
DMBE2 LIKE BSID-DMBE2, " Amount(USD)
WAERS LIKE BSID-WAERS, " Currency
ZTERM LIKE BSID-ZTERM, " Payment Terms
VBELN LIKE BSID-VBELN, " Billing Doc
ZFBDT LIKE BSID-ZFBDT, " Baseline Date
ZBD1T LIKE BSID-ZBD1T, " No of days
HKONT LIKE BSID-HKONT, " GL Account
NAME1 LIKE KNA1-NAME1, " Customer Name
LAND1 LIKE KNA1-LAND1, " Country
END OF IT_BSID.
Internal table for BSAD (Closed Items) data
DATA: BEGIN OF IT_BSAD OCCURS 0,
KUNNR LIKE BSAD-KUNNR, " Customer Number
GJAHR LIKE BSAD-GJAHR, " Fiscal Year
BELNR LIKE BSAD-BELNR, " Acc.Document
BUZEI LIKE BSAD-BUZEI, " Item
BUDAT LIKE BSAD-BUDAT, " Posting Date
SHKZG LIKE BSAD-SHKZG, " Dr/Cr Indicator
DMBTR LIKE BSAD-DMBTR, " Amount(Local Curr)
WRBTR LIKE BSID-WRBTR, " Amount(Doc Curr)
DMBE2 LIKE BSAD-DMBE2, " Amount(USD)
WAERS LIKE BSAD-WAERS, " Currency
ZTERM LIKE BSID-ZTERM, " Payment Terms
VBELN LIKE BSID-VBELN, " Billing Doc
ZFBDT LIKE BSID-ZFBDT, " Baseline Date
ZBD1T LIKE BSID-ZBD1T, " No of days
HKONT LIKE BSID-HKONT, " GL Account
NAME1 LIKE KNA1-NAME1, " Customer Name
LAND1 LIKE KNA1-LAND1, " Country
END OF IT_BSAD.
Internal table for Report Output
DATA: BEGIN OF IT_REPORT OCCURS 0,
KUNNR LIKE BSID-KUNNR, " Customer Number
BELNR LIKE BSID-BELNR, " Acc.Document
NAME1 LIKE KNA1-NAME1, " Customer Name
LAND1 LIKE KNA1-LAND1, " Country
SHKZG LIKE BSID-SHKZG, " Dr/Cr Indicator
BUDAT LIKE BSID-BUDAT, " Posting Date
DMBTR LIKE BSID-DMBTR, " Amount(Local Curr)
WRBTR LIKE BSID-WRBTR, " Amount(Doc Curr)
DMBE2 LIKE BSID-DMBE2, " Amount(USD)
WAERS LIKE BSID-WAERS, " Currency
DUE_AMNT LIKE BSID-DMBTR, " Amount(Over Due)
D_AMNT1 LIKE BSID-DMBTR, " Amount(0-30 Future Due)
D_AMNT2 LIKE BSID-DMBTR, " Amount(31-60 Future Due)
D_AMNT3 LIKE BSID-DMBTR, " Amount(61-90 Future Due)
D_AMNT4 LIKE BSID-DMBTR, " Amount(91-120 Future Due)
D_AMNT5 LIKE BSID-DMBTR, " Amount(more than 120)
DUE_DATE LIKE BSID-BUDAT, " Due date
ZTERM LIKE BSID-ZTERM, " Payment Terms
VBELN LIKE BSID-VBELN, " Billing Doc
END OF IT_REPORT.
*----
Declaration of Data and Variables
*----
DATA: V_DAYS TYPE I, " Difference days
V_WAERS LIKE T001-WAERS, " Co.Code Currency
V_SUM1 LIKE BSID-DMBTR, " Totals 1
V_SUM2 LIKE BSID-DMBTR, " Totals 2
V_SUM3 LIKE BSID-DMBTR, " Totals 3
V_SUM4 LIKE BSID-DMBTR, " Totals 4
V_SUM5 LIKE BSID-DMBTR, " Totals 5
V_SUM6 LIKE BSID-DMBTR, " Totals 6
V_SUM7 LIKE BSID-DMBTR, " Totals 7
V_SUM8 LIKE BSID-DMBE2. " Totals 8
Constants
CONSTANTS: C_DOC_WAERS(3) VALUE 'USD',
C_MITKZ TYPE C VALUE 'D'.
************************************************************************
Selection Screen
************************************************************************
SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_BUKRS LIKE T001-BUKRS OBLIGATORY. " Company Code
SELECT-OPTIONS:S_KUNNR FOR KNA1-KUNNR, " Customer Number
S_LAND1 FOR T005-LAND1, " Country
S_HKONT FOR SKB1-SAKNR. " G/L Account
PARAMETERS: P_DATE LIKE SY-DATUM OBLIGATORY. " Report Date
SELECTION-SCREEN: END OF BLOCK B1.
SELECTION-SCREEN : BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(30) TEXT-003 FOR FIELD P_RB1.
PARAMETERS: P_RB1 RADIOBUTTON GROUP RB.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(30) TEXT-004 FOR FIELD P_RB2.
PARAMETERS: P_RB2 RADIOBUTTON GROUP RB.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN: END OF BLOCK B2.
SELECTION-SCREEN : BEGIN OF BLOCK B4 WITH FRAME.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(29) TEXT-038 FOR FIELD P_CHK1.
PARAMETERS: P_CHK1 AS CHECKBOX.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN: END OF BLOCK B4.
SELECTION-SCREEN : BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-030.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(30) TEXT-031 FOR FIELD P_RB3.
PARAMETERS: P_RB3 RADIOBUTTON GROUP RB1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 2(30) TEXT-032 FOR FIELD P_RB4.
PARAMETERS: P_RB4 RADIOBUTTON GROUP RB1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN: END OF BLOCK B3.
*********Initialization**********************************************
INITIALIZATION.
***********************************************************************
At Selection Screen
***********************************************************************
AT SELECTION-SCREEN.
Checking for the input values of selection screen.
PERFORM SCREEN_CHECK.
***********************************************************************
Top-Of-Page
***********************************************************************
TOP-OF-PAGE.
IF P_RB3 = 'X'.
IF P_CHK1 = 'X'.
Write the Column Headings for detailed report(in Doc Currency)
PERFORM COL_HEADING2.
ELSE.
Write the Column Headings for detailed report
PERFORM COL_HEADING.
ENDIF.
ELSE.
Write the Column Headings for summary report
PERFORM COL_HEADING1.
ENDIF.
***********************************************************************
Start-Of-Selection
***********************************************************************
START-OF-SELECTION.
Get the Customer Open Items from BSID
PERFORM GET_OPEN_DATA.
Get the Customer Closed Items from BSAD
PERFORM GET_CLOSE_DATA.
Get the data from BSID,BSAD and KNA1 into one int.table
PERFORM PROCESS_DATA.
***********************************************************************
End-Of-Selection
***********************************************************************
END-OF-SELECTION.
IF IT_REPORT[] IS INITIAL.
WRITE : 'No Documents found'(005).
ELSE.
IF P_RB3 = 'X'.
Write the Detailed Report
PERFORM WRITE_REPORT.
ELSE.
Write the Summary Report
PERFORM WRITE_REPORT1.
ENDIF.
ENDIF.
***********************************************************************
At Line-Selection
***********************************************************************
AT LINE-SELECTION.
When double clicked on BELNR leave to transaction FB03
PERFORM LINE_SEL.
***********************************************************************
&----
*& Form SCREEN_CHECK
&----
Checking for the input values of selection screen
----
FORM SCREEN_CHECK.
Validation of Company Code
CLEAR T001.
IF NOT P_BUKRS IS INITIAL.
SELECT BUKRS FROM T001 UP TO 1 ROWS
INTO T001-BUKRS
WHERE BUKRS = P_BUKRS.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH 'Invalid Company Code'(006).
ENDIF.
ENDIF.
Validation of Customer Number
CLEAR KNA1.
IF NOT S_KUNNR IS INITIAL.
SELECT KUNNR FROM KNA1 UP TO 1 ROWS
INTO KNA1-KUNNR
WHERE KUNNR IN S_KUNNR.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH 'Invalid Customer Number'(007).
ENDIF.
ENDIF.
Validation of Country
CLEAR T005.
IF NOT S_LAND1 IS INITIAL.
SELECT LAND1 FROM T005 UP TO 1 ROWS
INTO T005-LAND1
WHERE LAND1 IN S_LAND1.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH 'Invalid Country'(036).
ENDIF.
ENDIF.
Validation of GL Account
CLEAR SKB1.
IF NOT S_HKONT IS INITIAL.
SELECT SAKNR FROM SKB1 UP TO 1 ROWS
INTO SKB1-SAKNR
WHERE SAKNR IN S_HKONT AND
MITKZ = C_MITKZ.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH 'Invalid GL Reconciliation Account'(037).
ENDIF.
ENDIF.
ENDFORM. " SCREEN_CHECK
&----
*& Form COL_HEADING
&----
Write the Column Headings for detailed report
----
FORM COL_HEADING.
SKIP .
WRITE: /88 'DEBTOR AGEING REPORT AS AT:'(019) CENTERED,
116 P_DATE CENTERED, 198 SY-PAGNO.
SKIP .
WRITE: /2 'CoCode:'(016),13(4) P_BUKRS COLOR 3.
IF NOT S_KUNNR IS INITIAL.
IF NOT S_KUNNR-HIGH IS INITIAL.
WRITE: 20 'Customer:'(041),33 S_KUNNR-LOW COLOR 3,
'-', S_KUNNR-HIGH COLOR 3.
ELSE.
WRITE: 20 'Customer:'(041),33 S_KUNNR-LOW COLOR 3.
ENDIF.
ENDIF.
IF NOT S_LAND1 IS INITIAL.
IF NOT S_LAND1-HIGH IS INITIAL.
WRITE: /2 'Country:'(042),13(4) S_LAND1-LOW COLOR 3,
'-', S_LAND1-HIGH COLOR 3.
ELSE.
WRITE: /2 'Country:'(042),13(4) S_LAND1-LOW COLOR 3.
ENDIF.
IF NOT S_HKONT IS INITIAL.
IF NOT S_HKONT-HIGH IS INITIAL.
WRITE: 20 'GL Account:'(043),33 S_HKONT-LOW COLOR 3,
'-', S_HKONT-HIGH COLOR 3.
ELSE.
WRITE: 20 'GL Account:'(043),33 S_HKONT-LOW COLOR 3.
ENDIF.
ENDIF.
ELSE.
IF NOT S_HKONT IS INITIAL.
IF NOT S_HKONT-HIGH IS INITIAL.
WRITE: /2 'GL Account:'(043),14 S_HKONT-LOW COLOR 3,
'-', S_HKONT-HIGH COLOR 3.
ELSE.
WRITE: /2 'GL Account:'(043),14 S_HKONT-LOW COLOR 3.
ENDIF.
ENDIF.
ENDIF.
WRITE: 183 'Run Date:'(029), SY-DATUM.
FORMAT COLOR COL_HEADING.
WRITE AT /1(203) SY-ULINE .
WRITE: / SY-VLINE, 2(10) 'Customer'(008) CENTERED,
12 SY-VLINE, 13(30) 'Customer Name'(009),
43 SY-VLINE, 44(3) 'Cty'(014) CENTERED,
47 SY-VLINE, 48(15) 'Amount'(013) RIGHT-JUSTIFIED,
63 SY-VLINE, 64(4) 'Curr'(011) CENTERED,
68 SY-VLINE, 69(15) 'Overdue'(012) CENTERED,
84 SY-VLINE, 85(15) '0 - 30 Days'(010) CENTERED,
100 SY-VLINE,101(15) '31 - 60 Days'(028) CENTERED,
116 SY-VLINE,117(15) '61 - 90 Days'(021) CENTERED,
132 SY-VLINE,133(15) '91 - 120 Days'(022) CENTERED,
148 SY-VLINE,149(15) 'Above 120 Days'(023) CENTERED,
164 SY-VLINE,165(10) 'Due Date'(024) CENTERED,
175 SY-VLINE,176(5) 'PayT'(025) CENTERED,
181 SY-VLINE,182(10) 'Bill.Doc.'(026) CENTERED,
192 SY-VLINE,193(10) 'Doc.No.'(027) CENTERED,
203 SY-VLINE.
WRITE AT /1(203) SY-ULINE.
FORMAT COLOR OFF.
ENDFORM. " COL_HEADING
&----
*& Form COL_HEADING1
&----
Write the Column Headings for summary report
----
FORM COL_HEADING1.
SKIP .
WRITE: /54 'DEBTOR AGEING REPORT (SUMMARY) AS AT:'(033) CENTERED,
92 P_DATE CENTERED, 158 SY-PAGNO.
SKIP .
WRITE: /2 'CoCode:'(016), 13(4) P_BUKRS COLOR 3.
IF NOT S_KUNNR IS INITIAL.
IF NOT S_KUNNR-HIGH IS INITIAL.
WRITE: 20 'Customer:'(041),33 S_KUNNR-LOW COLOR 3,
'-', S_KUNNR-HIGH COLOR 3.
ELSE.
WRITE: 20 'Customer:'(041),33 S_KUNNR-LOW COLOR 3.
ENDIF.
ENDIF.
IF NOT S_LAND1 IS INITIAL.
IF NOT S_LAND1-HIGH IS INITIAL.
WRITE: /2 'Country:'(042),13(4) S_LAND1-LOW COLOR 3,
'-', S_LAND1-HIGH COLOR 3.
ELSE.
WRITE: /2 'Country:'(042),13(4) S_LAND1-LOW COLOR 3.
ENDIF.
IF NOT S_HKONT IS INITIAL.
IF NOT S_HKONT-HIGH IS INITIAL.
WRITE: 20 'GL Account:'(043),33 S_HKONT-LOW COLOR 3,
'-', S_HKONT-HIGH COLOR 3.
ELSE.
WRITE: 20 'GL Account:'(043),33 S_HKONT-LOW COLOR 3.
ENDIF.
ENDIF.
ELSE.
IF NOT S_HKONT IS INITIAL.
IF NOT S_HKONT-HIGH IS INITIAL.
WRITE: /2 'GL Account:'(043),14 S_HKONT-LOW COLOR 3,
'-', S_HKONT-HIGH COLOR 3.
ELSE.
WRITE: /2 'GL Account:'(043),14 S_HKONT-LOW COLOR 3.
ENDIF.
ENDIF.
ENDIF.
WRITE: 144 'Run Date:'(029), SY-DATUM.
FORMAT COLOR COL_HEADING.
WRITE AT /1(164) SY-ULINE .
WRITE: / SY-VLINE, 2(10) 'Customer'(008) CENTERED,
12 SY-VLINE, 13(30) 'Customer Name'(009),
43 SY-VLINE, 44(3) 'Cty'(014) CENTERED,
47 SY-VLINE, 48(15) 'Amount'(013) RIGHT-JUSTIFIED,
63 SY-VLINE, 64(4) 'Curr'(011) CENTERED,
68 SY-VLINE, 69(15) 'Overdue'(012) CENTERED,
84 SY-VLINE, 85(15) '0 - 30 Days'(010) CENTERED,
100 SY-VLINE,101(15) '31 - 60 Days'(028) CENTERED,
116 SY-VLINE,117(15) '61 - 90 Days'(021) CENTERED,
132 SY-VLINE,133(15) '91 - 120 Days'(022) CENTERED,
148 SY-VLINE,149(15) 'Above 120 Days'(023) CENTERED,
164 SY-VLINE.
WRITE AT /1(164) SY-ULINE.
FORMAT COLOR OFF.
ENDFORM. " COL_HEADING1
&----
*& Form COL_HEADING2
&----
Write the Column Headings for summary report(in Doc Curr)
----
FORM COL_HEADING2.
SKIP .
WRITE: /99 'DEBTOR AGEING REPORT AS AT:'(019) CENTERED,
127 P_DATE CENTERED, 220 SY-PAGNO.
SKIP .
WRITE: /2 'CoCode:'(016),13(4) P_BUKRS COLOR 3.
IF NOT S_KUNNR IS INITIAL.
IF NOT S_KUNNR-HIGH IS INITIAL.
WRITE: 20 'Customer:'(041),33 S_KUNNR-LOW COLOR 3,
'-', S_KUNNR-HIGH COLOR 3.
ELSE.
WRITE: 20 'Customer:'(041),33 S_KUNNR-LOW COLOR 3.
ENDIF.
ENDIF.
IF NOT S_LAND1 IS INITIAL.
IF NOT S_LAND1-HIGH IS INITIAL.
WRITE: /2 'Country:'(042),13(4) S_LAND1-LOW COLOR 3,
'-', S_LAND1-HIGH COLOR 3.
ELSE.
WRITE: /2 'Country:'(042),13(4) S_LAND1-LOW COLOR 3.
ENDIF.
IF NOT S_HKONT IS INITIAL.
IF NOT S_HKONT-HIGH IS INITIAL.
WRITE: 20 'GL Account:'(043),33 S_HKONT-LOW COLOR 3,
'-', S_HKONT-HIGH COLOR 3.
ELSE.
WRITE: 20 'GL Account:'(043),33 S_HKONT-LOW COLOR 3.
ENDIF.
ENDIF.
ELSE.
IF NOT S_HKONT IS INITIAL.
IF NOT S_HKONT-HIGH IS INITIAL.
WRITE: /2 'GL Account:'(043),14 S_HKONT-LOW COLOR 3,
'-', S_HKONT-HIGH COLOR 3.
ELSE.
WRITE: /2 'GL Account:'(043),14 S_HKONT-LOW COLOR 3.
ENDIF.
ENDIF.
ENDIF.
WRITE: 204 'Run Date:'(029), SY-DATUM.
FORMAT COLOR COL_HEADING.
WRITE AT /1(225) SY-ULINE .
WRITE: / SY-VLINE, 2(10) 'Customer'(008) CENTERED,
12 SY-VLINE, 13(30) 'Customer Name'(009),
43 SY-VLINE, 44(3) 'Cty'(014) CENTERED,
47 SY-VLINE, 48(15) 'Amount'(013) RIGHT-JUSTIFIED,
63 SY-VLINE, 64(4) 'Curr'(011) CENTERED,
68 SY-VLINE, 69(15) 'Overdue'(012) CENTERED,
84 SY-VLINE, 85(15) '0 - 30 Days'(010) CENTERED,
100 SY-VLINE,101(15) '31 - 60 Days'(028) CENTERED,
116 SY-VLINE,117(15) '61 - 90 Days'(021) CENTERED,
132 SY-VLINE,133(15) '91 - 120 Days'(022) CENTERED,
148 SY-VLINE,149(15) 'Above 120 Days'(023) CENTERED,
164 SY-VLINE,165(10) 'Due Date'(024) CENTERED,
175 SY-VLINE,176(5) 'PayT'(025) CENTERED,
181 SY-VLINE,182(10) 'Bill.Doc.'(026) CENTERED,
192 SY-VLINE,193(10) 'Doc.No.'(027) CENTERED,
203 SY-VLINE,204(16) 'Amount(Doc.Curr)'(039),
220 SY-VLINE,221(4) 'Curr'(040),
225 SY-VLINE.
WRITE AT /1(225) SY-ULINE.
FORMAT COLOR OFF.
ENDFORM. " COL_HEADING2
&----
*& Form GET_OPEN_DATA
&----
Get the Customer Open Items from BSID
----
FORM GET_OPEN_DATA.
SELECT A~KUNNR " Customer Number
A~GJAHR " Fiscal Year
A~BELNR " Acc.Document
A~BUZEI " Item
A~BUDAT " Posting Date
A~SHKZG " Dr/Cr Indicator
A~DMBTR " Amount(Local Curr)
A~WRBTR " Amount(Doc Curr)
A~DMBE2 " Amount(USD)
A~WAERS " Currency
A~ZTERM " Payment Terms
A~VBELN " Billing Doc
A~ZFBDT " Baseline Date
A~ZBD1T " No of days
A~HKONT " GL account
B~NAME1 " Customer Name
B~LAND1 " Country
INTO TABLE IT_BSID
FROM BSID AS A JOIN KNA1 AS B
ON AKUNNR = BKUNNR
WHERE A~BUKRS = P_BUKRS AND
A~KUNNR IN S_KUNNR AND
A~HKONT IN S_HKONT AND
B~LAND1 IN S_LAND1 AND
A~BUDAT LE P_DATE.
SORT IT_BSID BY KUNNR GJAHR BELNR BUZEI BUDAT.
ENDFORM. " GET_OPEN_DATA
&----
*& Form GET_CLOSE_DATA
&----
Get the Customer closed Items from BSID
----
FORM GET_CLOSE_DATA.
SELECT A~KUNNR " Customer Number
A~GJAHR " Fiscal Year
A~BELNR " Acc.Document
A~BUZEI " Item
A~BUDAT " Posting Date
A~SHKZG " Dr/Cr Indicator
A~DMBTR " Amount(Local Curr)
A~WRBTR " Amount(Doc Curr)
A~DMBE2 " Amount(USD)
A~WAERS " Currency
A~ZTERM " Payment Terms
A~VBELN " Billing Doc
A~ZFBDT " Baseline Date
A~ZBD1T " No of days
A~HKONT " GL account
B~NAME1 " Customer Name
B~LAND1 " Country
INTO TABLE IT_BSAD
FROM BSAD AS A JOIN KNA1 AS B
ON AKUNNR = BKUNNR
WHERE A~BUKRS = P_BUKRS AND
A~KUNNR IN S_KUNNR AND
A~HKONT IN S_HKONT AND
B~LAND1 IN S_LAND1 AND
A~AUGDT > P_DATE AND
A~BUDAT LE P_DATE.
SORT IT_BSAD BY KUNNR GJAHR BELNR BUZEI BUDAT.
ENDFORM. " GET_CLOSE_DATA
&----
*& Form PROCESS_DATA
&----
Get the data from BSID,BSAD and KNA1 into one int.table
----
FORM PROCESS_DATA.
*Move the data from BSID to final output int table
LOOP AT IT_BSID.
MOVE-CORRESPONDING IT_BSID TO IT_REPORT.
IT_REPORT-DUE_DATE = IT_BSID-ZFBDT + IT_BSID-ZBD1T.
APPEND IT_REPORT.
CLEAR IT_REPORT.
ENDLOOP.
*Move the data from BSAD to final output int table
LOOP AT IT_BSAD.
MOVE-CORRESPONDING IT_BSAD TO IT_REPORT.
IT_REPORT-DUE_DATE = IT_BSAD-ZFBDT + IT_BSAD-ZBD1T.
APPEND IT_REPORT.
CLEAR IT_REPORT.
ENDLOOP.
SORT IT_REPORT BY KUNNR BELNR.
LOOP AT IT_REPORT.
IF IT_REPORT-SHKZG = 'H'. " Credit
IT_REPORT-DMBTR = IT_REPORT-DMBTR * -1.
IT_REPORT-DMBE2 = IT_REPORT-DMBE2 * -1.
ENDIF.
V_DAYS = IT_REPORT-DUE_DATE - P_DATE.
For Company Code Currency
IF P_RB1 = 'X'.
IF V_DAYS LE 0.
IT_REPORT-DUE_AMNT = IT_REPORT-DMBTR.
ELSEIF V_DAYS BETWEEN 1 AND 30.
IT_REPORT-D_AMNT1 = IT_REPORT-DMBTR.
ELSEIF V_DAYS BETWEEN 31 AND 60.
IT_REPORT-D_AMNT2 = IT_REPORT-DMBTR.
ELSEIF V_DAYS BETWEEN 61 AND 90.
IT_REPORT-D_AMNT3 = IT_REPORT-DMBTR.
ELSEIF V_DAYS BETWEEN 91 AND 120.
IT_REPORT-D_AMNT4 = IT_REPORT-DMBTR.
ELSEIF V_DAYS > 120.
IT_REPORT-D_AMNT5 = IT_REPORT-DMBTR.
ENDIF.
For Group Currency
ELSE.
IF V_DAYS LE 0.
IT_REPORT-DUE_AMNT = IT_REPORT-DMBE2.
ELSEIF V_DAYS BETWEEN 1 AND 30.
IT_REPORT-D_AMNT1 = IT_REPORT-DMBE2.
ELSEIF V_DAYS BETWEEN 31 AND 60.
IT_REPORT-D_AMNT2 = IT_REPORT-DMBE2.
ELSEIF V_DAYS BETWEEN 61 AND 90.
IT_REPORT-D_AMNT3 = IT_REPORT-DMBE2.
ELSEIF V_DAYS BETWEEN 91 AND 120.
IT_REPORT-D_AMNT4 = IT_REPORT-DMBE2.
ELSEIF V_DAYS > 120.
IT_REPORT-D_AMNT5 = IT_REPORT-DMBE2.
ENDIF.
ENDIF.
MODIFY IT_REPORT INDEX SY-TABIX.
ENDLOOP.
ENDFORM. " PROCESS_DATA
&----
*& Form WRITE_REPORT
&----
Write the Detailed Report Output
----
FORM WRITE_REPORT.
CLEAR: V_SUM1,V_SUM2,V_SUM3,V_SUM4,V_WAERS,
V_SUM5,V_SUM6,V_SUM7,V_SUM8.
LOOP AT IT_REPORT.
at new kunnr.
READ TABLE IT_REPORT INDEX SY-TABIX.
WRITE: / SY-VLINE, 2(10) IT_REPORT-KUNNR,
12 SY-VLINE, 13(30) IT_REPORT-NAME1,
43 SY-VLINE, 44(3) IT_REPORT-LAND1,
47 SY-VLINE.
endat.
IF P_RB1 = 'X'.
SELECT SINGLE WAERS FROM T001
INTO V_WAERS WHERE BUKRS = P_BUKRS.
WRITE: 1 SY-VLINE, 12 SY-VLINE,
43 SY-VLINE,
47 SY-VLINE,
48(15) IT_REPORT-DMBTR CURRENCY IT_REPORT-WAERS,
63 SY-VLINE, 64(4) V_WAERS,
68 SY-VLINE.
ELSE.
WRITE: 1 SY-VLINE, 12 SY-VLINE,
43 SY-VLINE,
47 SY-VLINE,
48(15) IT_REPORT-DMBE2 CURRENCY IT_REPORT-WAERS,
63 SY-VLINE,64(4) C_DOC_WAERS,
68 SY-VLINE.
ENDIF.
WRITE: 69(15) IT_REPORT-DUE_AMNT CURRENCY IT_REPORT-WAERS,
84 SY-VLINE,
85(15) IT_REPORT-D_AMNT1 CURRENCY IT_REPORT-WAERS,
100 SY-VLINE,
101(15) IT_REPORT-D_AMNT2 CURRENCY IT_REPORT-WAERS,
116 SY-VLINE,
117(15) IT_REPORT-D_AMNT3 CURRENCY IT_REPORT-WAERS,
132 SY-VLINE,
133(15) IT_REPORT-D_AMNT4 CURRENCY IT_REPORT-WAERS,
148 SY-VLINE,
149(15) IT_REPORT-D_AMNT5 CURRENCY IT_REPORT-WAERS,
164 SY-VLINE,165(10) IT_REPORT-DUE_DATE,
175 SY-VLINE,176(5) IT_REPORT-ZTERM,
181 SY-VLINE,182(10) IT_REPORT-VBELN,
192 SY-VLINE,193(10) IT_REPORT-BELNR,
203 SY-VLINE.
IF P_CHK1 = 'X'.
WRITE: 204(16) IT_REPORT-WRBTR CURRENCY IT_REPORT-WAERS,
220 SY-VLINE, 221(4) IT_REPORT-WAERS,
225 SY-VLINE.
ENDIF.
new-line.
Totals for end of each Customer
AT END OF KUNNR.
IF P_CHK1 = 'X'.
WRITE AT /1(225) SY-ULINE.
ELSE.
WRITE AT /1(203) SY-ULINE.
ENDIF.
SUM.
FORMAT COLOR 4.
IF P_RB1 = 'X'.
WRITE: /1 SY-VLINE, 2 'Total:'(015),
12 SY-VLINE,
13(10) IT_REPORT-KUNNR,
43 SY-VLINE,47 SY-VLINE,
48(15) IT_REPORT-DMBTR CURRENCY IT_REPORT-WAERS,
63 SY-VLINE, 64(3) V_WAERS,
68 SY-VLINE,
69(15) IT_REPORT-DUE_AMNT CURRENCY IT_REPORT-WAERS,
84 SY-VLINE,
85(15) IT_REPORT-D_AMNT1 CURRENCY IT_REPORT-WAERS,
100 SY-VLINE,
101(15) IT_REPORT-D_AMNT2 CURRENCY IT_REPORT-WAERS,
116 SY-VLINE,
117(15) IT_REPORT-D_AMNT3 CURRENCY IT_REPORT-WAERS,
132 SY-VLINE,
133(15) IT_REPORT-D_AMNT4 CURRENCY IT_REPORT-WAERS,
148 SY-VLINE,
149(15) IT_REPORT-D_AMNT5 CURRENCY IT_REPORT-WAERS,
164 SY-VLINE, 175 SY-VLINE,
181 SY-VLINE, 192 SY-VLINE,
203 SY-VLINE.
IF P_CHK1 = 'X'.
WRITE: 220 SY-VLINE, 225 SY-VLINE.
ENDIF.
ELSE.
WRITE: /1 SY-VLINE, 2 'Total:'(015),
12 SY-VLINE,
13(10) IT_REPORT-KUNNR,
43 SY-VLINE,
47 SY-VLINE,
48(15) IT_REPORT-DMBE2 CURRENCY IT_REPORT-WAERS,
63 SY-VLINE, 64(3) C_DOC_WAERS,
68 SY-VLINE,
69(15) IT_REPORT-DUE_AMNT CURRENCY IT_REPORT-WAERS,
84 SY-VLINE,
85(15) IT_REPORT-D_AMNT1 CURRENCY IT_REPORT-WAERS,
100 SY-VLINE,
101(15) IT_REPORT-D_AMNT2 CURRENCY IT_REPORT-WAERS,
116 SY-VLINE,
117(15) IT_REPORT-D_AMNT3 CURRENCY IT_REPORT-WAERS,
132 SY-VLINE,
133(15) IT_REPORT-D_AMNT4 CURRENCY IT_REPORT-WAERS,
148 SY-VLINE,
149(15) IT_REPORT-D_AMNT5 CURRENCY IT_REPORT-WAERS,
164 SY-VLINE, 175 SY-VLINE,
181 SY-VLINE, 192 SY-VLINE,
203 SY-VLINE.
IF P_CHK1 = 'X'.
WRITE: 220 SY-VLINE, 225 SY-VLINE.
ENDIF.
ENDIF.
FORMAT COLOR OFF.
IF P_CHK1 = 'X'.
WRITE AT /1(225) SY-ULINE.
ELSE.
WRITE AT /1(203) SY-ULINE.
ENDIF.
ENDAT.
V_SUM1 = V_SUM1 + IT_REPORT-DMBTR.
V_SUM2 = V_SUM2 + IT_REPORT-DUE_AMNT.
V_SUM3 = V_SUM3 + IT_REPORT-D_AMNT1.
V_SUM4 = V_SUM4 + IT_REPORT-D_AMNT2.
V_SUM5 = V_SUM5 + IT_REPORT-D_AMNT3.
V_SUM6 = V_SUM6 + IT_REPORT-D_AMNT4.
V_SUM7 = V_SUM7 + IT_REPORT-D_AMNT5.
V_SUM8 = V_SUM8 + IT_REPORT-DMBE2.
Hiding the Acc doc no for interactic screen.
HIDE IT_REPORT-BELNR.
HIDE IT_REPORT-BUDAT.
CLEAR:IT_REPORT-BELNR, IT_REPORT-BUDAT.
ENDLOOP.
Grand Totals for all customers
FORMAT COLOR 3.
WRITE: /1 SY-VLINE, 2 'Gr.Total'(034),
12 SY-VLINE,13 'As At:'(035),P_DATE,
43 SY-VLINE,
47 SY-VLINE.
For Company Code Currency
IF P_RB1 = 'X'.
WRITE: 48(15) V_SUM1 CURRENCY IT_REPORT-WAERS,
63 SY-VLINE, 64(4) V_WAERS,
68 SY-VLINE.
For Group Currency (USD)
ELSE.
WRITE: 48(15) V_SUM8 CURRENCY IT_REPORT-WAERS,
63 SY-VLINE, 64(3) C_DOC_WAERS,
68 SY-VLINE.
ENDIF.
WRITE: 69(15) V_SUM2 CURRENCY IT_REPORT-WAERS,
84 SY-VLINE,
85(15) V_SUM3 CURRENCY IT_REPORT-WAERS,
100 SY-VLINE,
101(15) V_SUM4 CURRENCY IT_REPORT-WAERS,
116 SY-VLINE,
117(15) V_SUM5 CURRENCY IT_REPORT-WAERS,
132 SY-VLINE,
133(15) V_SUM6 CURRENCY IT_REPORT-WAERS,
148 SY-VLINE,
149(15) V_SUM7 CURRENCY IT_REPORT-WAERS,
164 SY-VLINE, 175 SY-VLINE,
181 SY-VLINE, 192 SY-VLINE,
203 SY-VLINE.
IF P_CHK1 = 'X'.
WRITE: 220 SY-VLINE, 225 SY-VLINE.
ENDIF.
FORMAT COLOR OFF.
IF P_CHK1 = 'X'.
WRITE AT /1(225) SY-ULINE.
ELSE.
WRITE AT /1(203) SY-ULINE.
ENDIF.
ENDFORM. " WRITE_REPORT
&----
*& Form WRITE_REPORT1
&----
Write the Summary Report Output
----
FORM WRITE_REPORT1.
CLEAR: V_SUM1,V_SUM2,V_SUM3,V_SUM4,V_WAERS,
V_SUM5,V_SUM6,V_SUM7,V_SUM8.
LOOP AT IT_REPORT.
AT NEW KUNNR.
READ TABLE IT_REPORT INDEX SY-TABIX.
WRITE: / SY-VLINE, 2(10) IT_REPORT-KUNNR,
12 SY-VLINE, 13(30) IT_REPORT-NAME1,
43 SY-VLINE, 44(3) IT_REPORT-LAND1,
47 SY-VLINE.
ENDAT.
AT END OF KUNNR.
SUM.
IF P_RB1 = 'X'.
SELECT SINGLE WAERS FROM T001
INTO V_WAERS WHERE BUKRS = P_BUKRS.
WRITE: 1 SY-VLINE, 12 SY-VLINE,
43 SY-VLINE, 47 SY-VLINE,
48(15) IT_REPORT-DMBTR CURRENCY IT_REPORT-WAERS,
63 SY-VLINE, 64(4) V_WAERS,
68 SY-VLINE,
69(15) IT_REPORT-DUE_AMNT CURRENCY IT_REPORT-WAERS,
84 SY-VLINE,
85(15) IT_REPORT-D_AMNT1 CURRENCY IT_REPORT-WAERS,
100 SY-VLINE,
101(15) IT_REPORT-D_AMNT2 CURRENCY IT_REPORT-WAERS,
116 SY-VLINE,
117(15) IT_REPORT-D_AMNT3 CURRENCY IT_REPORT-WAERS,
132 SY-VLINE,
133(15) IT_REPORT-D_AMNT4 CURRENCY IT_REPORT-WAERS,
148 SY-VLINE,
149(15) IT_REPORT-D_AMNT5 CURRENCY IT_REPORT-WAERS,
164 SY-VLINE.
ELSE.
WRITE: 1 SY-VLINE, 12 SY-VLINE,
43 SY-VLINE, 47 SY-VLINE,
48(15) IT_REPORT-DMBE2 CURRENCY IT_REPORT-WAERS,
63 SY-VLINE, 64(4) C_DOC_WAERS,
68 SY-VLINE,
69(15) IT_REPORT-DUE_AMNT CURRENCY IT_REPORT-WAERS,
84 SY-VLINE,
85(15) IT_REPORT-D_AMNT1 CURRENCY IT_REPORT-WAERS,
100 SY-VLINE,
101(15) IT_REPORT-D_AMNT2 CURRENCY IT_REPORT-WAERS,
116 SY-VLINE,
117(15) IT_REPORT-D_AMNT3 CURRENCY IT_REPORT-WAERS,
132 SY-VLINE,
133(15) IT_REPORT-D_AMNT4 CURRENCY IT_REPORT-WAERS,
148 SY-VLINE,
149(15) IT_REPORT-D_AMNT5 CURRENCY IT_REPORT-WAERS,
164 SY-VLINE.
ENDIF.
WRITE AT /1(164) SY-ULINE.
ENDAT.
Totals
V_SUM1 = V_SUM1 + IT_REPORT-DMBTR.
V_SUM2 = V_SUM2 + IT_REPORT-DUE_AMNT.
V_SUM3 = V_SUM3 + IT_REPORT-D_AMNT1.
V_SUM4 = V_SUM4 + IT_REPORT-D_AMNT2.
V_SUM5 = V_SUM5 + IT_REPORT-D_AMNT3.
V_SUM6 = V_SUM6 + IT_REPORT-D_AMNT4.
V_SUM7 = V_SUM7 + IT_REPORT-D_AMNT5.
V_SUM8 = V_SUM8 + IT_REPORT-DMBE2.
Hiding the Acc doc no for interactic screen.
HIDE IT_REPORT-BELNR.
HIDE IT_REPORT-BUDAT.
CLEAR: IT_REPORT-BELNR,
IT_REPORT-BUDAT.
ENDLOOP.
Calculation of Grand Totals
FORMAT COLOR 3.
WRITE: /1 SY-VLINE, 2 'Gr.Total'(034),
12 SY-VLINE,13 'As At:'(035),P_DATE,
43 SY-VLINE,
47 SY-VLINE.
For Company Code Currency
IF P_RB1 = 'X'.
WRITE: 48(15) V_SUM1 CURRENCY IT_REPORT-WAERS,
63 SY-VLINE, 64(4) V_WAERS,
68 SY-VLINE.
For Group Currency (USD)
ELSE.
WRITE: 48(15) V_SUM8 CURRENCY IT_REPORT-WAERS,
63 SY-VLINE, 64(3) C_DOC_WAERS,
68 SY-VLINE.
ENDIF.
WRITE: 69(15) V_SUM2 CURRENCY IT_REPORT-WAERS,
84 SY-VLINE,
85(15) V_SUM3 CURRENCY IT_REPORT-WAERS,
100 SY-VLINE,
101(15) V_SUM4 CURRENCY IT_REPORT-WAERS,
116 SY-VLINE,
117(15) V_SUM5 CURRENCY IT_REPORT-WAERS,
132 SY-VLINE,
133(15) V_SUM6 CURRENCY IT_REPORT-WAERS,
148 SY-VLINE,
149(15) V_SUM7 CURRENCY IT_REPORT-WAERS,
164 SY-VLINE.
FORMAT COLOR OFF.
WRITE AT /1(164) SY-ULINE.
ENDFORM. " WRITE_REPORT1
&----
*& Form LINE_SEL
&----
When double clicked on BELNR leave to transaction FB03
----
FORM LINE_SEL.
DATA: LV_FIELD(20),
LV_VALUE(10),
LV_DATE(10),
LV_GJAHR LIKE BSAD-GJAHR.
GET CURSOR FIELD LV_FIELD VALUE LV_VALUE.
IF LV_FIELD = 'IT_REPORT-BELNR'.
IF NOT LV_VALUE IS INITIAL.
READ CURRENT LINE FIELD VALUE IT_REPORT-BUDAT INTO LV_DATE.
LV_GJAHR = LV_DATE+6(4).
SET PARAMETER ID 'BUK' FIELD P_BUKRS.
SET PARAMETER ID 'GJR' FIELD LV_GJAHR.
SET PARAMETER ID 'BLN' FIELD LV_VALUE.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDIF.
ENDIF.
ENDFORM. " LINE_SEL
Thanks,
Shankar
‎2007 Mar 22 4:31 AM
is it for ap aging?
do u know about inventory differences?
thanks,
phani.
‎2007 Mar 26 10:49 AM
‎2007 Mar 22 4:40 AM
Hi,
sapmenu img-> accounting->financial accounting->information system->reports for accounts payable accounting ->vendor balances
u CAN FIND ALL THE VENDOR AGEING ANALYSIS REPORT.
Thanks,
Shankar
‎2007 Mar 22 8:29 AM
‎2007 Mar 22 8:34 AM
Hi,
I thing that AP reports are done only in normal reports. So We can see the output only .
Thanks,
Shankar