‎2008 Jun 26 2:21 AM
Hi Experts
I am writing an ALV report for the following report below , I am not getting the output in the internal table
can anyone correct please
regards
Piroz
REPORT Z_ROLE LINE-SIZE 220 LINE-COUNT 75
NO STANDARD PAGE HEADING.
TABLES : agr_tcodes,
agr_users,
tstct.
TYPE-POOLS : slis.
DATA: repid LIKE sy-repid, "Report ID
is_layout TYPE slis_layout_alv, "Layout For ALV
it_fieldcat TYPE slis_t_fieldcat_alv, "ITAB for field
it_events TYPE slis_t_event, "ITAB for event
it_sub TYPE slis_layout_alv_spec1, "subtotals
i_header TYPE slis_t_listheader, "Itab for listheader
lt_sort TYPE slis_t_sortinfo_alv, "itab for sorting
wa_sort LIKE LINE OF lt_sort." slis_t_sortinfo_alv.
DATA: BEGIN OF itab OCCURS 0 ,
agr_tcodes type agr_tcodes-tcode , " Transaction code A
agr_name type agr_tcodes-agr_name, " Role Name B
END OF itab .
DATA: BEGIN of it_disp Occurs 0 ,
agr_tcodes type agr_tcodes-tcode , " Transaction code A
agr_name type agr_tcodes-agr_name, " Role Name B
agr_uname type agr_users-uname, " Short User Name B
ttext type tstct-ttext, " Description Name C
sprsl type tstct-sprsl , " Language c
END OF it_disp.
*DATA: i_data TYPE TABLE OF ty_data, " internal table
*wa_data TYPE ty_data. " work area
SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME.
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: p_tcode FOR agr_tcodes-tcode OBLIGATORY, "no-extension no intervals,
u_name for agr_users-uname,
r_name for agr_users-uname .
SELECTION-SCREEN END OF BLOCK blk1.
SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002.
SELECTION-SCREEN END OF BLOCK blk2.
SELECTION-SCREEN END OF BLOCK blk.
START-OF-SELECTION.
PERFORM get_data.
PERFORM modify_data.
PERFORM disp_data .
END-OF-SELECTION.
*&----
*& Form get_data
*&----
text
*----
--> p1 text
<-- p2 text
*----
FORM get_data .
select agr_tcodestcode agr_tcodesagr_name agr_usersuname tstctttext tstct~sprsl
into table it_disp
from agr_tcodes
inner join agr_users
on agr_tcodesagr_name = agr_usersagr_name
inner join tstct
on agr_tcodestcode = tstcttcode
and
tstct~sprsl eq 'E'.
ENDFORM. "get_data
*&----
*& Form modify_data
*&----
text
*----
--> p1 text
<-- p2 text
*----
FORM modify_data .
MOVE-CORRESPONDING itab TO it_disp.
APPEND it_disp.
CLEAR it_disp.
ENDFORM. " modify_data
*&----
*& Form Disp_data
*&----
text
*----
--> p1 text
<-- p2 text
*----
FORM disp_data .
PERFORM fill_layout_structure.
PERFORM fill_field_catalog_table.
PERFORM alv_header USING i_header.
PERFORM call_alv_function.
ENDFORM. " Disp_data
*&----
*& Form fill_layout_structure
*&----
text
*----
--> p1 text
<-- p2 text
*----
FORM fill_layout_structure .
CLEAR is_layout.
is_layout-colwidth_optimize = 'X'.
is_layout-zebra = 'X'.
is_layout-no_input = 'X'.
is_layout-colwidth_optimize = 'X'.
is_layout-totals_text = 'Totals'(201).
is_layout-totals_only = 'X'.
is_layout-zebra = 'X'.
is_layout-group_change_edit = 'X'.
is_layout-header_text = 'Wagners Users Transaction Code'.
ENDFORM. " fill_layout_structure
*&----
*& Form fill_field_catalog_table
*&----
text
*----
--> p1 text
<-- p2 text
*----
FORM fill_field_catalog_table .
DATA : gls1(10).
BREAK-POINT.
PERFORM fill_field_catalog USING :
'agr_tcode' 'Trans Code .' '10' 'IT_DISP' space space 'C11' ' ' ' ',
'agr_name' 'Name' '40' 'IT_FINAL' space space 'C11' ' ' ' ' ,
'agr_uname' 'Role' '60' 'IT_FINAL' space space 'C11' 'X' ' ',
'ttext' 'Descript' '80' 'IT_FINAL' space space 'C11' ' ' ' '.
ENDFORM. " fill_field_catalog_table
*&----
*& Form fill_field_catalog
*&----
text
*----
FORM fill_field_catalog USING f d l t s z y a b.
DATA t_fld TYPE slis_fieldcat_alv.
STATICS pos LIKE sy-index VALUE 0.
pos = pos + 1.
CLEAR t_fld.
MOVE 1 TO t_fld-row_pos.
MOVE pos TO t_fld-col_pos.
MOVE f TO t_fld-fieldname.
MOVE d TO t_fld-seltext_m.
MOVE l TO t_fld-outputlen.
MOVE t TO t_fld-tabname.
MOVE s TO t_fld-do_sum.
MOVE z TO t_fld-no_zero.
MOVE y TO t_fld-emphasize.
MOVE a TO t_fld-no_out.
MOVE b TO t_fld-no_sum.
APPEND t_fld TO it_fieldcat.
ENDFORM. " fill_field_catalog
*&----
*& Form alv_header
*&----
text
*----
-->P_I_HEADER text
*----
FORM alv_header USING p_i_header.
DATA: wa_line TYPE slis_listheader.
CLEAR wa_line.
wa_line-typ = 'H'.
wa_line-info = 'Wagners Investment'.
APPEND wa_line TO i_header.
ENDFORM. " alv_header
*&----
*& Form call_alv_function
*&----
text
*----
--> p1 text
<-- p2 text
*----
FORM call_alv_function .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = REPID
I_CALLBACK_PF_STATUS_SET = ' '
IS_LAYOUT = IS_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
TABLES
t_outtab = IT_DISP.
IF sy-subrc eq 0.
ENDIF.
ENDFORM. " call_alv_function
‎2008 Jun 26 3:44 AM
Hi,
DATA: i_data TYPE TABLE OF ty_data, " internal table
actual statement for itab declaration like:
data: name type <kind= name of itab type> table of linetype.
declare in ur itab with kind and line type( at starting of report declare line type = ty_data).
I hope this may help u.
Regards
krishna
‎2008 Jun 26 2:53 AM
Pass the Parameter IS_structure in Reuse_alv_grid_dispaly
Regards
Devanand
‎2008 Jun 26 3:44 AM
Hi,
DATA: i_data TYPE TABLE OF ty_data, " internal table
actual statement for itab declaration like:
data: name type <kind= name of itab type> table of linetype.
declare in ur itab with kind and line type( at starting of report declare line type = ty_data).
I hope this may help u.
Regards
krishna
‎2008 Jun 26 4:39 AM
Hi Piroz,
I have modified ur code. please check. Its working .
I hope that it helps u .
Regards,
Venkat.O
REPORT ZVENKAT_NOTEPAD LINE-SIZE 220 LINE-COUNT 75
NO STANDARD PAGE HEADING.
TABLES : AGR_TCODES,
AGR_USERS,
TSTCT.
TYPE-POOLS : SLIS.
DATA: REPID LIKE SY-REPID, "Report ID
IS_LAYOUT TYPE SLIS_LAYOUT_ALV, "Layout For ALV
IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, "ITAB for field
IT_EVENTS TYPE SLIS_T_EVENT, "ITAB for event
IT_SUB TYPE SLIS_LAYOUT_ALV_SPEC1, "subtotals
I_HEADER TYPE SLIS_T_LISTHEADER, "Itab for listheader
LT_SORT TYPE SLIS_T_SORTINFO_ALV, "itab for sorting
WA_SORT LIKE LINE OF LT_SORT." slis_t_sortinfo_alv.
DATA: BEGIN OF ITAB OCCURS 0 ,
AGR_TCODES TYPE AGR_TCODES-TCODE , " Transaction code A
AGR_NAME TYPE AGR_TCODES-AGR_NAME, " Role Name B
END OF ITAB .
DATA: BEGIN OF IT_DISP OCCURS 0 ,
AGR_TCODES TYPE AGR_TCODES-TCODE , " Transaction code A
AGR_NAME TYPE AGR_TCODES-AGR_NAME, " Role Name B
AGR_UNAME TYPE AGR_USERS-UNAME, " Short User Name B
TTEXT TYPE TSTCT-TTEXT, " Description Name C
SPRSL TYPE TSTCT-SPRSL , " Language c
END OF IT_DISP.
*DATA: i_data TYPE TABLE OF ty_data, " internal table
*wa_data TYPE ty_data. " work area
SELECTION-SCREEN BEGIN OF BLOCK BLK WITH FRAME.
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: P_TCODE FOR AGR_TCODES-TCODE OBLIGATORY, "no-extension no intervals,
U_NAME FOR AGR_USERS-UNAME,
R_NAME FOR AGR_USERS-UNAME .
SELECTION-SCREEN END OF BLOCK BLK1.
SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-002.
SELECTION-SCREEN END OF BLOCK BLK2.
SELECTION-SCREEN END OF BLOCK BLK.
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM MODIFY_DATA.
PERFORM DISP_DATA .
END-OF-SELECTION.
*&---------------------------------------------------------------------
*& Form get_data
*&---------------------------------------------------------------------
FORM GET_DATA .
SELECT AGR_TCODES~TCODE AGR_TCODES~AGR_NAME AGR_USERS~UNAME TSTCT~TTEXT TSTCT~SPRSL
INTO TABLE IT_DISP
FROM AGR_TCODES
INNER JOIN AGR_USERS
ON AGR_TCODES~AGR_NAME = AGR_USERS~AGR_NAME
INNER JOIN TSTCT
ON AGR_TCODES~TCODE = TSTCT~TCODE
AND
TSTCT~SPRSL EQ 'E'.
ENDFORM. "get_data
*&---------------------------------------------------------------------
*& Form modify_data
*&---------------------------------------------------------------------
FORM MODIFY_DATA .
MOVE-CORRESPONDING ITAB TO IT_DISP.
APPEND IT_DISP.
CLEAR IT_DISP.
ENDFORM. " modify_data
*&---------------------------------------------------------------------
*& Form Disp_data
*&---------------------------------------------------------------------
FORM DISP_DATA .
PERFORM FILL_LAYOUT_STRUCTURE.
PERFORM FILL_FIELD_CATALOG_TABLE.
PERFORM ALV_HEADER USING I_HEADER.
PERFORM CALL_ALV_FUNCTION.
ENDFORM. " Disp_data
*&---------------------------------------------------------------------
*& Form fill_layout_structure
*&---------------------------------------------------------------------
FORM FILL_LAYOUT_STRUCTURE .
CLEAR IS_LAYOUT.
IS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
IS_LAYOUT-ZEBRA = 'X'.
IS_LAYOUT-NO_INPUT = 'X'.
IS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
IS_LAYOUT-TOTALS_TEXT = 'Totals'(201).
IS_LAYOUT-TOTALS_ONLY = 'X'.
IS_LAYOUT-ZEBRA = 'X'.
IS_LAYOUT-GROUP_CHANGE_EDIT = 'X'.
IS_LAYOUT-HEADER_TEXT = 'Wagners Users Transaction Code'.
ENDFORM. " fill_layout_structure
*&---------------------------------------------------------------------
*& Form fill_field_catalog_table
*&---------------------------------------------------------------------
FORM FILL_FIELD_CATALOG_TABLE .
DATA : GLS1(10).
PERFORM FILL_FIELD_CATALOG USING :
'AGR_TCODES' 'Trans Code .' '10' 'IT_DISP' SPACE SPACE 'C11' ' ' ' ',
'AGR_NAME' 'Name' '40' 'IT_DISP' SPACE SPACE 'C11' ' ' ' ' ,
'AGR_UNAME' 'Role' '60' 'IT_DISP' SPACE SPACE 'C11' 'X' ' ',
'TTEXT' 'Descript' '80' 'IT_DISP' SPACE SPACE 'C11' ' ' ' '.
ENDFORM. " fill_field_catalog_table
*&---------------------------------------------------------------------
*& Form fill_field_catalog
*&---------------------------------------------------------------------
FORM FILL_FIELD_CATALOG USING F D L T S Z Y A B.
DATA T_FLD TYPE SLIS_FIELDCAT_ALV.
STATICS POS LIKE SY-INDEX VALUE 0.
POS = POS + 1.
CLEAR T_FLD.
MOVE 1 TO T_FLD-ROW_POS.
MOVE POS TO T_FLD-COL_POS.
MOVE F TO T_FLD-FIELDNAME.
MOVE D TO T_FLD-SELTEXT_M.
MOVE L TO T_FLD-OUTPUTLEN.
MOVE T TO T_FLD-TABNAME.
MOVE S TO T_FLD-DO_SUM.
MOVE Z TO T_FLD-NO_ZERO.
MOVE Y TO T_FLD-EMPHASIZE.
MOVE A TO T_FLD-NO_OUT.
MOVE B TO T_FLD-NO_SUM.
APPEND T_FLD TO IT_FIELDCAT.
ENDFORM. " fill_field_catalog
*&---------------------------------------------------------------------
*& Form alv_header
*&---------------------------------------------------------------------
FORM ALV_HEADER USING P_I_HEADER.
DATA: WA_LINE TYPE SLIS_LISTHEADER.
CLEAR WA_LINE.
WA_LINE-TYP = 'H'.
WA_LINE-INFO = 'Wagners Investment'.
APPEND WA_LINE TO I_HEADER.
ENDFORM. " alv_header
*&---------------------------------------------------------------------
*& Form call_alv_function
*&---------------------------------------------------------------------
FORM CALL_ALV_FUNCTION .
REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = REPID
* i_callback_pf_status_set = ' '
IS_LAYOUT = IS_LAYOUT
IT_FIELDCAT = IT_FIELDCAT
TABLES
T_OUTTAB = IT_DISP.
IF SY-SUBRC EQ 0.
ENDIF.
ENDFORM. " call_alv_function
‎2008 Jun 26 4:43 AM
Hi Piroz,
Put the break point before the fm" REUSE_ALV_GRID_DISPLAY'. And then check the internal table IT_DISP whether it contains data or not.
If not the check how the internal table IT_DISP is being populated.
&**************Reward Point if helpful**************&
‎2008 Jun 26 5:30 AM
Hi Venkat
Thanks guru , Your modified report help me , One last question I want to keep the top of page and display the parameter at the top , Is there any way please
regards
Piroz
‎2008 Jun 26 5:43 AM
Hi Venkat
Thanks a lot for correcting and sending me the format , Now I can manage to change the other reports too.
I have one more report which is bashing my head like anything , This is basically a fuel calculation report for managment , I want to change this too in ALV FORMAT, I did all my efforts to correct but it is looping inside as i close the report.
Thanks in Advanced
REPORT Z_ESLP_ZFCR1 LINE-SIZE 220 LINE-COUNT 75
NO STANDARD PAGE HEADING.
TABLES : equi,
equz,
imptt,
imrg,
eqkt,
iloa.
type-pools: slis. "ALV Declarations
*ALV data declarations
data: fieldcatalog type slis_t_fieldcat_alv with header line,
gd_tab_group type slis_t_sp_group_alv,
gd_layout type slis_layout_alv,
gd_repid like sy-repid.
TYPES: BEGIN OF ty_data ,
equnr type equnr, " Euipment no
eqktx type eqkt-eqktx, " Equipment Text
eqfnr type iloa-eqfnr, " Equipment Sort field
idate type imrg-idate, " Measuring Date
recdu type imrg-recdu, " Unit of measuring ='KM','L','H'
recdv type imrg-recdv, " Counter reading data
cancl type imrg-cancl,
END OF ty_data.
TYPES: BEGIN OF ty_final,
equnr type equnr, " Equipment no
eqktx type eqkt-eqktx, " Equipment Text
eqfnr type iloa-eqfnr, " Equipment Sort field
idate type imrg-idate, " Measuring Date
min_date_km type imrg-idate, " Min Date
min_km type P DECIMALS 2, " Max Km
max_date_km type imrg-idate,
max_km type P DECIMALS 2, " Min km
t_max_min_km type P DECIMALS 2, " Total min_km-max_km
min_date_hr type imrg-idate, " Max Date
min_hr type P DECIMALS 2, " Max hr
max_date_hr type imrg-idate,
max_hr type P DECIMALS 2, " Min hr
t_max_min_hr type P DECIMALS 2, " Total min_hr-max_hr
min_date_lit type imrg-idate,
min_lit type P DECIMALS 2, " Min lit
max_date_lit type imrg-idate,
max_lit type P DECIMALS 2, " Max lit
fuel_con type imrg-recdv, " Total_hrs / t_max_min_hr
fuel_con2 type P DECIMALS 2, " Total_hrs / t_max_min_hr
km_l type P DECIMALS 2, " t max_min_km / t_max_min_lit
l_p type P DECIMALS 2 , " t_max_min_lit / t_max_min_hr
l_p2 type P DECIMALS 2 ,
END OF ty_final.
DATA: i_data TYPE TABLE OF ty_data, " internal table
wa_data TYPE ty_data, " work area
i_final TYPE TABLE OF ty_final, " internal table
wa_final TYPE ty_final. " work area
SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME.
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: p_equnr FOR equi-equnr OBLIGATORY, "no-extension no intervals,
p_idate FOR imrg-idate. "NO-EXTENSION NO INTERVALS OBLIGATORY,
"p_recdu FOR imrg-recdu." NO-EXTENSION NO INTERVALS ."default 'M3'" OBLIGATORY.
SELECTION-SCREEN END OF BLOCK blk1.
SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002.
SELECTION-SCREEN END OF BLOCK blk2.
SELECTION-SCREEN END OF BLOCK blk.
TOP-OF-PAGE.
FORMAT INTENSIFIED ON.
WRITE:/55(40) ' WAGNERS INVESTMENT LIMITED '.
WRITE:/50(40) ' VEHICLE FUEL CONSUMPTION REPORT ' CENTERED ,
2 'Page', sy-pagno.
FORMAT INTENSIFIED OFF.
WRITE:/50(40) '----
' CENTERED .
FORMAT INTENSIFIED ON.
WRITE:/2 sy-datum COLOR 3, sy-uzeit .
"WRITE:/1 S903-SPMON ."p_yearf.
ULINE.
"CENTERED.
write: /2 'Equipment No :'left-justified,p_equnr-low color 2 , ' to ' , p_equnr-high color 2.
write: /2 'Date From :', p_idate-low color 2 , ' to ' , p_idate-high color 2.
END-OF-PAGE.
START-OF-SELECTION.
*******************************************************************************
select aequnr deqktx feqfnr eidate erecdu erecdv
into table i_data
from equi AS a
inner join equz as b
on aequnr = bequnr
inner join iloa as f
on biloan = filoan
inner join imptt as c
on aobjnr = cmpobj
inner join eqkt as d
on aequnr = dequnr
inner join imrg as e
on epoint = cpoint
where a~equnr in p_equnr
and
e~idate in p_idate and
e~cancl ne 'X'.
loop at i_data into wa_data.
CLEAR: wa_final.
READ TABLE i_final into wa_final
with key equnr = wa_data-equnr." BINARY SEARCH.
if sy-subrc EQ 0.
PERFORM F_GET_MAX_DATA.
PERFORM F_GET_MAX_HOURS.
PERFORM F_GET_MAX_LIT.
PERFORM prepare_final_rec USING'M'. " Modify Existing Record
perform build_fieldcatalog.
perform build_layout.
perform display_alv_report.
ElSE.
PERFORM prepare_final_rec USING'A'. " Append New Record.
ENDIF.
ENDLOOP.
LOOP AT i_final into wa_final.
on change of wa_final-equnr.
perform build_fieldcatalog.
endon.
uline.
endloop.
refresh i_final.
clear i_final.
FORM F_GET_MAX_DATA.
select single MAX( eidate ) Min( eidate ) MAX( erecdv ) MIN( erecdv )
into corresponding fields of (wa_final-max_date_km,wa_final-min_date_km,wa_final-max_km ,wa_final-min_km)
from equi AS a
inner join equz as b
on aequnr = bequnr
inner join iloa as f
on biloan = filoan
inner join imptt as c
on aobjnr = cmpobj
inner join eqkt as d
on aequnr = dequnr
inner join imrg as e
on epoint = cpoint
where a~equnr in p_equnr
and
e~idate in p_idate
and
e~cancl ne 'X' and
e~recdu = 'KM'
AND a~equnr = wa_data-equnr.
ENDFORM.
FORM F_GET_MAX_HOURS.
select single MAX( erecdv ) MIN( erecdv )
into corresponding fields of (wa_final-max_hr, wa_final-min_hr)
from equi AS a
inner join equz as b
on aequnr = bequnr
inner join iloa as f
on biloan = filoan
inner join imptt as c
on aobjnr = cmpobj
inner join eqkt as d
on aequnr = dequnr
inner join imrg as e
on epoint = cpoint
where a~equnr in p_equnr
and
e~idate in p_idate
and
e~cancl ne 'X' and
e~recdu = 'H'
AND a~equnr = wa_data-equnr .
ENDFORM.
FORM F_GET_MAX_LIT.
select SUM( e~recdv )
into corresponding fields of (wa_final-fuel_con2)
from equi AS a
inner join eqkt as b
on bequnr = aequnr
inner join imptt as c
on cmpobj = aobjnr
inner join imrg as e
on epoint = cpoint
where a~equnr in p_equnr
and
e~idate in p_idate
and
e~cancl ne 'X' and
e~recdu = 'L'
AND a~equnr = wa_data-equnr.
ENDFORM.
FORM prepare_final_rec USING p_mode TYPE char1.
wa_final-t_max_min_km = wa_final-max_km - wa_final-min_km .
wa_final-t_max_min_hr = wa_final-max_hr - wa_final-min_hr.
if wa_final-t_max_min_km eq 0 .
wa_final-km_l = ( wa_final-max_km - wa_final-min_km ) / ( wa_final-fuel_con2 ) .
ELSE.
wa_final-km_l = 0.
endif.
if wa_final-t_max_min_hr eq 0 .
wa_final-l_p2 = ( wa_final-fuel_con2 ) / ( wa_final-t_max_min_hr ) .
ELSE.
wa_final-l_p2 = 0.
endif.
IF p_mode = 'A'.
wa_final-equnr = wa_data-equnr.
wa_final-eqktx = wa_data-eqktx.
wa_final-eqfnr = wa_data-eqfnr.
wa_final-t_max_min_km = wa_final-min_km - wa_final-max_km .
wa_final-t_max_min_hr = wa_final-max_hr - wa_final-min_hr.
wa_final-km_l = ( wa_final-max_km - wa_final-min_km ) / ( wa_final-fuel_con2 ).
wa_final-l_p2 = ( wa_final-fuel_con2 ) / ( wa_final-t_max_min_hr ) .
APPEND wa_final TO i_final .
ELSE.
MODIFY i_final FROM wa_final
TRANSPORTING
eqfnr
max_date_km
min_date_km
max_date_lit
min_date_lit
max_date_hr
min_date_hr
max_km
min_km
max_hr
min_hr
t_max_min_km
t_max_min_hr
fuel_con2
km_l
l_p2
where equnr = wa_data-equnr.
ENDIF.
ENDFORM. " PREPARE_FINAL_REC
*&----
*& Form BUILD_FIELDCATALOG
*&----
Build Fieldcatalog for ALV Report
*----
form build_fieldcatalog.
I.e. Field type may be required in-order for
the 'TOTAL' function to work.
fieldcatalog-fieldname = 'EQUNR'.
fieldcatalog-seltext_m = 'Equip no'.
fieldcatalog-tabname = 'i_final'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
fieldcatalog-do_sum = 'X'.
fieldcatalog-no_zero = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'EQKTX'.
fieldcatalog-seltext_m = 'Description'.
fieldcatalog-tabname = 'i_final'.
fieldcatalog-col_pos = 1.
fieldcatalog-outputlen = 40.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'EQFNR'.
fieldcatalog-seltext_m = 'Sortfield'.
fieldcatalog-tabname = 'i_final'.
fieldcatalog-col_pos = 2.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MIN_DATE_KM'.
fieldcatalog-seltext_m = 'Min Date'.
fieldcatalog-tabname = 'i_final'.
fieldcatalog-col_pos = 3.
fieldcatalog-outputlen = 12.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MAX_DATE_KM'.
fieldcatalog-seltext_m = 'Max Date'.
fieldcatalog-tabname = 'i_final'.
fieldcatalog-col_pos = 4.
fieldcatalog-outputlen = 12.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MIN_KM' .
fieldcatalog-seltext_m = 'Min KM'.
fieldcatalog-tabname = 'i_final'.
fieldcatalog-col_pos = 5.
fieldcatalog-outputlen = 12.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MAX_KM' .
fieldcatalog-seltext_m = 'Max KM'.
fieldcatalog-tabname = 'i_final'.
fieldcatalog-col_pos = 6.
fieldcatalog-outputlen = 12.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'T_MAX_MIN_KM' .
fieldcatalog-tabname = 'i_final'.
fieldcatalog-seltext_m = 'Total KM'.
fieldcatalog-col_pos = 7.
fieldcatalog-outputlen = 12.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MIN_HR' .
fieldcatalog-seltext_m = 'Min Hr'.
fieldcatalog-tabname = 'i_final'.
fieldcatalog-col_pos = 8.
fieldcatalog-outputlen = 12.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MAX_HR' .
fieldcatalog-seltext_m = 'Max Hr'.
fieldcatalog-tabname = 'i_final'.
fieldcatalog-col_pos = 9.
fieldcatalog-outputlen = 12.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'T_MAX_MIN_HR' .
fieldcatalog-seltext_m = 'Total HR'.
fieldcatalog-tabname = 'i_final'.
fieldcatalog-col_pos = 10.
fieldcatalog-outputlen = 12.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'FUEL_CON2' .
fieldcatalog-seltext_m = 'Fuel'.
fieldcatalog-tabname = 'i_final'.
fieldcatalog-col_pos = 11.
fieldcatalog-outputlen = 12.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'KM_L' .
fieldcatalog-seltext_m = 'Km/L'.
fieldcatalog-tabname = 'i_final'.
fieldcatalog-col_pos = 12.
fieldcatalog-outputlen = 12.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'L_P2' .
fieldcatalog-seltext_m = 'Lit/HR'.
fieldcatalog-tabname = 'i_final'.
fieldcatalog-col_pos = 13.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
endform. " BUILD_FIELDCATALOG
*&----
*& Form BUILD_LAYOUT
*&----
Build layout for ALV grid report
*
*----
form build_layout.
gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-totals_text = 'Totals'(201).
gd_layout-totals_only = 'X'.
gd_layout-f2code = 'DISP'. "Sets fcode for when double
"click(press f2)
gd_layout-zebra = 'X'.
gd_layout-group_change_edit = 'X'.
gd_layout-header_text = 'helllllo'.
endform. " BUILD_LAYOUT
*&----
*& Form DISPLAY_ALV_REPORT
*&----
Display report using ALV grid
*----
form display_alv_report.
gd_repid = sy-repid.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = gd_repid
i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
i_callback_user_command = 'USER_COMMAND'
i_grid_title = outtext
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
it_special_groups = gd_tabgroup
IT_EVENTS = GT_XEVENTS
i_save = 'X'
is_variant = z_template
tables
t_outtab = i_final
exceptions
program_error = 1
others = 2.
if sy-subrc eq 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
endform. " DISPLAY_ALV_REPORT