2007 Dec 13 4:53 AM
Hi,
I am working on vendorwise age analysis report & in that i m using LFA1, BSIK, BSAK tables , but now I want to sort the POs on document type (BSART).
I am not getting how to extract the information.
Thanks.
Hi,
I am working on vendorwise age analysis report & in that i m using LFA1, BSIK, BSAK tables , but now I want to sort the POs on document type (BSART).
I am not getting how to extract the information.
Thanks.
2007 Dec 13 4:57 AM
Hi
Against our PO Vendor supplies goods and submits the Invoices
SO ageing is nothing but the dues days from the data of invoice date
We generally calculate the different invoices aging in the buckets like 0-30 days, 31-60 days, 61-90 days, 91-120 days etc
due date is calculated and that amount is displayed in that bucket.
see the sample report code
REPORT zfi_vendor_ageing
NO STANDARD PAGE HEADING
LINE-COUNT 58
line-size 168
MESSAGE-ID zh_msg.
************************************************************************
D A T A B A S E T A B L E S D E C L A R A T I O N
************************************************************************
TABLES: lfa1, " Vendor Master (General)
t001, " Company Codes
rfpdo.
************************************************************************
I N T E R N A L T A B L E S D E C L A R A T I O N S *
************************************************************************
Internal Table for Vendor Open Items Data
DATA: BEGIN OF int_bsik OCCURS 0,
lifnr LIKE bsik-lifnr, " Vendor Number
name1 LIKE lfa1-name1, " Vendor Name
shkzg LIKE bsik-shkzg, " Dr/Cr Indicator
belnr LIKE bsik-belnr, " Document Number
xblnr LIKE bsik-xblnr, " Ref Doc No
blart LIKE bsik-blart, " Document Type
zfbdt LIKE bsik-zfbdt, " Base Line Date
zbd1t LIKE bsik-zbd1t, " Due date1
zbd2t LIKE bsik-zbd2t, " Due Date2
zbd3t LIKE bsik-zbd3t, " Due Date3
waers LIKE bsik-waers, " Currency
dmbtr LIKE bsik-dmbtr, " Amount in Local Curr
END OF int_bsik.
Internal Table for Amounts Sum Up Data
DATA: BEGIN OF int_final OCCURS 0,
lifnr LIKE bsik-lifnr, " Vendor Number
name1 LIKE lfa1-name1, " Vendor Name
total1 LIKE bsik-dmbtr, " Amount in Local Curr
total2 LIKE bsik-dmbtr, " Amount in Local Curr
total3 LIKE bsik-dmbtr, " Amount in Local Curr
total4 LIKE bsik-dmbtr, " Amount in Local Curr
total5 LIKE bsik-dmbtr, " Amount in Local Curr
total6 LIKE bsik-dmbtr, " Amount in Local Curr
total LIKE bsik-dmbtr, " Amount in Local Curr
END OF int_final.
***********************************************************************
D A T A D E C L A R A T I O N S
***********************************************************************
DATA : v_flag, " Flag
v_gtotal1 LIKE bsik-dmbtr, " Amount Totals
v_gtotal2 LIKE bsik-dmbtr, " Amount Totals
v_gtotal3 LIKE bsik-dmbtr, " Amount Totals
v_gtotal4 LIKE bsik-dmbtr, " Amount Totals
v_gtotal5 LIKE bsik-dmbtr, " Amount Totals
v_gtotal6 LIKE bsik-dmbtr, " Amount Totals
v_gtotal LIKE bsik-dmbtr, " Amount Totals
v_subtotal1 LIKE bsik-dmbtr, " Amount Totals
v_subtotal2 LIKE bsik-dmbtr, " Amount Totals
v_subtotal3 LIKE bsik-dmbtr, " Amount Totals
v_subtotal4 LIKE bsik-dmbtr, " Amount Totals
v_subtotal5 LIKE bsik-dmbtr, " Amount Totals
v_subtotal6 LIKE bsik-dmbtr, " Amount Totals
v_subtotal LIKE bsik-dmbtr, " Amount Totals
v_date LIKE bsik-zfbdt, " Due Date
v_tage1(4), " Age 30 days
v_tage2(4), " Age 60 days
v_tage3(4), " Age 90 days
v_fir(15), " Column Text1
v_sec(15), " Column Text2
v_thir(15), " Column Text3
v_four(17), " Column Text4
v_fidd(4), " Days field1
v_sedd(4), " Days field2
v_thdd(4), " Days field3
v_fodd(4), " Days field4
v_str TYPE SY-LISEL, " String
v_str1(11), " String
v_tage(3), " String
v_date1(10). " Date field
***********************************************************************
R A N G E D E C L A R A T I O N S
***********************************************************************
RANGES: r_date1 FOR bsik-zfbdt, " Date Range 1
r_date2 FOR bsik-zfbdt, " Date Range 2
r_date3 FOR bsik-zfbdt, " Date Range 3
r_date4 FOR bsik-zfbdt. " Date Range 4
***********************************************************************
S E L E C T I O N S C R E E N *
***********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_lifnr FOR lfa1-lifnr. "Vendor account
PARAMETERS: p_bukrs LIKE t001-bukrs. "Co. Code
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS: p_allgst LIKE rfpdo-allgstid OBLIGATORY DEFAULT sy-datum.
"Open items at key date
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-003.
PARAMETERS: p_tage1 LIKE rfpdo1-allgfael DEFAULT '30',
p_tage2 LIKE rfpdo1-allgfael DEFAULT '60',
p_tage3 LIKE rfpdo1-allgfael DEFAULT '90',
p_tage4 LIKE rfpdo1-allgfael DEFAULT '120'.
SELECTION-SCREEN END OF BLOCK b3.
***********************************************************************
A T S E L E C T I O N S C R E E N *
***********************************************************************
AT SELECTION-SCREEN.
Validate the screen fields
PERFORM validate_flds.
***********************************************************************
S T A R T O F S E L E C T I O N *
***********************************************************************
START-OF-SELECTION.
Fetch main data
PERFORM fetch_data.
***********************************************************************
T O P O F P A G E
***********************************************************************
Header
TOP-OF-PAGE.
PERFORM header.
***********************************************************************
E N D O F P A G E
***********************************************************************
Footer
END-OF-PAGE.
ULINE.
***********************************************************************
T O P O F P A G E D U R I N G L I N E S E L E C T I O N *
***********************************************************************
Top of Page in Secondary List
TOP-OF-PAGE DURING LINE-SELECTION.
PERFORM header1.
***********************************************************************
A T L I N E S E L E C T I O N *
***********************************************************************
AT LINE-SELECTION.
Perform Line Selections
PERFORM line_selection.
***********************************************************************
E N D O F S E L E C T I O N
***********************************************************************
END-OF-SELECTION.
List generation
PERFORM basic_list.
&*********************************************************************
*& Form validate_flds
&*********************************************************************
Validation of Selection Screen fields
************************************************************************
FORM validate_flds .
Validate Vendor Code
CLEAR lfa1-lifnr.
SELECT lifnr UP TO 1 ROWS
INTO lfa1-lifnr
FROM lfa1
WHERE lifnr IN s_lifnr AND
spras = sy-langu.
ENDSELECT.
IF sy-subrc <> 0.
MESSAGE e000 WITH 'Invalid Vendor Code range'(023).
ENDIF.
Validate Company Code
CLEAR t001-bukrs.
SELECT bukrs UP TO 1 ROWS
INTO t001-bukrs
FROM t001
WHERE bukrs = p_bukrs AND
spras = sy-langu.
ENDSELECT.
IF sy-subrc <> 0.
MESSAGE e021. " Invalid Company Code range
ENDIF.
IF ( p_tage1 > p_tage2 ) OR ( p_tage1 > p_tage3 ) OR
( p_tage1 > p_tage4 ).
MESSAGE e999 WITH 'Column 1 greater'(004)
'than Column# 2 or 3 or 4'(005).
ENDIF.
*column 2
IF ( p_tage2 > p_tage3 ) OR ( p_tage1 > p_tage4 ).
MESSAGE e999 WITH 'Column 2 greater'(006)
'than Column# 3 or 4'(007).
ENDIF.
*column3
IF ( p_tage3 > p_tage4 ).
MESSAGE e999 WITH 'Column 3 greater'(008)
'than Column#4'(009).
ENDIF.
ENDFORM. " validate_flds
&----
*& Form fetch_data
&----
Fetching Data from Database Tables
----
FORM fetch_data .
Date Range Population
r_date1-sign = 'I'.
r_date1-option = 'BT'.
r_date1-low = p_allgst.
r_date1-high = r_date1-low + p_tage1.
APPEND r_date1.
r_date2-sign = 'I'.
r_date2-option = 'BT'.
r_date2-low = r_date1-high + 1.
r_date2-high = r_date1-low + p_tage2.
APPEND r_date2.
r_date3-sign = 'I'.
r_date3-option = 'BT'.
r_date3-low = r_date2-high + 1.
r_date3-high = r_date1-low + p_tage3.
APPEND r_date3.
r_date4-sign = 'I'.
r_date4-option = 'BT'.
r_date4-low = r_date3-high + 1.
r_date4-high = r_date1-low + p_tage4.
APPEND r_date4.
Select the Vendor Open Items data from BSIK
SELECT l~lifnr
l1~name1
b~waers
b~dmbtr
b~zfbdt
b~zbd1t
b~zbd2t
b~zbd3t
b~belnr
b~xblnr
b~shkzg
b~blart
INTO CORRESPONDING FIELDS OF TABLE int_bsik
FROM lfb1 AS l INNER JOIN lfa1 AS l1
ON llifnr = l1lifnr
INNER JOIN bsik AS b
ON llifnr = blifnr AND
lbukrs = bbukrs
WHERE l~lifnr IN s_lifnr AND
l~bukrs = p_bukrs and
b~zfbdt le p_allgst.
IF SY-SUBRC <> 0.
MESSAGE i000 WITH 'No Data found'(027).
ENDIF.
Removing the date limit to get the due items in the past
DELETE int_bsik WHERE
( blart NE 'RE' AND blart NE 'KR' ) OR
shkzg NE 'H'.
SORT int_bsik BY lifnr.
ENDFORM. " fetch_data
&----
*& Form header
&----
Display the Report Columns
----
FORM header .
v_tage1 = p_tage1 + 1.
v_tage2 = p_tage2 + 1.
v_tage3 = p_tage3 + 1.
v_fidd = p_tage1.
v_sedd = p_tage2.
v_thdd = p_tage3.
v_fodd = p_tage4.
MOVE v_fodd0(4) TO v_fodd1(3).
v_fodd+0(1) = space.
CONCATENATE '1 to'(010) v_fidd INTO v_fir.
CONCATENATE v_tage1 ' to '(011) v_sedd INTO v_sec.
CONCATENATE v_tage2 ' to '(011) v_thdd INTO v_thir.
CONCATENATE v_tage3 ' to '(011) space v_fodd INTO v_four.
Standard header
clear: v_date1, v_str, v_str1, v_tage.
write p_allgst to v_date1.
Move p_tage4 to v_tage.
concatenate '>' v_tage text-025 into v_str1.
concatenate
'Summary of Ageing Analysis for Vendor Open Invoices as on'(013)
v_date1 into v_str separated by space.
FORMAT COLOR OFF.
WRITE : /1(168) sy-uline.
FORMAT COLOR 1 INTENSIFIED.
WRITE :/1 sy-vline, 13 sy-vline, 49 sy-vline,
50(101) 'Invoices Due For(In Days)'(014) CENTERED,
151 sy-vline, 168 sy-vline .
WRITE :/1 sy-vline, 2(11) 'Vendor#'(015) CENTERED,
13 sy-vline ,14(35) 'Vendor Name'(016) CENTERED,
49 sy-vline,
50(101) sy-uline,151 sy-vline,
152(16) 'Total'(017) CENTERED,
168 sy-vline.
WRITE : /1 sy-vline,13 sy-vline, 49 sy-vline,
50(16) v_fir CENTERED, 66 sy-vline,
67(16) v_sec CENTERED, 83 sy-vline,
84(16) v_thir CENTERED, 100 sy-vline,
101(16) v_four CENTERED, 117 sy-vline,
118(16) v_str1 centered, 134 sy-vline,
135(16) 'Already Overdue'(018) CENTERED,151 sy-vline,
168 sy-vline.
FORMAT COLOR OFF.
WRITE : /1(168) sy-uline.
ENDFORM. " header
&----
*& Form basic_list
&----
Display the Basic List
----
FORM basic_list .
NEW-PAGE LINE-SIZE 168.
LOOP AT int_bsik.
CLEAR v_date.
IF int_bsik-zbd3t <> ' '.
v_date = int_bsik-zfbdt + int_bsik-zbd3t.
ELSE.
IF int_bsik-zbd2t <> ' '.
v_date = int_bsik-zfbdt + int_bsik-zbd2t.
ELSE.
v_date = int_bsik-zfbdt + int_bsik-zbd1t.
ENDIF.
ENDIF.
IF int_bsik-zbd1t = ' '.
v_date = int_bsik-zfbdt.
ENDIF.
IF v_date IN r_date1.
int_final-total1 = int_final-total1 + int_bsik-dmbtr.
ELSEIF v_date IN r_date2.
int_final-total2 = int_final-total2 + int_bsik-dmbtr.
ELSEIF v_date IN r_date3.
int_final-total3 = int_final-total3 + int_bsik-dmbtr.
ELSEIF v_date IN r_date4.
int_final-total4 = int_final-total4 + int_bsik-dmbtr.
ELSEif v_date > r_date4-high.
int_final-total5 = int_final-total5 + int_bsik-dmbtr.
ELSEif v_date < p_allgst.
int_final-total6 = int_final-total6 + int_bsik-dmbtr.
ENDIF.
AT END OF lifnr.
v_flag = 1.
ENDAT.
IF v_flag = 1.
int_final-lifnr = int_bsik-lifnr.
int_final-name1 = int_bsik-name1.
int_final-total = int_final-total1 + int_final-total2 +
int_final-total3 + int_final-total4 + int_final-total5 +
int_final-total6.
APPEND int_final.
v_gtotal1 = v_gtotal1 + int_final-total1.
v_gtotal2 = v_gtotal2 + int_final-total2.
v_gtotal3 = v_gtotal3 + int_final-total3.
v_gtotal4 = v_gtotal4 + int_final-total4.
v_gtotal5 = v_gtotal5 + int_final-total5.
v_gtotal6 = v_gtotal6 + int_final-total6.
v_gtotal = v_gtotal + int_final-total.
WRITE: /1 sy-vline,
2 int_final-lifnr COLOR 4 INTENSIFIED ON,
13 sy-vline,
14 int_final-name1 COLOR 4 INTENSIFIED ON,
49 sy-vline.
DATA : v_rem.
v_rem = sy-tabix MOD 2.
IF v_rem NE 0.
FORMAT COLOR 2 INTENSIFIED.
WRITE : 50 int_final-total1 CURRENCY int_bsik-waers,
66 sy-vline,
67 int_final-total2 CURRENCY int_bsik-waers,
83 sy-vline,
84 int_final-total3 CURRENCY int_bsik-waers,
100 sy-vline,
101 int_final-total4 CURRENCY int_bsik-waers,
117 sy-vline,
118 int_final-total5 CURRENCY int_bsik-waers,
134 sy-vline,
135 int_final-total6 CURRENCY int_bsik-waers,
151 sy-vline,
152 int_final-total CURRENCY int_bsik-waers,
168 sy-vline.
ELSE.
WRITE : 50 int_final-total1 CURRENCY int_bsik-waers,
66 sy-vline,
67 int_final-total2 CURRENCY int_bsik-waers,
83 sy-vline,
84 int_final-total3 CURRENCY int_bsik-waers,
100 sy-vline,
101 int_final-total4 CURRENCY int_bsik-waers,
117 sy-vline,
118 int_final-total5 CURRENCY int_bsik-waers,
134 sy-vline,
135 int_final-total6 CURRENCY int_bsik-waers,
151 sy-vline,
152 int_final-total CURRENCY int_bsik-waers,
168 sy-vline.
ENDIF.
FORMAT COLOR OFF.
HIDE int_final.
CLEAR int_final.
v_flag = 0.
ENDIF.
AT LAST.
WRITE : /1(168) sy-uline.
FORMAT COLOR 3 INTENSIFIED.
WRITE : /1 sy-vline, 2(47) 'GRAND TOTAL'(022) CENTERED,
49 sy-vline, 50 v_gtotal1 CURRENCY int_bsik-waers,
66 sy-vline, 67 v_gtotal2 CURRENCY int_bsik-waers,
83 sy-vline, 84 v_gtotal3 CURRENCY int_bsik-waers,
100 sy-vline,101 v_gtotal4 CURRENCY int_bsik-waers,
117 sy-vline,118 v_gtotal5 CURRENCY int_bsik-waers,
134 sy-vline,135 v_gtotal6 CURRENCY int_bsik-waers,
151 sy-vline,152 v_gtotal CURRENCY int_bsik-waers,
168 sy-vline.
HIDE : v_gtotal1,
v_gtotal2,
v_gtotal3,
v_gtotal4,
v_gtotal5,
v_gtotal6,
v_gtotal.
ENDAT.
FORMAT COLOR OFF.
ENDLOOP.
WRITE : /1(168) sy-uline.
ENDFORM. " basic_list
&----
*& Form line_selection
&----
When double clicked on the line display the seconday list
----
FORM line_selection .
NEW-PAGE LINE-SIZE 206.
Sy-lsind = 1.
DATA : v_rem,v_cnt LIKE sy-tabix.
v_cnt = 0.
SORT int_bsik BY belnr zfbdt.
LOOP AT int_bsik WHERE lifnr EQ int_final-lifnr.
v_rem = v_cnt MOD 2.
CLEAR v_date.
IF int_bsik-zbd3t <> ' '.
v_date = int_bsik-zfbdt + int_bsik-zbd3t.
ELSE.
IF int_bsik-zbd2t <> ' '.
v_date = int_bsik-zfbdt + int_bsik-zbd2t.
ELSE.
v_date = int_bsik-zfbdt + int_bsik-zbd1t.
ENDIF.
ENDIF.
IF int_bsik-zbd1t = ' '.
v_date = int_bsik-zfbdt.
ENDIF.
IF v_rem NE 0.
format color 2 intensified.
WRITE :/1 sy-vline, 2 int_bsik-belnr,
12 sy-vline,13 int_bsik-lifnr,
23 sy-vline,24 int_bsik-name1,
59 sy-vline,60 int_bsik-xblnr,
76 sy-vline,77 int_bsik-zfbdt,
87 sy-vline.
WRITE : 104 sy-vline,121 sy-vline,
138 sy-vline,155 sy-vline,
172 sy-vline, 189 sy-vline,
190 int_bsik-dmbtr CURRENCY int_bsik-waers,
206 sy-vline.
IF v_date IN r_date1.
v_subtotal1 = v_subtotal1 + int_bsik-dmbtr.
WRITE : 88 int_bsik-dmbtr CURRENCY int_bsik-waers.
ELSEIF v_date IN r_date2.
v_subtotal2 = v_subtotal2 + int_bsik-dmbtr.
WRITE : 105 int_bsik-dmbtr CURRENCY int_bsik-waers.
ELSEIF v_date IN r_date3.
v_subtotal3 = v_subtotal3 + int_bsik-dmbtr.
WRITE : 122 int_bsik-dmbtr CURRENCY int_bsik-waers.
ELSEIF v_date IN r_date4.
v_subtotal4 = v_subtotal4 + int_bsik-dmbtr.
WRITE : 139 int_bsik-dmbtr CURRENCY int_bsik-waers.
ELSEif v_date > r_date4-high.
v_subtotal5 = v_subtotal5 + int_bsik-dmbtr.
WRITE : 156 int_bsik-dmbtr CURRENCY int_bsik-waers.
ELSEif v_date < p_allgst.
v_subtotal6 = v_subtotal6 + int_bsik-dmbtr.
WRITE : 173 int_bsik-dmbtr CURRENCY int_bsik-waers.
ENDIF.
format color off.
ELSE.
WRITE :/1 sy-vline, 2 int_bsik-belnr,
12 sy-vline,13 int_bsik-lifnr,
23 sy-vline,24 int_bsik-name1,
59 sy-vline,60 int_bsik-xblnr,
76 sy-vline,77 int_bsik-zfbdt,
87 sy-vline.
WRITE : 104 sy-vline,121 sy-vline,
138 sy-vline,155 sy-vline,
172 sy-vline,189 sy-vline,
190 int_bsik-dmbtr CURRENCY int_bsik-waers,
206 sy-vline.
IF v_date IN r_date1.
v_subtotal1 = v_subtotal1 + int_bsik-dmbtr.
WRITE : 88 int_bsik-dmbtr CURRENCY int_bsik-waers.
ELSEIF v_date IN r_date2.
v_subtotal2 = v_subtotal2 + int_bsik-dmbtr.
WRITE : 105 int_bsik-dmbtr CURRENCY int_bsik-waers.
ELSEIF v_date IN r_date3.
v_subtotal3 = v_subtotal3 + int_bsik-dmbtr.
WRITE : 122 int_bsik-dmbtr CURRENCY int_bsik-waers.
ELSEIF v_date IN r_date4.
v_subtotal4 = v_subtotal4 + int_bsik-dmbtr.
WRITE : 139 int_bsik-dmbtr CURRENCY int_bsik-waers.
ELSEif v_date > r_date4-high.
v_subtotal5 = v_subtotal5 + int_bsik-dmbtr.
WRITE : 156 int_bsik-dmbtr CURRENCY int_bsik-waers.
ELSEif v_date < p_allgst.
v_subtotal6 = v_subtotal6 + int_bsik-dmbtr.
WRITE : 173 int_bsik-dmbtr CURRENCY int_bsik-waers.
ENDIF.
ENDIF.
FORMAT COLOR OFF.
v_cnt = v_cnt + 1.
ENDLOOP.
WRITE : /1(206) sy-uline.
v_subtotal = v_subtotal1 + v_subtotal2 + v_subtotal3
+ v_subtotal4 + v_subtotal5 + v_subtotal6.
FORMAT COLOR 3 INTENSIFIED.
WRITE : /1 sy-vline,
2(85) 'Total'(017) CENTERED CURRENCY int_bsik-waers ,
87 sy-vline,
88 v_subtotal1 CURRENCY int_bsik-waers,
104 sy-vline,
105 v_subtotal2 CURRENCY int_bsik-waers,
121 sy-vline,
122 v_subtotal3 CURRENCY int_bsik-waers,
138 sy-vline,
139 v_subtotal4 CURRENCY int_bsik-waers,
155 sy-vline,
156 v_subtotal5 CURRENCY int_bsik-waers,
172 sy-vline,
173 v_subtotal6 CURRENCY int_bsik-waers,
189 sy-vline,
190 v_subtotal CURRENCY int_bsik-waers,
206 sy-vline.
FORMAT COLOR OFF.
WRITE : /1(206) sy-uline.
CLEAR : v_subtotal,v_subtotal1,v_subtotal2,v_subtotal3,
v_subtotal4,v_subtotal5,v_gtotal1,v_gtotal2,v_gtotal3,
v_gtotal4, v_gtotal5,v_gtotal,v_subtotal6,v_gtotal6.
ENDFORM. " line_selection
&----
*& Form header1
&----
Secondary List Header
----
FORM header1 .
Standard header
clear: v_date1, v_str, v_str1, v_tage.
write p_allgst to v_date1.
Move p_tage4 to v_tage.
concatenate '>' v_tage text-025 into v_str1.
concatenate
'Details of Ageing Analysis for Vendor Open Invoices as on'(024)
v_date1 into v_str separated by space.
FORMAT COLOR 1 intensified.
WRITE :/1(206) sy-uline.
WRITE :/1 sy-vline,12 sy-vline ,
23 sy-vline,59 sy-vline,76 sy-vline,87 sy-vline,
88(101) 'Invoices Due For(In Days)'(014) CENTERED,
189 sy-vline,206 sy-vline.
WRITE : /1 sy-vline, 2(10) 'Doc Number'(021) CENTERED,
12 sy-vline, 13(10) 'Vendor#'(015) CENTERED,
23 sy-vline, 24(35) 'Vendor Name'(016) CENTERED,
59 sy-vline, 60(16) 'Ref invoice#'(019) CENTERED,
76 sy-vline, 77(10) 'Inv dt'(020) CENTERED,
87 sy-vline, 88(101) sy-uline,
189 sy-vline,190(16) 'Total'(017) CENTERED,
206 sy-vline.
WRITE : /1 sy-vline, 12 sy-vline,
23 sy-vline,59 sy-vline,
76 sy-vline,87 sy-vline,
88(16) v_fir CENTERED, 104 sy-vline,
105(16) v_sec CENTERED, 121 sy-vline,
122(16) v_thir CENTERED, 138 sy-vline,
139(16) v_four CENTERED, 155 sy-vline,
156(16) v_str1 CENTERED,
172 sy-vline,
173(16) 'Already Overdue'(018) CENTERED,
189 sy-vline,
206 sy-vline.
format color off.
WRITE : /1(206) sy-uline.
ENDFORM. " header1
Reward points for useful Answers
Regards
2007 Dec 13 5:04 AM
try this ZOUNR....
ITAB-EBELN = T_BSIK-ZUONR+0(10).
ITAB-EBELP = T_BSIK-ZUONR+10(5).
I think it will work... i'm not very sure abt ths
2007 Dec 13 5:07 AM
Hi Anita,
Once you have got the PO no u can sort them using the table ekko.
retrive the PO information like BSART from ekko and then u can filter .
plz reward if helpful......
Regards,
Rajesh Akarte
2007 Dec 13 5:09 AM
Using BSIK-BELNR fetch EBELN from BSEG,
select Po details from EKPO such that EKPO-EBELN = BSEG-EBELN.
2007 Dec 13 5:09 AM
Hi,
Pls refer the report for Vendor Performance report.
REPORT YMS_VENDORPERFORMANCE.
TABLES : BSIK, 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.
DATA : BEGIN OF T_LFA1 OCCURS 0,
LIFNR LIKE LFA1-LIFNR,
NAME1 LIKE LFA1-NAME1,
ADRNR LIKE LFA1-ADRNR,
END OF T_LFA1.
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 T_BSEG OCCURS 0,
ZFBDT LIKE BSEG-ZFBDT,
KOART LIKE BSEG-KOART,
KOSTL LIKE BSEG-KOSTL,
PROJK LIKE BSEG-PROJK,
END OF T_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,
TEXT(15).
DATA : BEGIN OF T_OUTPUT OCCURS 0,
LIFNR LIKE LFA1-LIFNR,
NAME1 LIKE LFA1-NAME1,
STREET LIKE ADRC-STREET,
CITY1 LIKE ADRC-CITY1,
OBJNR LIKE PRPS-OBJNR,
POSID LIKE PRPS-POSID,
KOSTL LIKE BSIK-KOSTL, " COST CENTER
UMSKZ LIKE BSIK-UMSKZ,
BELNR LIKE BSIK-BELNR,
BUKRS LIKE BSIK-BUKRS,
GJAHR LIKE BSIK-GJAHR,
wrbtr like bsik-wrbtr,
DMBTR LIKE BSIK-WRBTR,
HKONT LIKE BSIK-HKONT,
DIF1 LIKE BSIK-WRBTR,
DIF2 LIKE BSIK-WRBTR,
DIF3 LIKE BSIK-WRBTR,
DIF4 LIKE BSIK-WRBTR,
DIF5 LIKE BSIK-WRBTR,
DAYS LIKE BAPIFVDEXP_VZZBEPP-NUM4,
END OF T_OUTPUT.
Alv data declaration
TYPE-POOLS : SLIS.
DATA :ALV_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
ALV_FIELDCAT_LINE LIKE LINE OF ALV_FIELDCAT,
ALV_SORT TYPE SLIS_T_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 LIKE DISVARIANT,
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.
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_BUKRS FOR BSIK-BUKRS,
S_GJAHR FOR BSIK-GJAHR,
S_LIFNR FOR BSIK-LIFNR,
S_UMSKZ FOR BSIK-UMSKZ.
PARAMETERS : P_AUGDT LIKE BSIK-AUGDT OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.
SELECT-OPTIONS : S_DATE1 FOR BAPIFVDEXP_VZZBEPP-NUM4 NO-EXTENSION OBLIGATORY
DEFAULT 1 TO 30,
S_DATE2 FOR BAPIFVDEXP_VZZBEPP-NUM4 NO-EXTENSION OBLIGATORY
DEFAULT 30 TO 60,
S_DATE3 FOR BAPIFVDEXP_VZZBEPP-NUM4 NO-EXTENSION OBLIGATORY
DEFAULT 60 TO 90,
S_DATE4 FOR BAPIFVDEXP_VZZBEPP-NUM4 NO-EXTENSION OBLIGATORY
DEFAULT 90 TO 120,
S_DATE5 FOR BAPIFVDEXP_VZZBEPP-NUM4 NO-EXTENSION OBLIGATORY
DEFAULT 120 TO 150.
SELECTION-SCREEN END OF BLOCK B2.
INITIALIZATION.
START-OF-SELECTION.
PERFORM FETCH_DATA.
PERFORM DISPLAY.
&----
*& Form fetch_data
&----
text
----
--> p1 text
<-- p2 text
----
FORM FETCH_DATA .
SELECT *
INTO TABLE T_BSIK
FROM BSIK
WHERE BUKRS IN S_BUKRS
AND GJAHR IN S_GJAHR
AND LIFNR IN S_LIFNR
AND UMSKZ IN S_UMSKZ
AND UMSKZ NOT IN ('F','P','L','G').
AND zfbdt <= P_augdt.
IF SY-SUBRC = 0.
SELECT *
INTO TABLE T_BSAK
FROM BSAK
WHERE BUKRS IN S_BUKRS
AND GJAHR IN S_GJAHR
AND LIFNR IN S_LIFNR
AND UMSKZ IN S_UMSKZ
AND UMSKZ NOT IN ('F','P','L','G')
AND AUGDT > P_AUGDT.
LOOP AT T_BSAK.
MOVE-CORRESPONDING T_BSAK TO T_BSIK.
APPEND T_BSIK.
ENDLOOP.
LOOP AT T_BSIK.
if t_bsik-zfbdt is initial.
t_bsik-zfbdt = t_bsik-bldat.
modify t_bsik transporting zfbdt.
endif.
IF T_BSIK-BUDAT > P_AUGDT.
DELETE T_BSIK.
ENDIF.
if t_bsik-umskz > P_augdt.
ENDLOOP.
SELECT LIFNR
NAME1
ADRNR
INTO TABLE T_LFA1
FROM LFA1
FOR ALL ENTRIES IN T_BSIK
WHERE LIFNR = T_BSIK-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.
ENDIF.
LOOP AT T_BSIK.
IF T_BSIK-SHKZG = 'S'.
t_bsik-WRBTR = t_bsik-WRBTR * -1.
T_BSIK-DMBTR = T_BSIK-DMBTR * -1.
ENDIF.
REFRESH T_BSEG.
CLEAR : T_KOSTL, T_PROJK, T_OUTPUT.
IF T_BSIK-REBZG IS NOT INITIAL.
SELECT ZFBDT
KOART
KOSTL
PROJK
INTO TABLE T_BSEG "t_bsik-ZFBDT
FROM BSEG
WHERE BUKRS = T_BSIK-BUKRS
AND BELNR = T_BSIK-REBZG
AND GJAHR = T_BSIK-REBZJ
AND KOART IN ('K','S').
LOOP AT T_BSEG.
IF T_BSEG-KOART = 'K' AND T_BSEG-ZFBDT IS NOT INITIAL.
T_BSIK-BUDAT = T_BSEG-ZFBDT.
MODIFY T_BSIK TRANSPORTING BUDAT.
ELSEIF T_BSEG-KOART = 'S'.
T_KOSTL = T_BSEG-KOSTL.
T_PROJK = T_BSEG-PROJK.
ENDIF.
ENDLOOP.
ELSE.
SELECT SINGLE KOSTL PROJK
INTO (T_KOSTL, 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_BSIK TO T_OUTPUT.
T_OUTPUT-KOSTL = T_KOSTL.
CONCATENATE 'PR' T_PROJK INTO T_OUTPUT-OBJNR.
days = P_augdt - t_bsik-ZFBDT.
DAYS = P_AUGDT - T_BSIK-BUDAT.
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-LOW AND DAYS < S_DATE1-HIGH.
t_output-dif1 = t_bsik-wrbtr. " days.
T_OUTPUT-DIF1 = T_BSIK-DMBTR. " days.
ELSEIF DAYS >= S_DATE2-LOW AND DAYS < S_DATE2-HIGH.
t_output-dif2 = t_bsik-wrbtr. "days.
T_OUTPUT-DIF2 = T_BSIK-DMBTR. " days.
ELSEIF DAYS >= S_DATE3-LOW AND DAYS < S_DATE3-HIGH.
t_output-dif3 = t_bsik-wrbtr. "days.
T_OUTPUT-DIF3 = T_BSIK-DMBTR. " days.
ELSEIF DAYS >= S_DATE4-LOW AND DAYS < S_DATE4-HIGH.
t_output-dif4 = t_bsik-wrbtr. "days.
T_OUTPUT-DIF4 = T_BSIK-DMBTR. " days.
ELSEIF DAYS >= S_DATE5-LOW AND DAYS < S_DATE5-HIGH.
t_output-dif5 = t_bsik-wrbtr. "days.
T_OUTPUT-DIF5 = T_BSIK-DMBTR. " days.
ENDIF.
APPEND T_OUTPUT.
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.
ENDFORM. " fetch_data
&----
*& Form display
&----
text
----
--> p1 text
<-- p2 text
----
FORM DISPLAY .
PERFORM BUILD_ALV_LAYOUT.
PERFORM S_SORT_BUILD USING ALV_SORT[].
PERFORM BUILD_FIELD_CATALOGS.
PERFORM EVENTTAB_BUILD CHANGING GT_EVENTS.
SORT t_output BY .
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.
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.
ELSE.
*" Fatal error calling ALV
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_fieldname = 'CHK'.
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 *
----
........ *
----
--> LT_SORT *
----
FORM S_SORT_BUILD USING LT_SORT TYPE SLIS_T_SORTINFO_ALV.
DATA: LS_SORT TYPE SLIS_SORTINFO_ALV.
CLEAR LS_SORT.
LS_SORT-SPOS = 1.
LS_SORT-FIELDNAME = 'LIFNR'.
LS_SORT-UP = 'X'.
LS_SORT-GROUP = 'UL'.
LS_SORT-SUBTOT = 'X'.
APPEND LS_SORT TO LT_SORT.
CLEAR LS_SORT.
LS_SORT-SPOS = 2.
LS_SORT-FIELDNAME = 'BELNR'.
LS_SORT-UP = 'X'.
LS_SORT-SUBTOT = 'X'.
LS_SORT-GROUP = 'UL'.
APPEND LS_SORT TO LT_SORT.
CLEAR LS_SORT.
ENDFORM. "s_sort_build
&----
*& Form eventtab_build
&----
FORM EVENTTAB_BUILD CHANGING LT_EVENTS TYPE SLIS_T_EVENT.
FIELD-SYMBOLS: <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.
Output GSPC logo on report header
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE
I_LOGO = 'GSPC_LOGO'.
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'.
APPEND GS_LINE TO GT_TOP_OF_PAGE.
CLEAR GS_LINE.
GS_LINE-TYP = 'S'.
GS_LINE-KEY = 'Report ID:'.
GS_LINE-INFO = SY-REPID.
APPEND GS_LINE TO GT_TOP_OF_PAGE.
CLEAR GS_LINE.
GS_LINE-TYP = 'S'.
GS_LINE-KEY = 'User:'.
GS_LINE-INFO = SY-UNAME.
APPEND GS_LINE TO GT_TOP_OF_PAGE.
CLEAR GS_LINE.
GS_LINE-TYP = 'S'.
GS_LINE-KEY = 'Date:'.
WRITE SY-DATUM 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.
Output data from selection screen
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-hotspot = 'X'.
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.
Object number #
ALV_FIELDCAT_LINE-TABNAME = 'T_OUTPUT'.
ALV_FIELDCAT_LINE-SELTEXT_L = 'object #'.
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.
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.
General Ledger Account
ALV_FIELDCAT_LINE-TABNAME = 'T_OUTPUT'.
ALV_FIELDCAT_LINE-SELTEXT_L = 'General Ledger Account'.
ALV_FIELDCAT_LINE-FIELDNAME = 'HKONT'.
APPEND ALV_FIELDCAT_LINE TO ALV_FIELDCAT.
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.
Amount
ALV_FIELDCAT_LINE-TABNAME = 'T_OUTPUT'.
ALV_FIELDCAT_LINE-SELTEXT_L = 'Amount'.
alv_fieldcat_line-fieldname = 'WRBTR'.
ALV_FIELDCAT_LINE-FIELDNAME = 'DMBTR'.
ALV_FIELDCAT_LINE-NO_OUT = 'X'.
APPEND ALV_FIELDCAT_LINE TO ALV_FIELDCAT.
dif1
CLEAR TEXT.
READ TABLE S_DATE1 INDEX 1.
CONCATENATE 'DAYS ' S_DATE1-LOW '-' S_DATE1-HIGH INTO TEXT.
ALV_FIELDCAT_LINE-TABNAME = 'T_OUTPUT'.
ALV_FIELDCAT_LINE-SELTEXT_L = TEXT.
ALV_FIELDCAT_LINE-FIELDNAME = 'DIF1'.
ALV_FIELDCAT_LINE-DO_SUM = 'X'.
APPEND ALV_FIELDCAT_LINE TO ALV_FIELDCAT.
CLEAR ALV_FIELDCAT_LINE.
dif2
CLEAR TEXT.
READ TABLE S_DATE2 INDEX 1.
CONCATENATE 'DAYS ' S_DATE2-LOW '-' S_DATE2-HIGH INTO TEXT.
ALV_FIELDCAT_LINE-TABNAME = 'T_OUTPUT'.
ALV_FIELDCAT_LINE-SELTEXT_L = TEXT.
alv_fieldcat_line-no_out = 'X'.
ALV_FIELDCAT_LINE-FIELDNAME = 'DIF2'.
APPEND ALV_FIELDCAT_LINE TO ALV_FIELDCAT.
CLEAR ALV_FIELDCAT_LINE.
dif3
CLEAR TEXT.
READ TABLE S_DATE3 INDEX 1.
CONCATENATE 'DAYS ' S_DATE3-LOW '-' S_DATE3-HIGH INTO TEXT.
ALV_FIELDCAT_LINE-TABNAME = 'T_OUTPUT'.
ALV_FIELDCAT_LINE-SELTEXT_L = TEXT.
ALV_FIELDCAT_LINE-FIELDNAME = 'DIF3'.
APPEND ALV_FIELDCAT_LINE TO ALV_FIELDCAT.
CLEAR ALV_FIELDCAT_LINE.
dif4
CLEAR TEXT.
READ TABLE S_DATE4 INDEX 1.
CONCATENATE 'DAYS ' S_DATE4-LOW '-' S_DATE4-HIGH 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.
READ TABLE S_DATE5 INDEX 1.
CONCATENATE 'DAYS ' S_DATE5-LOW '-' S_DATE5-HIGH 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.
Days
ALV_FIELDCAT_LINE-TABNAME = 'T_OUTPUT'.
ALV_FIELDCAT_LINE-SELTEXT_L = 'Days'.
ALV_FIELDCAT_LINE-FIELDNAME = 'DAYS'.
alv_fieldcat_line-no_out = 'X'.
APPEND ALV_FIELDCAT_LINE TO ALV_FIELDCAT.
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.
WHEN 'FMB58'.
SET PARAMETER ID 'MAT' FIELD prtab-matnr.
CALL TRANSACTION 'MB58' AND SKIP FIRST SCREEN.
WHEN 'CHK'.
MOVE 'X' TO prtab-chk.
MODIFY prtab INDEX rs_selfield-tabindex.
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
Thanks,
<b>Sankar M</b>
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |