Application Development and Automation 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: 
Read only

ALV Report Format Problem

Former Member
0 Likes
636

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

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
601

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

6 REPLIES 6
Read only

Former Member
0 Likes
601

Pass the Parameter IS_structure in Reuse_alv_grid_dispaly

Regards

Devanand

Read only

Former Member
0 Likes
602

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

Read only

venkat_o
Active Contributor
0 Likes
601

Hi Piroz, I have modified ur code. please check. Its working .


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
I hope that it helps u . Regards, Venkat.O

Read only

Former Member
0 Likes
601

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

Read only

Former Member
0 Likes
601

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

Read only

Former Member
0 Likes
601

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