Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Need to be displayed in ALV grid

Former Member
0 Kudos

Dear All,

Below is my Program's code which is working accordingly. But in this code I am generating output as Basic list display. But I want my output to be displayed in ALV only. So from where I will start. Where to add code for Alv in my existing code. Can anybody help me out on the same.

Regards,

Abhay.

REPORT zfi_temp_rfkopr00

MESSAGE-ID FR

LINE-SIZE 132

NO STANDARD PAGE HEADING.

************************************************************************

  • Report Name : Vendor Open Items Ageing Report

  • Purpose : This report displays the Vendor Open Items based on

  • different Ageing days (Calculated by taking the Base

  • Line date and the days mentioned in Payment Terms)

*

************************************************************************

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

  • CALL FUNCTION 'Z_STANDARD_HEADER'

  • EXPORTING

  • title1 = 'Saudi International Petrochemical Company'(012)

  • title2 = v_str.

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.

  • CALL FUNCTION 'Z_STANDARD_HEADER'

  • EXPORTING

  • title1 = 'Saudi International Petrochemical Company'(012)

  • title2 = v_str.

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

4 REPLIES 4

Former Member
0 Kudos

after populating final internal table....pass it to ALV function module.....

remove code...invloving write statements...in end of selection....and header part of program.....

sample program.....

REPORT Z50651_ALV_INTERACTIVE MESSAGE-ID ZMSG_50651

LINE-SIZE 100

LINE-COUNT 60

NO STANDARD PAGE HEADING.

******************TABLES DECLARATION*****************

TABLES : VBAP,MARA.

*****************TYPE POOLS**************************

TYPE-POOLS : SLIS.

****************INTERNAL TABLES**********************

DATA : BEGIN OF IT_VBAP OCCURS 0,

VBELN LIKE VBAP-VBELN, "SALES DOCUMENT

POSNR LIKE VBAP-POSNR, "SALES DOCUMENT ITEM

MATNR LIKE VBAP-MATNR, "MATERIAL NUMBER

END OF IT_VBAP.

****************TEMPORARY VARIABLES******************

DATA : V_VBELN LIKE VBAP-VBELN."SALES DOCUMENT

DATA : V_MTART LIKE MARA-MTART. "MATERIAL TYPE

*****************FIELD CATALOG***********************

DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

****************LAYOUT*******************************

DATA : WA_LAYOUT TYPE SLIS_LAYOUT_ALV.

***************VARIANT*******************************

DATA : G_VARIANT LIKE DISVARIANT.

****************SAVE*********************************

DATA : G_SAVE(1) TYPE C.

*****************EVENTS******************************

DATA : XS_EVENTS TYPE SLIS_ALV_EVENT,

G_EVENTS TYPE SLIS_T_EVENT.

******************PF STATUS**************************

DATA : PF_STATUS TYPE SLIS_FORMNAME VALUE 'SET_PF_STATUS'.

******************USER COMMAND************************

DATA : USER_COMMAND TYPE SLIS_FORMNAME VALUE 'SET_USER_COMMAND',

R_UCOMM LIKE SY-UCOMM.

****************SELECTION SCREEN************************

SELECT-OPTIONS : S_VBELN FOR VBAP-VBELN.

***************AT SELECTION SCREEN*********************

AT SELECTION-SCREEN.

PERFORM VALIDATE.

**************START-OF-SELECTION**************************

START-OF-SELECTION.

PERFORM GET_DETAILS.

PERFORM FIELDCAT.

PERFORM LAYOUT.

PERFORM VARIANT.

PERFORM SAVE.

PERFORM EVENTS.

PERFORM ALV_DISPLAY.

*********************FORMS*******************************************

&----


*& Form validate

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM VALIDATE .

SELECT SINGLE VBELN

FROM VBAP

INTO V_VBELN

WHERE VBELN IN S_VBELN.

IF SY-SUBRC <> 0.

MESSAGE E000 WITH 'enter valid vbeln'.

ENDIF.

ENDFORM. " validate

&----


*& Form get_details

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_DETAILS .

SELECT VBELN

POSNR

MATNR

FROM VBAP

INTO TABLE IT_VBAP

WHERE VBELN IN S_VBELN.

IF SY-SUBRC <> 0.

MESSAGE E000 WITH 'no details found'.

ENDIF.

ENDFORM. " get_details

&----


*& Form fieldcat

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FIELDCAT .

WA_FIELDCAT-TABNAME = 'IT_VBAP'.

WA_FIELDCAT-FIELDNAME = 'VBELN'.

WA_FIELDCAT-OUTPUTLEN = 10.

WA_FIELDCAT-SELTEXT_L = 'SALES DOC'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_VBAP'.

WA_FIELDCAT-FIELDNAME = 'POSNR'.

WA_FIELDCAT-OUTPUTLEN = 6.

WA_FIELDCAT-SELTEXT_L = 'ITEM'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_VBAP'.

WA_FIELDCAT-FIELDNAME = 'MATNR'.

WA_FIELDCAT-OUTPUTLEN = 18.

WA_FIELDCAT-SELTEXT_L = 'MATERIAL NO'.

APPEND WA_FIELDCAT TO IT_FIELDCAT.

CLEAR WA_FIELDCAT.

ENDFORM. " fieldcat

&----


*& Form LAYOUT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM LAYOUT .

WA_LAYOUT-ZEBRA = 'X'.

ENDFORM. " LAYOUT

&----


*& Form VARIANT

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM VARIANT .

CLEAR G_VARIANT.

G_VARIANT-REPORT = SY-REPID.

ENDFORM. " VARIANT

&----


*& Form SAVE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM SAVE .

CLEAR G_SAVE.

G_SAVE = 'A'.

ENDFORM. " SAVE

&----


*& Form EVENTS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM EVENTS .

CLEAR XS_EVENTS.

XS_EVENTS-NAME = SLIS_EV_TOP_OF_PAGE.

XS_EVENTS-FORM = 'TOP_OF_PAGE'.

APPEND XS_EVENTS TO G_EVENTS.

ENDFORM. " EVENTS

&----


*& Form TOP_OF_PAGE

&----


  • text

----


FORM TOP_OF_PAGE.

WRITE 😕 ' INTELLI GROUP'.

ENDFORM. "TOP_OF_PAGE

&----


*& Form ALV_DISPLAY

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM ALV_DISPLAY .

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = SY-REPID

I_CALLBACK_PF_STATUS_SET = PF_STATUS

I_CALLBACK_USER_COMMAND = USER_COMMAND

  • I_STRUCTURE_NAME =

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDCAT

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

I_SAVE = G_SAVE

IS_VARIANT = G_VARIANT

IT_EVENTS = G_EVENTS

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = IT_VBAP

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " ALV_DISPLAY

&----


*& Form SET_PF_STATUS

&----


  • text

----


FORM SET_PF_STATUS USING EXTAB TYPE SLIS_T_EXTAB.

SET PF-STATUS 'Z50651_PFSTATUS' EXCLUDING EXTAB.

ENDFORM. "SET_PF_STATUS

&----


*& Form SET_USER_COMMAND

&----


  • text

----


FORM SET_USER_COMMAND USING R_UCOMM

RS_SELFIELD TYPE SLIS_SELFIELD.

CASE R_UCOMM.

WHEN 'DC'.

READ TABLE IT_VBAP INDEX RS_SELFIELD-TABINDEX.

IF SY-SUBRC = 0.

SELECT SINGLE MTART

FROM MARA

INTO V_MTART

WHERE MATNR = IT_VBAP-MATNR.

IF SY-SUBRC <> 0.

MESSAGE E000 WITH 'NO MATERIAL DESCRIPTION FOR SELECTED MATERIAL NO'.

ELSE.

WRITE 😕 'MATERIAL NO :',IT_VBAP-MATNR.

WRITE 😕 'MATERIAL TYPE :' , V_MTART.

ENDIF.

ENDIF.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

WHEN 'EXIT'.

LEAVE TO SCREEN 0.

WHEN 'CLOSE'.

CALL TRANSACTION 'SE38'.

ENDCASE.

ENDFORM. "SET_USER_COMMAND

Regards

Vasu

Former Member
0 Kudos

HI

you can change from START-OF-SELECTION

refer this code

REPORT  ZLSO_CANCEL.


**************DATA TYPES DECLARATION **********************

TABLES: HRP1001, HRP1026, HRP1000,PCHDY.
TYPE-POOLS SLIS.

TYPES :BEGIN OF ST_OUTPUT,
        COUNT TYPE STRING,
        OBJID TYPE HRP1001-OBJID,
        STEXT TYPE HRP1000-STEXT,
        BEGDA TYPE HRP1000-BEGDA,
        ENDDA TYPE HRP1000-ENDDA,
        CANCRT TYPE T77CRT-CANCRT,
        AEDTM TYPE HRP1026-AEDTM,
        UNAME TYPE HRP1026-UNAME,
        LSTEXT TYPE HRP1000-STEXT,
*        RINVT TYPE T777V-RINVT,
       END OF ST_OUTPUT.

TYPES: BEGIN OF ST_HRP1000,
        OBJID TYPE HRP1001-OBJID,
        STEXT TYPE HRP1000-STEXT,
       END OF ST_HRP1000.

TYPES : BEGIN OF ST_HRP1001,
         OTYPE TYPE HRP1001-OTYPE,
         OBJID TYPE HRP1001-OBJID,
         RELAT type hrp1001-RELAT,
         BEGDA TYPE HRP1001-BEGDA,
         ENDDA TYPE HRP1001-ENDDA,
         SCLAS TYPE HRP1001-SCLAS,
         SOBID TYPE HRP1001-SOBID,
        END OF ST_HRP1001.

TYPES : BEGIN OF ST_HRP1026,
         OTYPE TYPE HRP1026-OTYPE,
         OBJID TYPE HRP1001-OBJID,
         AEDTM TYPE HRP1026-AEDTM,
         UNAME TYPE HRP1026-UNAME,
         DELET TYPE HRP1026-DELET,
         CANCR TYPE HRP1026-CANCR,
        END OF ST_HRP1026.

TYPES : BEGIN OF ST_REASON,
         CANCR TYPE HRP1026-CANCR,
         CANCRT TYPE T77CRT-CANCRT,
        END OF ST_REASON.

TYPES : BEGIN OF ST_SOBID,
         OTYPE TYPE HRP1001-OTYPE,
         OBJID TYPE HRP1001-OBJID,
         RELAT type hrp1001-OBJID,
         BEGDA TYPE HRP1001-BEGDA,
         ENDDA TYPE HRP1001-ENDDA,
         SCLAS TYPE HRP1001-SCLAS,
         SOBID TYPE HRP1001-OBJID,
        END OF ST_SOBID.

TYPES : BEGIN OF ST_OBJID,
         OBJID TYPE HRP1001-OBJID,
        END OF ST_OBJID.

TYPES : BEGIN OF ST_LOCATION,
         OTYPE TYPE HRP1001-OTYPE,
         OBJID TYPE HRP1001-OBJID,
         RSIGN TYPE HRP1001-RSIGN,
         RELAT TYPE HRP1001-RELAT,
         SCLAS TYPE HRP1001-SCLAS,
         SOBID TYPE HRP1001-SOBID,
        END OF ST_LOCATION.

TYPES : BEGIN OF ST_LOCATION1,
         OTYPE TYPE HRP1001-OTYPE,
         OBJID TYPE HRP1001-OBJID,
         RSIGN TYPE HRP1001-RSIGN,
         RELAT TYPE HRP1001-RELAT,
         SCLAS TYPE HRP1001-SCLAS,
         SOBID TYPE HRP1001-OBJID,
        END OF ST_LOCATION1.

TYPES : BEGIN OF ST_LSTEXT,
         OTYPE TYPE HRP1000-OTYPE,
         OBJID TYPE HRP1000-OBJID,
         LSTEXT TYPE HRP1000-STEXT,
        END OF ST_LSTEXT.

TYPES : BEGIN OF ST_OBJID_SH,
         OTYPE TYPE HRP1000-OTYPE,
         OBJID TYPE HRP1000-OBJID,
        END OF ST_OBJID_SH.

DATA : IT_OBJID_SH TYPE STANDARD TABLE OF ST_OBJID_SH.
DATA : WA_OBJID_SH TYPE ST_OBJID_SH.

DATA : IT_LSTEXT TYPE STANDARD TABLE OF ST_LSTEXT.              "TOS STORE THE TEXT OF COURCE LOCATION
DATA : WA_LSTEXT TYPE ST_LSTEXT.

DATA : IT_LOCATION TYPE STANDARD TABLE OF ST_LOCATION.          " TO STORE THE LOCATION OF COURCE
DATA : WA_LOCATION TYPE ST_LOCATION.


DATA : IT_LOCATION1 TYPE STANDARD TABLE OF ST_LOCATION1.        " TO CONVERT SOBID INTO OBJID FOR COURCE LOCATION
DATA : WA_LOCATION1 TYPE ST_LOCATION1.


DATA : IT_SOBID TYPE STANDARD TABLE OF ST_SOBID.                " TO CHANGE THE SOBID OF HRP1001 TO OBJID OF HRP1026
DATA : WA_SOBID TYPE ST_SOBID.                                   " BY USING FOR ALL ENTRIES

DATA : IT_REASON TYPE STANDARD TABLE OF ST_REASON.              "TO STORE T HE REASON FOR CANCELL TEXT
DATA : WA_REASON TYPE ST_REASON.

DATA : IT_OUTPUT TYPE STANDARD TABLE OF ST_OUTPUT.               "OUTPUT FEILDS OF REPORT.
DATA : WA_OUTPUT TYPE ST_OUTPUT.

DATA : IT_OUTPUT_1 TYPE STANDARD TABLE OF ST_OUTPUT.               " TEMP OUTPUT FEILDS OF REPORT.
DATA : WA_OUTPUT_1 TYPE ST_OUTPUT.


DATA : IT_HRP1000 TYPE STANDARD TABLE OF ST_HRP1000.             "DATA FROM HRP1000 TABLE
DATA : WA_HRP1000 TYPE ST_HRP1000.

DATA : IT_HRP1001 TYPE STANDARD TABLE OF ST_HRP1001.             "DATA FROM HRP1001 TABLE
DATA : WA_HRP1001 TYPE ST_HRP1001.


DATA : IT_HRP1026 TYPE STANDARD TABLE OF ST_HRP1026.              "DATA FROM HRP1026 TABLE
DATA : WA_HRP1026 TYPE ST_HRP1026.

DATA : IT_OBJID TYPE STANDARD TABLE OF ST_OBJID.                  " TO STORE THE OBJID OF HRP1001
DATA : WA_OBJID TYPE ST_OBJID.

DATA: WS_FCAT    TYPE SLIS_FIELDCAT_ALV .                         " FEILDCATALOG FOR ALV REPORT
DATA: IN_FCAT    TYPE SLIS_T_FIELDCAT_ALV.
DATA: W_LAYOUT   TYPE SLIS_LAYOUT_ALV.

DATA : LV_COUNT TYPE I.                                           "FEILD FOR SERIAL NUMBER


****************************END OF DATA DECLARATION*******************************************

************SELECTION SCREEN DESIGN************************

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

*SELECT-OPTIONS : S_OTYPE FOR HRP1001-OTYPE NO INTERVALS .
SELECT-OPTIONS : S_OBJID FOR HRP1001-OBJID NO INTERVALS .
SELECT-OPTIONS : DATE FOR SY-DATUM NO-EXTENSION OBLIGATORY.

SELECTION-SCREEN END OF BLOCK B1.

***********END OF SELECTION SCREEN DESIGN******************


*****INITIALIZATION VENT TO ASIGN DEFAULT VALUES TO OTYPE
*INITIALIZATION.
*  S_OTYPE-LOW = 'D'.
*  S_OTYPE-SIGN = 'I'.
*  S_OTYPE-OPTION = 'EQ'.
*  APPEND S_OTYPE.
*  CLEAR S_OTYPE.
**************END OF EVENT INITIALIZATION******************

**********VALIDATION FOR SCREEN FIELDS*********************

AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_OBJID-LOW.

*  IF S_OBJID IS NOT INITIAL.

    SELECT OTYPE OBJID FROM HRP1000
                 INTO TABLE IT_OBJID_SH
                 WHERE OTYPE = 'D'.

 IF SY-SUBRC EQ 0.

* SEARCH HELP FOR QUALIFICATION.

    CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
      EXPORTING
*              DDIC_STRUCTURE         = ' '
        RETFIELD               =  'OBJID'
*              PVALKEY                = ' '
       DYNPPROG               = SY-REPID
       DYNPNR                 = SY-DYNNR
       DYNPROFIELD            = 'S_OBJID'
*              STEPL                  = 0
*              WINDOW_TITLE           =
*              VALUE                  = ' '
       VALUE_ORG              = 'S'
*              MULTIPLE_CHOICE        = ' '
*              DISPLAY                = ' '
*              CALLBACK_PROGRAM       = ' '
*              CALLBACK_FORM          = ' '
*              MARK_TAB               =
*            IMPORTING
*              USER_RESET             =
      TABLES
        VALUE_TAB              =  IT_OBJID_SH
*              FIELD_TAB              =
*              RETURN_TAB             = RETURN_TAB
*              DYNPFLD_MAPPING        =
*            EXCEPTIONS
*              PARAMETER_ERROR        = 1
*              NO_VALUES_FOUND        = 2
*              OTHERS                 = 3
              .
    IF SY-SUBRC <> 0.
*           MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*                   WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
  ENDIF.

              .

*    IF SY-SUBRC NE 0.
*      MESSAGE 'NO RECORD FOUND FOR THE GIVEN SELECTION CRITERIA.' TYPE 'E'.
*    ENDIF.
*
*  ENDIF.
*  REFRESH IT_OBJID.

****************VALIDATION OF SCREEN FIELDS ENDS************

*****************START OF SELECTION ************************

START-OF-SELECTION.

  SELECT OTYPE
         OBJID
         RELAT
         BEGDA
         ENDDA
         SCLAS
         SOBID FROM HRP1001 INTO TABLE IT_HRP1001
                    WHERE OTYPE = 'D'
                        AND OBJID IN S_OBJID
                        AND BEGDA GE DATE-LOW
                        AND ENDDA LE DATE-HIGH
                        AND ( SCLAS = 'E' OR SCLAS = 'ET' ).

  IF SY-SUBRC NE 0.
    MESSAGE 'NO RECORD FOUND FOR THE GIVEN SELECTION CRITERIA ' TYPE 'E'.
  ENDIF.

  LOOP AT IT_HRP1001 INTO WA_HRP1001.

    WA_SOBID-OTYPE = WA_HRP1001-OTYPE.
    WA_SOBID-OBJID = WA_HRP1001-OBJID.
    WA_SOBID-RELAT = WA_HRP1001-RELAT.
    WA_SOBID-BEGDA = WA_HRP1001-BEGDA.
    WA_SOBID-ENDDA = WA_HRP1001-ENDDA.
    WA_SOBID-SCLAS = WA_HRP1001-SCLAS.
    WA_SOBID-SOBID = WA_HRP1001-SOBID.
    APPEND WA_SOBID TO IT_SOBID.

  ENDLOOP.

  SELECT OTYPE
         OBJID
         AEDTM
         UNAME
         DELET
         CANCR
*         NCONT
          FROM HRP1026
          INTO TABLE IT_HRP1026
          FOR ALL ENTRIES IN IT_SOBID
             WHERE OBJID = IT_SOBID-SOBID
             AND ( OTYPE = 'E' OR OTYPE = 'ET' )
                 AND DELET = 'X' AND
                 BEGDA GE DATE-LOW  AND
                 ENDDA LE DATE-HIGH.

  IF SY-SUBRC EQ 0.

    SELECT OBJID
           STEXT
           FROM HRP1000
           INTO TABLE IT_HRP1000
           FOR ALL ENTRIES IN IT_SOBID
              WHERE OBJID = IT_SOBID-SOBID AND
                    BEGDA GE DATE-LOW  AND
                    ENDDA LE DATE-HIGH.

    SELECT CANCR
           CANCRT
           FROM T77CRT
           INTO TABLE IT_REASON
           FOR ALL ENTRIES IN IT_HRP1026
           WHERE CANCR = IT_HRP1026-CANCR
             AND LANGU = 'E' .

*********PERFORM FOR GETTING T HE LOCATION OF THE COURCE***

  PERFORM GET_LOCATION.
**************END OF LOCATION OF COURCE ******************

  ELSE.
    MESSAGE 'NO RECORD FOUND FOR THE GIVEN SELECTION CRITERIA ' TYPE 'E'.

  ENDIF.

******PERFORM FOR GETTING DATA INTO THE FINAL INTERNAL TABLE IT_OUTPUT***

  PERFORM GET_DATA.

*********************************END OF PERFORM ET DATA ***************

***********LOGIC FOR PRONTING NUMBER OF RECORDS ***********************

  LV_COUNT = 0.
  LOOP  AT IT_OUTPUT INTO WA_OUTPUT.
    LV_COUNT = LV_COUNT + 1.
    WA_OUTPUT-COUNT = LV_COUNT.
    APPEND WA_OUTPUT TO IT_OUTPUT_1.
  ENDLOOP.
  REFRESH IT_OUTPUT.
  IT_OUTPUT = IT_OUTPUT_1.
********************END OF LOGIC FOR NUMBER OF RECORDS ***************

*****************DISPLAYING OUTPUT BY USEING GRID DISPLAY***********

  PERFORM ALV_DISPLAY.

****************************END OF PERFORM FOR DISPLAYING **********

*&---------------------------------------------------------------------*
*&      Form  PERFORM_ALV
*&---------------------------------------------------------------------*
* DISPLAY THE RECORDS IN ALV GRID FORMAT.
*----------------------------------------------------------------------*
FORM ALV_DISPLAY.

  PERFORM FIELD_CATALOG USING 'COUNT' 'Sr. No.'.
  PERFORM FIELD_CATALOG USING 'OBJID' 'COURCE ID.'.
  PERFORM FIELD_CATALOG USING 'STEXT' 'COURCE NAME'.
    PERFORM FIELD_CATALOG USING 'LSTEXT' 'COURCE LOATION'.
  PERFORM FIELD_CATALOG USING 'BEGDA' 'BEGIN DATE '.
  PERFORM FIELD_CATALOG USING 'ENDDA' 'END DATE '.
  PERFORM FIELD_CATALOG USING 'CANCRT' 'REASON'.
  PERFORM FIELD_CATALOG USING 'AEDTM' 'DATE Of CANCEL'.
*  PERFORM FIELD_CATALOG USING 'NCONT' 'NUMBER OF BOOKINGS'.
*  PERFORM FIELD_CATALOG USING 'LOCTX' 'COURCE LOCATION'.

  PERFORM FIELD_CATALOG USING 'UNAME' 'WHO CANCELLED'.
*  PERFORM FIELD_CATALOG USING 'LSTEXT' 'COURCE LOATION'.



  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_STRUCTURE_NAME = 'IT_OUTPUT'
      I_GRID_TITLE     = ' Cancelled courses with reason '
      IT_FIELDCAT      = IN_FCAT
    TABLES
      T_OUTTAB         = IT_OUTPUT.
  IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

ENDFORM.                    "PERFORM_ALV




*&---------------------------------------------------------------------*
*&      Form  FIELD_CATALOG
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->FIELD_NAME text
*      -->DIS_TEXT   text
*----------------------------------------------------------------------*
FORM FIELD_CATALOG USING FIELD_NAME DIS_TEXT.


  CLEAR WS_FCAT.
  WS_FCAT-TABNAME = 'IT_OUTPUT'.
  WS_FCAT-FIELDNAME = FIELD_NAME.
  WS_FCAT-SELTEXT_M = DIS_TEXT.
  APPEND WS_FCAT TO IN_FCAT .

ENDFORM.                    "FIELD_CATALOG
*&---------------------------------------------------------------------*
*&      Form  GET_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_DATA .

*sort it_sobid by objid.



  LOOP AT IT_SOBID INTO WA_SOBID." where otype eq s_otype and objid eq s_objid.

    READ TABLE IT_HRP1026 WITH KEY OBJID = WA_SOBID-SOBID OTYPE = WA_SOBID-SCLAS INTO WA_HRP1026.
    IF SY-SUBRC EQ 0.
      READ TABLE IT_HRP1000 WITH KEY OBJID = WA_SOBID-SOBID INTO WA_HRP1000.
*    READ TABLE IT_REASON WITH KEY CANCR = WA_HRP1026-CANCR INTO WA_REASON.


      WA_OUTPUT-OBJID = WA_HRP1026-OBJID.
      WA_OUTPUT-BEGDA = WA_SOBID-BEGDA.
      WA_OUTPUT-ENDDA = WA_SOBID-ENDDA.
      WA_OUTPUT-AEDTM = WA_HRP1026-AEDTM.
      WA_OUTPUT-UNAME = WA_HRP1026-UNAME.
*    WA_OUTPUT-NCONT = WA_HRP1026-NCONT.



*    READ TABLE IT_HRP1000 WITH KEY OBJID = WA_SOBID-SOBID INTO WA_HRP1000.


      WA_OUTPUT-STEXT = WA_HRP1000-STEXT.


      READ TABLE IT_REASON WITH KEY CANCR = WA_HRP1026-CANCR INTO WA_REASON.


      WA_OUTPUT-CANCRT = WA_REASON-CANCRT.
      CLEAR WA_REASON-CANCRT.

      READ TABLE IT_LOCATION1 WITH KEY OBJID = WA_HRP1026-OBJID INTO WA_LOCATION1..

      READ TABLE IT_LSTEXT WITH KEY OBJID = WA_LOCATION1-SOBID OTYPE = 'F' INTO WA_LSTEXT.

             WA_OUTPUT-LSTEXT = WA_LSTEXT-LSTEXT.
             CLEAR WA_LSTEXT-LSTEXT.


      APPEND WA_OUTPUT TO IT_OUTPUT.
      CLEAR WA_OUTPUT.
      CLEAR WA_OUTPUT-CANCRT.
    ENDIF.
  ENDLOOP.


ENDFORM.                    " GET_DATA
*&---------------------------------------------------------------------*
*&      Form  GET_LOCATION
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM GET_LOCATION .


SELECT OTYPE
       OBJID
       RSIGN
       RELAT
       SCLAS
      SOBID
      FROM HRP1001
      INTO TABLE IT_LOCATION
      FOR ALL ENTRIES IN IT_HRP1026
      WHERE OTYPE = 'E' AND OBJID = IT_HRP1026-OBJID
       AND RSIGN = 'A' AND RELAT = '024' AND SCLAS = 'F'
                AND BEGDA GE DATE-LOW AND ENDDA LE DATE-HIGH.

IF SY-SUBRC NE 0.
    MESSAGE 'NO RECORD FOUND FOR THE GIVEN SELECTION CRITERIA ' TYPE 'E'.
  ENDIF.

  LOOP AT IT_LOCATION INTO WA_LOCATION.

    WA_LOCATION1-OTYPE = WA_LOCATION-OTYPE.
    WA_LOCATION1-OBJID = WA_LOCATION-OBJID.
        WA_LOCATION1-RSIGN = WA_LOCATION-RSIGN.
    WA_LOCATION1-RELAT = WA_LOCATION-RELAT.
    WA_LOCATION1-SCLAS = WA_LOCATION-SCLAS.
    WA_LOCATION1-SOBID = WA_LOCATION-SOBID.
    APPEND WA_LOCATION1 TO IT_LOCATION1.
*    CLEAR WA_LOCATION1.
  ENDLOOP.



SELECT OTYPE
       OBJID
       STEXT
       FROM HRP1000
       INTO TABLE IT_LSTEXT
       FOR ALL ENTRIES IN IT_LOCATION1
       WHERE OBJID = IT_LOCATION1-SOBID
          AND OTYPE = 'F'.
*          AND BEGDA GE DATE-LOW
*          AND ENDDA LE DATE-HIGH.


ENDFORM.                    " GET_LOCATION

Former Member
0 Kudos

Hi Abhay,

After moving the whole data into final internal table, pass that internal table to function module REUSE_ALV_GRID_DISPLAY.

before that you need to build field catalog and have to build layout with all the required columns.

Go through the below links for your reference.

Simple ALV report

http://www.sapgenie.com/abap/controls/alvgrid.htm

http://wiki.ittoolbox.com/index.php/Code:Ultimate_ALV_table_toolbox

ALV

1. Please give me general info on ALV.

http://www.sapfans.com/forums/viewtopic.php?t=58286

http://www.sapfans.com/forums/viewtopic.php?t=76490

http://www.sapfans.com/forums/viewtopic.php?t=20591

http://www.sapfans.com/forums/viewtopic.php?t=66305 - this one discusses which way should you use - ABAP Objects calls or simple function modules.

2. How do I program double click in ALV?

http://www.sapfans.com/forums/viewtopic.php?t=11601

http://www.sapfans.com/forums/viewtopic.php?t=23010

3. How do I add subtotals (I have problem to add them)...

http://www.sapfans.com/forums/viewtopic.php?t=20386

http://www.sapfans.com/forums/viewtopic.php?t=85191

http://www.sapfans.com/forums/viewtopic.php?t=88401

http://www.sapfans.com/forums/viewtopic.php?t=17335

4. How to add list heading like top-of-page in ABAP lists?

http://www.sapfans.com/forums/viewtopic.php?t=58775

http://www.sapfans.com/forums/viewtopic.php?t=60550

http://www.sapfans.com/forums/viewtopic.php?t=16629

5. How to print page number / total number of pages X/XX in ALV? http://www.sapfans.com/forums/viewtopic.php?t=29597 (no direct solution)

6. ALV printing problems. The favourite is: The first page shows the number of records selected but I don't need this.

http://www.sapfans.com/forums/viewtopic.php?t=64320

http://www.sapfans.com/forums/viewtopic.php?t=44477

7. How can I set the cell color in ALV? http://www.sapfans.com/forums/viewtopic.php?t=52107

8. How do I print a logo/graphics in ALV?

http://www.sapfans.com/forums/viewtopic.php?t=81149

http://www.sapfans.com/forums/viewtopic.php?t=35498

http://www.sapfans.com/forums/viewtopic.php?t=5013

9. How do I create and use input-enabled fields in ALV?

http://www.sapfans.com/forums/viewtopic.php?t=84933

http://www.sapfans.com/forums/viewtopic.php?t=69878

10. How can I use ALV for reports that are going to be run in background?

http://www.sapfans.com/forums/viewtopic.php?t=83243

http://www.sapfans.com/forums/viewtopic.php?t=19224

11. How can I display an icon in ALV? (Common requirement is traffic light icon).

http://www.sapfans.com/forums/viewtopic.php?t=79424

http://www.sapfans.com/forums/viewtopic.php?t=24512

12. How can I display a checkbox in ALV? http://www.sapfans.com/forums/viewtopic.php?t=88376

http://www.sapfans.com/forums/viewtopic.php?t=40968

http://www.sapfans.com/forums/viewtopic.php?t=6919

Check this for basic concepts of OOPS

https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20...

https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20...

Tabstrip

https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20...

Editable ALV

https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/abap%20...

Tree

http://www.sapdevelopment.co.uk/reporting/alv/alvtree/alvtree_usrint.htm

General Tutorial for OOPS

https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webas/abap/an%20ea...

http://www.sapdevelopment.co.uk/reporting/alvhome.htm

http://www.sap-img.com/abap/what-is-alv-programming.htm

http://www.sap-img.com/abap-function.htm

http://www.geocities.com/mpioud/Abap_programs.html

http://www.sapdevelopment.co.uk/reporting/alv/alvtree%5Calvtree_basic.htm

http://esnips.com/doc/ad20dca9-6182-4903-8d8f-96a66dc8590c/ALV.pdf

http://www.sap-img.com/abap-function.htm

Go thru these programs they may help u to try on some hands on

ALV Demo program

BCALV_DEMO_HTML

BCALV_FULLSCREEN_DEMO ALV Demo: Fullscreen Mode

BCALV_FULLSCREEN_DEMO_CLASSIC ALV demo: Fullscreen mode

BCALV_GRID_DEMO Simple ALV Control Call Demo Program

BCALV_TREE_DEMO Demo for ALV tree control

BCALV_TREE_SIMPLE_DEMO

BC_ALV_DEMO_HTML_D0100

The common features of report are column alignment, sorting, filtering, subtotals, totals etc. To implement these, a lot of coding and logic is to be put. To avoid that we can use a concept called ABAP List Viewer (ALV).

This helps us to implement all the features mentioned very effectively.

Using ALV, We can have three types of reports:

1. Simple Report

2. Block Report

3. Hierarchical Sequential Report

There are some function modules which will enable to produce the above reports without much effort.

All the definitions of internal tables, structures and constants are declared in a type-pool called SLIS.

1. SIMPLE REPORT.

The important function modules are

a. Reuse_alv_list_display

b. Reuse_alv_fieldcatalog_merge

c. Reuse_alv_events_get

d. Reuse_alv_commentary_write

e. Reuse_alv_grid_display

A. REUSE_ALV_LIST_DISPLAY : This is the function module which prints the data.

The important parameters are :

I. Export :

i. I_callback_program : report id

ii. I_callback_pf_status_set : routine where a user can set his own pf status or change the functionality of the existing pf status

iii. I_callback_user_command : routine where the function codes are handled

iv. I_structure name : name of the dictionary table

v. Is_layout : structure to set the layout of the report

vi. It_fieldcat : internal table with the list of all fields and their attributes which are to be printed (this table can be populated automatically by the function module REUSE_ALV_FIELDCATALOG_MERGE

vii. It_events : internal table with a list of all possible events of ALV and their corresponding form names.

II. Tables :

i. t_outtab : internal table with the data to be output

B. REUSE_ALV_FIELDCATALOG_MERGE : This function module is used to populate a fieldcatalog which is essential to display the data in ALV. If the output data is from a single dictionary table and all the columns are selected, then we need not exclusively create the field catalog. Its enough to mention the table name as a parameter(I_structure name) in the REUSE_ALV_LIST_DISPLAY. But in other cases we need to create it.

The Important Parameters are :

I. Export :

i. I_program_name : report id

ii. I_internal_tabname : the internal output table

iii. I_inclname : include or the report name where all the dynamic forms are handled.

II Changing

ct_fieldcat : an internal table with the type SLIS_T_FIELDCAT_ALV which is

declared in the type pool SLIS.

C. REUSE_ALV_EVENTS_GET : Returns table of possible events for a list type

Parameters :

I. Import :

Et_Events : The event table is returned with all possible CALLBACK events

for the specified list type (column 'NAME'). For events to be processed by Callback, their 'FORM' field must be filled. If the field is initialized, the event is ignored. The entry can be read from the event table, the field 'FORM' filled and the entry modified using constants from the type pool SALV.

II. Export :

I_List_type :

0 = simple list REUSE_ALV_LIST_DISPLAY

1 = hierarchcal-sequential list REUSE_ALV_HIERSEQ_LIST_DISPLAY

2 = simple block list REUSE_ALV_BLOCK_LIST_APPEND

3 = hierarchical-sequential block list

REUSE_ALV_BLOCK_LIST_HS_APPEND

D. REUSE_ALV_COMMENTARY_WRITE : This is used in the Top-of-page event to print the headings and other comments for the list.

Parameters :

I. it_list_commentary : internal table with the headings of the type slis_t_listheader.

This internal table has three fields :

Typ : ‘H’ – header, ‘S’ – selection , ‘A’ - action

Key : only when typ is ‘S’.

Info : the text to be printed

E. REUSE_ALV_GRID_DISPLAY : A new function in 4.6 version, to display the results in grid rather than as a preview.

Parameters : same as reuse_alv_list_display

This is an example for simple list.

2. BLOCK REPORT

This is used to have multiple lists continuously.

The important functions used in this report are:

A. REUSE_ALV_BLOCK_LIST_INIT

B. REUSE_ALV_BLOCK_LIST_APPEND

C. REUSE_ALV_BLOCK_LIST_HS_APPEND

D. REUSE_ALV_BLOCK_LIST_DISPLAY

A. REUSE_ALV_BLOCK_LIST_INIT

Parameters:

I. I_CALLBACK_PROGRAM

II. I_CALLBACK_PF_STATUS_SET

III. I_CALLBACK_USER_COMMAND

This function module is used to set the default gui status etc.

B. REUSE_ALV_BLOCK_LIST_APPEND

Parameters :

Export :

I. is_layout : layout settings for block

II. it_fieldcat : field catalog

III. i_tabname : internal table name with output data

IV. it_events : internal table with all possible events

Tables :

i. t_outtab : internal table with output data.

This function module adds the data to the block.

Repeat this function for all the different blocks to be displayed one after the other.

C. REUSE_ALV_BLOCK_LIST_HS_APPEND

This function module is used for hierarchical sequential blocks.

D. REUSE_ALV_BLOCK_LIST_DISPLAY

Parameters : All the parameters are optional.

This function module display the list with data appended by the above function.

Here the functions REUSE_ALV_FIELDCATALOG_MERGE, REUSE_ALV_EVENTS_GET, REUSE_ALV_COMMENTARY_WRITE can be used.

3. Hierarchical reports :

Hierarchical sequential list output.

The function module is

A. REUSE_ALV_HIERSEQ_LIST_DISPLAY

Parameters:

I. Export:

i. I_CALLBACK_PROGRAM

ii. I_CALLBACK_PF_STATUS_SET

iii. I_CALLBACK_USER_COMMAND

iv. IS_LAYOUT

v. IT_FIELDCAT

vi. IT_EVENTS

vii. i_tabname_header : Name of the internal table in the program containing the

output data of the highest hierarchy level.

viii. i_tabname_item : Name of the internal table in the program containing the

output data of the lowest hierarchy level.

ix. is_keyinfo : This structure contains the header and item table field

names which link the two tables (shared key).

II. Tables

i. t_outtab_header : Header table with data to be output

ii. t_outtab_item : Name of the internal table in the program containing the

output data of the lowest hierarchy level.

slis_t_fieldcat_alv : This internal table contains the field attributes. This internal table can be populated automatically by using ‘REUSE_ALV_FIELDCATALOG_MERGE’.

Important Attributes :

A. col_pos : position of the column

B. fieldname : internal fieldname

C. tabname : internal table name

D. ref_fieldname : fieldname (dictionary)

E. ref_tabname : table (dictionary)

F. key(1) : column with key-color

G. icon(1) : icon

H. symbol(1) : symbol

I. checkbox(1) : checkbox

J. just(1) : (R)ight (L)eft (C)ent.

K. do_sum(1) : sum up

L. no_out(1) : (O)blig.(X)no out

M. outputlen : output length

N. seltext_l : long key word

O. seltext_m : middle key word

P. seltext_s : short key word

Q. reptext_ddic : heading (ddic)

R. ddictxt(1) : (S)hort (M)iddle (L)ong

S. datatype : datatype

T. hotspot(1) : hotspot

<b>Reward points for helpful answers,</b>

Satish

former_member699750
Participant
0 Kudos

Try using this sample code..

REPORT zfirst_report.

  • NO STANDARD PAGE HEADING..

*DATA: x(20) TYPE c,

  • y(20) TYPE c,

  • z TYPE i.

DATA: BEGIN OF itab OCCURS 10,

vbeln LIKE vbap-vbeln,

matnr LIKE vbap-matnr,

END OF itab.

type-pools: slis.

data: fieldcat type slis_t_fieldcat_alv with header line,

layout type slis_layout_alv.

*x = 'Sales Document'.

*y = 'Material_No'.

SELECT vbeln matnr INTO TABLE itab FROM vbap UP TO 10 ROWS.

*WRITE 😕 x,y.

*write sy-uline.

*LOOP AT itab.

  • WRITE:/ itab-vbeln,22 itab-matnr.

  • CLEAR itab.

*ENDLOOP.

fieldcat-fieldname = 'VBELN'.

fieldcat-seltext_l = 'Sales Document'.

fieldcat-col_pos = 1.

append fieldcat .

clear fieldcat.

fieldcat-fieldname = 'MATNR'.

fieldcat-seltext_l = 'Material_No'.

fieldcat-col_pos = 2.

append fieldcat .

clear fieldcat.

layout-zebra = 'X'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

  • I_CALLBACK_PROGRAM = ' '

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • I_STRUCTURE_NAME =

IS_LAYOUT = layout

IT_FIELDCAT = fieldcat[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IR_SALV_LIST_ADAPTER =

  • IT_EXCEPT_QINFO =

  • I_SUPPRESS_EMPTY_DATA = ABAP_FALSE

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

t_outtab = itab

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • OTHERS = 2

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

reward if usefull......