0% found this document useful (0 votes)
48 views23 pages

Power Consumption Report

The document defines types, data declarations, and program logic for a report on power usage. It declares various data types for tables, structures the data from different database tables, and contains logic for selection screen processing and report generation.

Uploaded by

Tushar Karhale
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
48 views23 pages

Power Consumption Report

The document defines types, data declarations, and program logic for a report on power usage. It declares various data types for tables, structures the data from different database tables, and contains logic for selection screen processing and report generation.

Uploaded by

Tushar Karhale
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 23

*&---------------------------------------------------------------------*

*& Report ZEAM_POWER_REPORT


*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*

REPORT zeam_power_report.

TYPE-POOLS: slis.

TABLES: iflot.

TYPES:
BEGIN OF ty_tplnr,
tplnr TYPE char90,
objnr TYPE iflot-objnr,
psort TYPE imrc_psort,
date TYPE imrg-idate,
time TYPE imrg-itime,
point TYPE imrg-point,
recdv TYPE imrg-recdv,
END OF ty_tplnr,

BEGIN OF lty_final,
date TYPE datum,
time TYPE uzeit,
ctratio TYPE i,
kwhprev TYPE p DECIMALS 2,
kwhpres TYPE p DECIMALS 2,
kwhdiff TYPE p DECIMALS 2,
totunit TYPE p DECIMALS 2,
kvaprev TYPE p DECIMALS 2,
kvapres TYPE p DECIMALS 2,
kvadiff TYPE p DECIMALS 2,
totunit1 TYPE p DECIMALS 2,
maxdmnd TYPE p DECIMALS 2,
pf TYPE p DECIMALS 5,
trip TYPE i,
tripdur TYPE char16,
END OF lty_final,

BEGIN OF ty_ausp,
objek TYPE ausp-objek,
atinn TYPE ausp-atinn,
atwrt TYPE ausp-atwrt,
atflv TYPE ausp-atflv,
END OF ty_ausp.

TYPES:
BEGIN OF lty_final1,
col1 TYPE char20,
col2 TYPE char20,
col3 TYPE char20,
col4 TYPE char20,
col5 TYPE char20,
col6 TYPE char20,
col7 TYPE char20,
col8 TYPE char20,
col9 TYPE char20,
col10 TYPE char20,
col11 TYPE char20,
col12 TYPE char20,
col13 TYPE char20,
col14 TYPE char20,
col15 TYPE char20,
col16 TYPE char20,
END OF lty_final1.

DATA:
ls_final1 TYPE lty_final1.

DATA:
lt_ausp_temp TYPE TABLE OF ty_ausp.

* *ALV Header declarations


DATA:
t_header1 TYPE slis_t_listheader,
wa_header1 TYPE slis_listheader,
t_line LIKE wa_header1-info.
DATA:
gt_return TYPE TABLE OF ddshretval,
gwa_return TYPE ddshretval,
gwa_dynpfields TYPE dynpread,
gt_dynpfields TYPE TABLE OF dynpread,
mark_tab TYPE ddshmarks,
gv_werks TYPE prps-werks,
gv_trip_total TYPE i,
gv_tripdur_total TYPE char16,
gv_tripdur_total1 TYPE char16,
lv_kwhdiff_sum TYPE p DECIMALS 2,
lv_kvadiff_sum TYPE p DECIMALS 2,
lv_pf_sum TYPE p DECIMALS 2,
gv_kwh_sum TYPE i,
gv_kva_sum TYPE i,
gv_max TYPE i,
lv_char_field TYPE qsollwertc.

DATA:
lv_point TYPE char12,
ls_tplnr TYPE ty_tplnr,
lt_tplnr TYPE TABLE OF ty_tplnr,
lt_impt_tab TYPE TABLE OF impt,
ls_impt_tab TYPE impt,
lt_impt_tab1 TYPE TABLE OF impt,
lt_impt_tab_temp TYPE TABLE OF impt,
lt_final TYPE TABLE OF lty_final,
ls_final TYPE lty_final.

DATA:
it_fieldcat TYPE slis_t_fieldcat_alv,
* it_fieldcat TYPE lvc_t_fcat,
wa_fieldcat TYPE slis_fieldcat_alv,
* wa_fieldcat TYPE lvc_s_fcat,
ls_layout TYPE lvc_s_layo.

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


PARAMETERS:
p_werks TYPE werks_d OBLIGATORY,
p_tplnr TYPE tplnr OBLIGATORY.
SELECT-OPTIONS:
s_date FOR sy-datum.
SELECTION-SCREEN:END OF BLOCK b1.

*-- At Selection screen


AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_werks.

*Get values from the database based on Plant


SELECT
werks,
name1
FROM t001w
INTO TABLE @DATA(gt_werks).

IF sy-subrc IS NOT INITIAL.


CLEAR gt_werks.
ELSE.
SORT gt_werks BY werks.
DELETE ADJACENT DUPLICATES FROM gt_werks COMPARING werks.
DELETE gt_werks WHERE werks EQ space.
ENDIF.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'


EXPORTING
retfield = 'WERKS'
dynpprog = sy-cprog
dynpnr = sy-dynnr
dynprofield = 'P_WERKS'
value_org = 'S'
TABLES
value_tab = gt_werks
return_tab = gt_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.

IF sy-subrc IS NOT INITIAL.


MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

READ TABLE gt_return INTO gwa_return INDEX 1.


IF sy-subrc = 0.
gv_werks = gwa_return-fieldval.
ENDIF.

*-- At Selection screen


AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_tplnr.

REFRESH: gt_dynpfields,gt_return.
CLEAR: gwa_dynpfields,gwa_return.

gwa_dynpfields-fieldname = 'P_WERKS'.
APPEND gwa_dynpfields TO gt_dynpfields.

*Get functional location value on the selection screen


CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = gt_dynpfields
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
double_conversion = 9
stepl_not_found = 10
OTHERS = 11.

IF sy-subrc IS NOT INITIAL.


MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

READ TABLE gt_dynpfields INTO gwa_dynpfields


WITH KEY fieldname = 'P_WERKS'.
IF sy-subrc = 0.
gv_werks = gwa_dynpfields-fieldvalue.
ENDIF.

*Get values from the database based on plant


** SELECT
** a~tplnr,
** b~pltxt
** FROM iflot AS a
** INNER JOIN iflotx AS b
** ON a~tplnr = b~tplnr
** INTO TABLE @DATA(gt_iflot)
** WHERE a~tplma = @gv_werks.

SELECT
a~tplnr,
b~pltxt
FROM iloa AS a
INNER JOIN iflotx AS b
ON a~tplnr = b~tplnr
INTO TABLE @DATA(gt_iflot)
WHERE a~swerk = @gv_werks
AND a~owner = '2'.

IF sy-subrc IS NOT INITIAL.


CLEAR gt_iflot.
ELSE.
SORT gt_iflot BY tplnr.
ENDIF.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'


EXPORTING
retfield = 'TPLNR'
value_org = 'S'
* multiple_choice = 'X'
* mark_tab = mark_tab
TABLES
value_tab = gt_iflot
return_tab = gt_return
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.

IF sy-subrc IS NOT INITIAL.


MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

READ TABLE gt_return INTO gwa_return INDEX 1.


IF sy-subrc = 0.
p_tplnr = gwa_return-fieldval.
ENDIF.
****************************************
*-- Start of selection
****************************************

START-OF-SELECTION.

** SELECT
** tplnr,
** objnr
** FROM iflot
** INTO TABLE @DATA(gt_iflot)
** WHERE tplnr EQ @p_tplnr
** AND tplma EQ @p_werks.

*Get values from the database based on plant


SELECT
a~tplnr,
b~objnr
FROM iloa AS a
INNER JOIN iflot AS b
ON a~tplnr = b~tplnr
INTO TABLE @DATA(gt_iflot)
WHERE a~tplnr = @p_tplnr
AND a~swerk = @p_werks
AND a~owner = '2'.

IF sy-subrc IS NOT INITIAL.


CLEAR gt_iflot.
ELSE.
SORT gt_iflot BY tplnr.
ENDIF.

SELECT
clint,
klart,
class
FROM klah
INTO TABLE @DATA(lt_klah)
WHERE klart = '003'
AND class = 'E_METER'.
IF sy-subrc IS INITIAL.
SORT lt_klah[] BY clint.
ENDIF.

IF lt_klah[] IS NOT INITIAL.


SELECT
clint,
imerk
FROM ksml
INTO TABLE @DATA(lt_ksml)
FOR ALL ENTRIES IN @lt_klah
WHERE clint = @lt_klah-clint.

IF sy-subrc IS INITIAL.
SORT lt_ksml[] BY clint.
ENDIF.

IF lt_ksml[] IS NOT INITIAL.


SELECT
atinn,
atnam,
msehi
FROM cabn
INTO TABLE @DATA(lt_cabn)
FOR ALL ENTRIES IN @lt_ksml
WHERE atinn = @lt_ksml-imerk.

IF sy-subrc IS INITIAL.
SORT lt_cabn[] BY atinn.
ENDIF.

SELECT
objek,
atinn,
atwrt,
atflv
FROM ausp
INTO TABLE @DATA(lt_ausp)
FOR ALL ENTRIES IN @lt_ksml
WHERE atinn = @lt_ksml-imerk.

IF sy-subrc IS INITIAL.
SORT lt_ausp BY atinn.
ENDIF.
ENDIF.
ENDIF.

SELECT
mdocm,
point,
idate,
itime,
recdv
FROM imrg
INTO TABLE @DATA(lt_imrg).

IF sy-subrc IS INITIAL.
SORT lt_imrg BY idate DESCENDING itime DESCENDING.
DATA(lt_imrg_kwh) = lt_imrg[].
DATA(lt_imrg_kva) = lt_imrg[].
ENDIF.
* FOR ALL ENTRIES IN @lt_impt_tab1
* WHERE point = @lt_impt_tab1-point
* AND idate IN @s_date.

LOOP AT gt_iflot ASSIGNING FIELD-SYMBOL(<lfs_iflot>).


ls_tplnr-tplnr = <lfs_iflot>-tplnr.

CALL FUNCTION 'MEASUREM_POINTS_READ_TO_OBJECT'


EXPORTING
measurement_point_object = <lfs_iflot>-objnr
TABLES
impt_tab = lt_impt_tab1
EXCEPTIONS
no_entry_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
CONTINUE.
ENDIF.

READ TABLE lt_impt_tab1 INTO ls_impt_tab WITH KEY psort = 'KWHM'.


IF sy-subrc IS INITIAL.
* CONCATENATE '0' ls_impt_tab-point INTO lv_point.
SELECT SINGLE
objek,
atinn,
date_from
FROM ausp
INTO @DATA(ls_ausp)
WHERE objek EQ @ls_impt_tab-point
AND klart EQ '037'.

IF sy-subrc IS INITIAL.
* READ TABLE lt_cabn ASSIGNING FIELD-SYMBOL(<lfs_cabn1>) WITH KEY atinn =
ls_ausp-atinn.
SELECT SINGLE
atinn,
atnam
FROM cabn
INTO @DATA(ls_cabn)
WHERE atinn EQ @ls_ausp-atinn
AND atnam EQ 'DATE_OF_COMMISSION'.
IF sy-subrc IS INITIAL.
DATA(gv_date_comm) = ls_ausp-date_from.
ENDIF.
ENDIF.
ENDIF.

SELECT
mdocm,
point,
idate,
itime,
recdv
FROM imrg
APPENDING TABLE @DATA(lt_imrg1)
FOR ALL ENTRIES IN @lt_impt_tab1
WHERE point = @lt_impt_tab1-point
AND idate IN @s_date
AND lvorm NE @abap_true
AND cancl NE @abap_true.
IF sy-subrc IS INITIAL.
SORT lt_imrg1 BY mdocm point idate itime.
ENDIF.

IF lt_impt_tab1 IS NOT INITIAL.


LOOP AT lt_impt_tab1 ASSIGNING FIELD-SYMBOL(<lfs_impt>).
IF <lfs_impt>-psort = 'CT_RATIO'.
LOOP AT lt_imrg1 ASSIGNING FIELD-SYMBOL(<lfs_imrg1>) WHERE point =
<lfs_impt>-point.
ls_tplnr-tplnr = <lfs_iflot>-tplnr.
ls_tplnr-objnr = <lfs_iflot>-objnr.
ls_tplnr-psort = <lfs_impt>-psort .
ls_tplnr-date = <lfs_imrg1>-idate.
ls_tplnr-time = <lfs_imrg1>-itime.
ls_tplnr-point = <lfs_imrg1>-point.
ls_tplnr-recdv = <lfs_imrg1>-recdv.
APPEND ls_tplnr TO lt_tplnr.
ENDLOOP.

ELSEIF <lfs_impt>-psort = 'KWHM'.


LOOP AT lt_imrg1 ASSIGNING <lfs_imrg1> WHERE point = <lfs_impt>-point.
ls_tplnr-tplnr = <lfs_iflot>-tplnr.
ls_tplnr-objnr = <lfs_iflot>-objnr.
ls_tplnr-psort = <lfs_impt>-psort .
ls_tplnr-date = <lfs_imrg1>-idate.
ls_tplnr-time = <lfs_imrg1>-itime.
ls_tplnr-point = <lfs_imrg1>-point.
ls_tplnr-recdv = <lfs_imrg1>-recdv.
APPEND ls_tplnr TO lt_tplnr.
ENDLOOP.

ELSEIF <lfs_impt>-psort = 'KVAM'.


LOOP AT lt_imrg1 ASSIGNING <lfs_imrg1> WHERE point = <lfs_impt>-point.
ls_tplnr-tplnr = <lfs_iflot>-tplnr.
ls_tplnr-objnr = <lfs_iflot>-objnr.
ls_tplnr-psort = <lfs_impt>-psort .
ls_tplnr-date = <lfs_imrg1>-idate.
ls_tplnr-time = <lfs_imrg1>-itime.
ls_tplnr-point = <lfs_imrg1>-point.
ls_tplnr-recdv = <lfs_imrg1>-recdv.
APPEND ls_tplnr TO lt_tplnr.
ENDLOOP.

ELSEIF <lfs_impt>-psort = 'MAX_DEMAND'.


LOOP AT lt_imrg1 ASSIGNING <lfs_imrg1> WHERE point = <lfs_impt>-point.
ls_tplnr-tplnr = <lfs_iflot>-tplnr.
ls_tplnr-objnr = <lfs_iflot>-objnr.
ls_tplnr-psort = <lfs_impt>-psort .
ls_tplnr-date = <lfs_imrg1>-idate.
ls_tplnr-time = <lfs_imrg1>-itime.
ls_tplnr-point = <lfs_imrg1>-point.
ls_tplnr-recdv = <lfs_imrg1>-recdv.
APPEND ls_tplnr TO lt_tplnr.
ENDLOOP.
ELSEIF <lfs_impt>-psort = 'PF'.
LOOP AT lt_imrg1 ASSIGNING <lfs_imrg1> WHERE point = <lfs_impt>-point.
ls_tplnr-tplnr = <lfs_iflot>-tplnr.
ls_tplnr-objnr = <lfs_iflot>-objnr.
ls_tplnr-psort = <lfs_impt>-psort .
ls_tplnr-date = <lfs_imrg1>-idate.
ls_tplnr-time = <lfs_imrg1>-itime.
ls_tplnr-point = <lfs_imrg1>-point.
ls_tplnr-recdv = <lfs_imrg1>-recdv.
APPEND ls_tplnr TO lt_tplnr.
ENDLOOP.

ELSEIF <lfs_impt>-psort = 'TRIP'.


LOOP AT lt_imrg1 ASSIGNING <lfs_imrg1> WHERE point = <lfs_impt>-point.
ls_tplnr-tplnr = <lfs_iflot>-tplnr.
ls_tplnr-objnr = <lfs_iflot>-objnr.
ls_tplnr-psort = <lfs_impt>-psort .
ls_tplnr-date = <lfs_imrg1>-idate.
ls_tplnr-time = <lfs_imrg1>-itime.
ls_tplnr-point = <lfs_imrg1>-point.
ls_tplnr-recdv = <lfs_imrg1>-recdv.
APPEND ls_tplnr TO lt_tplnr.
ENDLOOP.

ELSEIF <lfs_impt>-psort = 'TRIPDUR'.


LOOP AT lt_imrg1 ASSIGNING <lfs_imrg1> WHERE point = <lfs_impt>-point.
ls_tplnr-tplnr = <lfs_iflot>-tplnr.
ls_tplnr-objnr = <lfs_iflot>-objnr.
ls_tplnr-psort = <lfs_impt>-psort .
ls_tplnr-date = <lfs_imrg1>-idate.
ls_tplnr-time = <lfs_imrg1>-itime.
ls_tplnr-point = <lfs_imrg1>-point.
ls_tplnr-recdv = <lfs_imrg1>-recdv.
APPEND ls_tplnr TO lt_tplnr.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDIF.

ENDLOOP.

lt_ausp_temp[] = lt_ausp[].

SELECT
cuobj,
objek
FROM inob
INTO TABLE @DATA(gt_inob)
FOR ALL ENTRIES IN @lt_tplnr
WHERE objek = @lt_tplnr-tplnr.

IF sy-subrc IS INITIAL.
SORT gt_inob BY cuobj objek.
ENDIF.

SORT lt_imrg1[] BY idate DESCENDING itime DESCENDING.

DATA: lv_char_field1 TYPE qsollwertc.


DATA: gv_contract TYPE qsollwertc.

SORT lt_tplnr by psort.

LOOP AT lt_tplnr INTO ls_tplnr GROUP BY ( tplnr = ls_tplnr-tplnr


date = ls_tplnr-date
time = ls_tplnr-time )
ASSIGNING FIELD-SYMBOL(<lfs_tplnr1>).
LOOP AT GROUP <lfs_tplnr1> ASSIGNING FIELD-SYMBOL(<lfs_tp>).
** ls_final-funcarea = <lfs_tp>-tplnr.
ls_final-date = <lfs_tp>-date.
ls_final-time = <lfs_tp>-time.

*--Meter type
READ TABLE gt_inob ASSIGNING FIELD-SYMBOL(<lfs_inob>) WITH KEY objek =
<lfs_tp>-tplnr.
IF sy-subrc IS INITIAL.
LOOP AT lt_ausp ASSIGNING FIELD-SYMBOL(<lfs_ausp>) WHERE objek =
<lfs_inob>-cuobj.
READ TABLE lt_cabn ASSIGNING FIELD-SYMBOL(<lfs_cabn>) WITH KEY atinn =
<lfs_ausp>-atinn
atnam =
'MT_NUMBER'.
IF sy-subrc IS INITIAL.
READ TABLE lt_ausp_temp ASSIGNING FIELD-SYMBOL(<lfs_ausp_temp>) WITH
KEY objek = <lfs_inob>-cuobj atinn = <lfs_cabn>-atinn.
IF sy-subrc IS INITIAL.
DATA(gv_mtype) = <lfs_ausp>-atwrt.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.

* DATA:lv_ct_p TYPE p DECIMALS 3.


DATA:lv_ct_i TYPE i.
DATA:lv_ct_char TYPE char10.
DATA:lv_unit TYPE char5.
*--Contract Demand
READ TABLE gt_inob ASSIGNING <lfs_inob> WITH KEY objek = <lfs_tp>-tplnr.
IF sy-subrc IS INITIAL.
LOOP AT lt_ausp ASSIGNING <lfs_ausp> WHERE objek = <lfs_inob>-cuobj.
READ TABLE lt_cabn ASSIGNING <lfs_cabn> WITH KEY atinn = <lfs_ausp>-atinn
atnam = 'CT_DEMAND'.
IF sy-subrc IS INITIAL.
READ TABLE lt_ausp_temp ASSIGNING <lfs_ausp_temp> WITH KEY objek =
<lfs_inob>-cuobj
atinn =
<lfs_cabn>-atinn.
IF sy-subrc IS INITIAL.

lv_ct_i = <lfs_ausp>-atflv.
MOVE lv_ct_i TO lv_ct_char.
lv_unit = <lfs_cabn>-msehi.
* MOVE lv_ct_p to lv_ct_char.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.
*--Supplier Provider name
READ TABLE gt_inob ASSIGNING <lfs_inob> WITH KEY objek = <lfs_tp>-tplnr.
IF sy-subrc IS INITIAL.
LOOP AT lt_ausp ASSIGNING <lfs_ausp> WHERE objek = <lfs_inob>-cuobj.
READ TABLE lt_cabn ASSIGNING <lfs_cabn> WITH KEY atinn = <lfs_ausp>-atinn
atnam = 'SUPPLY_NAME'.
IF sy-subrc IS INITIAL.
READ TABLE lt_ausp_temp ASSIGNING <lfs_ausp_temp> WITH KEY objek =
<lfs_inob>-cuobj
atinn =
<lfs_cabn>-atinn.
IF sy-subrc IS INITIAL.
DATA(gv_supply) = <lfs_ausp>-atwrt.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.

IF <lfs_tp>-psort = 'CT_RATIO'.
ls_final-ctratio = <lfs_tp>-recdv.
DATA(lv_ct_ratio) = <lfs_tp>-recdv.
ELSEIF <lfs_tp>-psort = 'KWHM'.
ls_final-kwhpres = <lfs_tp>-recdv.
DELETE lt_imrg_kwh WHERE point NE <lfs_tp>-point.
READ TABLE lt_imrg_kwh ASSIGNING FIELD-SYMBOL(<lfs_imrg>) WITH KEY point =
<lfs_tp>-point
idate =
<lfs_tp>-date
itime =
<lfs_tp>-time.
IF sy-subrc IS INITIAL.
DATA(lv_tabix) = sy-tabix.
lv_tabix = lv_tabix + 1.
READ TABLE lt_imrg_kwh ASSIGNING <lfs_imrg> INDEX lv_tabix.
IF sy-subrc IS INITIAL.
ls_final-kwhprev = <lfs_imrg>-recdv.
ENDIF.
ENDIF.
ls_final-kwhdiff = ls_final-kwhpres - ls_final-kwhprev.
lv_kwhdiff_sum = lv_kwhdiff_sum + ls_final-kwhdiff.
ls_final-totunit = ( ls_final-kwhpres - ls_final-kwhprev ) * lv_ct_ratio.
gv_kwh_sum = gv_kwh_sum + ls_final-totunit.
ELSEIF <lfs_tp>-psort = 'KVAM'.
ls_final-kvapres = <lfs_tp>-recdv.
DELETE lt_imrg_kva WHERE point NE <lfs_tp>-point.
READ TABLE lt_imrg_kva ASSIGNING <lfs_imrg> WITH KEY point = <lfs_tp>-point
idate = <lfs_tp>-date
itime = <lfs_tp>-time.
IF sy-subrc IS INITIAL.
lv_tabix = sy-tabix.
lv_tabix = lv_tabix + 1.
READ TABLE lt_imrg_kva ASSIGNING <lfs_imrg> INDEX lv_tabix.
IF sy-subrc IS INITIAL.
ls_final-kvaprev = <lfs_imrg>-recdv.
ENDIF.
ENDIF.
ls_final-kvadiff = ls_final-kvapres - ls_final-kvaprev.
lv_kvadiff_sum = lv_kvadiff_sum + ls_final-kvadiff.
ls_final-totunit1 = ( ls_final-kvapres - ls_final-kvaprev ) * lv_ct_ratio.
gv_kva_sum = gv_kva_sum + ls_final-totunit1.
ELSEIF <lfs_tp>-psort = 'MAX_DEMAND'.
ls_final-maxdmnd = <lfs_tp>-recdv.
IF gv_max LT <lfs_tp>-recdv.
gv_max = <lfs_tp>-recdv.
ENDIF.
ELSEIF <lfs_tp>-psort = 'PF'.
ls_final-pf = <lfs_tp>-recdv.
lv_pf_sum = lv_pf_sum + ls_final-pf.
ELSEIF <lfs_tp>-psort = 'TRIP'.
ls_final-trip = <lfs_tp>-recdv.
gv_trip_total = gv_trip_total + <lfs_tp>-recdv.
ELSEIF <lfs_tp>-psort = 'TRIPDUR'.

CALL FUNCTION 'QSS0_FLTP_TO_CHAR_CONVERSION'


EXPORTING
i_number_of_digits = 0
i_fltp_value = <lfs_tp>-recdv
* I_VALUE_NOT_INITIAL_FLAG = 'X'
* I_SCREEN_FIELDLENGTH = 16
IMPORTING
e_char_field = lv_char_field.

* ls_final-tripdur = <lfs_tp>-recdv.
ls_final-tripdur = lv_char_field.
* gv_tripdur_total = gv_tripdur_total + <lfs_tp>-recdv.
gv_tripdur_total = gv_tripdur_total + lv_char_field.
ENDIF.
ENDLOOP.
APPEND ls_final TO lt_final.
CLEAR: ls_final,lv_ct_ratio,lv_char_field,lv_unit.
ENDLOOP.

SORT lt_final BY date ASCENDING time ASCENDING.

READ TABLE lt_final ASSIGNING FIELD-SYMBOL(<lfs_final>) INDEX 1.


IF sy-subrc IS INITIAL.
DATA(gv_tu_last) = <lfs_final>-totunit.
DATA(gv_tu_last1) = <lfs_final>-totunit1.
ENDIF.

DESCRIBE TABLE lt_final LINES DATA(lv_lines).


READ TABLE lt_final ASSIGNING <lfs_final> INDEX lv_lines.
IF sy-subrc IS INITIAL.
gv_tu_last = <lfs_final>-totunit - gv_tu_last.
gv_tu_last1 = <lfs_final>-totunit1 - gv_tu_last1.
ENDIF.

CLEAR ls_final.
* ls_final1-col1 = 'Summuary'.
ls_final-time = space.
ls_final-ctratio = space.
ls_final-kwhdiff = lv_kwhdiff_sum.
ls_final-kvadiff = lv_kvadiff_sum.
ls_final-totunit = gv_kwh_sum.
ls_final-totunit1 = gv_kva_sum.
ls_final-pf = lv_pf_sum / lv_lines.
* ls_final-totunit = gv_tu_last.
* ls_final-totunit1 = gv_tu_last1.
ls_final-maxdmnd = gv_max.
ls_final-trip = gv_trip_total.
* gv_tripdur_total1 = gv_tripdur_total / 60.

CALL FUNCTION 'CONVERSION_EXIT_SDURA_OUTPUT'


EXPORTING
input = gv_tripdur_total
IMPORTING
output = gv_tripdur_total1.

* MOVE gv_tripdur_total1 to ls_final-tripdur.

CONCATENATE gv_tripdur_total1 '(HH:MM)' INTO gv_tripdur_total1 SEPARATED BY


space.
ls_final-tripdur = gv_tripdur_total1.
APPEND ls_final TO lt_final.

PERFORM build_alv_header.

PERFORM build_fieldcat.

DATA:
gr_table TYPE REF TO cl_salv_table,
gr_functions TYPE REF TO cl_salv_functions_list,
gr_layout TYPE REF TO cl_salv_layout,
gr_layout_key TYPE salv_s_layout_key,
gr_display TYPE REF TO cl_salv_display_settings,
gr_content TYPE REF TO cl_salv_form_element,
gr_columns TYPE REF TO cl_salv_columns_table,
gr_column TYPE REF TO cl_salv_column_table.

PERFORM alv_grid_display.

** DATA(ls_repid) = sy-repid.
***Pass data and field catalog to ALV function module to display ALV list
** CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
** EXPORTING
** i_callback_program = ls_repid
** i_callback_top_of_page = 'TOP_OF_PAGE'
** i_html_height_top = 30
** i_grid_title = 'Power Consumption Report'
*** is_layout = ls_layout
** it_fieldcat = it_fieldcat
** TABLES
** t_outtab = lt_final
** EXCEPTIONS
** program_error = 1
** OTHERS = 2.

** CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'


** EXPORTING
** i_callback_program = ls_repid
** i_callback_html_top_of_page = 'TOP_OF_PAGE'
** is_layout_lvc = ls_layout
** it_fieldcat_lvc = it_fieldcat
** i_html_height_top = 25
** TABLES
** t_outtab = lt_final
** EXCEPTIONS
** program_error = 1
** OTHERS = 2.
** IF sy-subrc <> 0.
*** Implement suitable error handling here
** ENDIF.

IF sy-subrc IS NOT INITIAL.


MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
*&---------------------------------------------------------------------*
*& Form build_fieldcat
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM build_fieldcat .

CLEAR:wa_fieldcat.
wa_fieldcat-fieldname = 'DATE'.
wa_fieldcat-seltext_m = 'Date'.
* wa_fieldcat-emphasize = abap_true.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR:wa_fieldcat.
wa_fieldcat-fieldname = 'TIME'.
wa_fieldcat-seltext_m = 'Time'.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR:wa_fieldcat.
wa_fieldcat-fieldname = 'CTRATIO'.
wa_fieldcat-seltext_m = 'CT Ratio'.
wa_fieldcat-no_zero = abap_true.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR:wa_fieldcat.
wa_fieldcat-fieldname = 'KWHPREV'.
wa_fieldcat-seltext_m = 'KWH Previous Reading'.
wa_fieldcat-no_zero = abap_true.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR:wa_fieldcat.
wa_fieldcat-fieldname = 'KWHPRES'.
wa_fieldcat-seltext_m = 'KWH Present Reading'.
wa_fieldcat-no_zero = abap_true.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR:wa_fieldcat.
wa_fieldcat-fieldname = 'KWHDIFF'.
wa_fieldcat-seltext_m = 'KWH Difference'.
wa_fieldcat-no_zero = abap_true.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR:wa_fieldcat.
wa_fieldcat-fieldname = 'TOTUNIT'.
wa_fieldcat-seltext_l = 'CT Ratio*KWH Difference'.
wa_fieldcat-no_zero = abap_true.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR:wa_fieldcat.
wa_fieldcat-fieldname = 'KVAPREV'.
wa_fieldcat-seltext_m = 'KVA Previous Reading'.
wa_fieldcat-no_zero = abap_true.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR:wa_fieldcat.
wa_fieldcat-fieldname = 'KVAPRES'.
wa_fieldcat-seltext_m = 'KVA Present Reading'.
wa_fieldcat-no_zero = abap_true.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR:wa_fieldcat.
wa_fieldcat-fieldname = 'KVADIFF'.
wa_fieldcat-seltext_m = 'KVA Difference'.
wa_fieldcat-no_zero = abap_true.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR:wa_fieldcat.
wa_fieldcat-fieldname = 'TOTUNIT1'.
wa_fieldcat-seltext_l = 'CT Ratio*KVA Difference'.
wa_fieldcat-no_zero = abap_true.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR:wa_fieldcat.
wa_fieldcat-fieldname = 'MAXDMND'.
wa_fieldcat-seltext_m = 'Maximum Demand'.
wa_fieldcat-no_zero = abap_true.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR:wa_fieldcat.
wa_fieldcat-fieldname = 'PF'.
wa_fieldcat-seltext_m = 'Power Factor'.
wa_fieldcat-no_zero = abap_true.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR:wa_fieldcat.
wa_fieldcat-fieldname = 'TRIP'.
wa_fieldcat-seltext_m = 'No of Tripings'.
* wa_fieldcat-do_sum = abap_true.
wa_fieldcat-no_zero = abap_true.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR:wa_fieldcat.
wa_fieldcat-fieldname = 'TRIPDUR'.
wa_fieldcat-seltext_l = 'Trip Duration(in mins)'.
wa_fieldcat-no_zero = abap_true.
APPEND wa_fieldcat TO it_fieldcat.

* ls_layout-stylefname = 'BOLD'.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form top_of_page
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM build_alv_header.

DATA:
lv_date_low TYPE char10,
lv_date_high TYPE char10,
lv_date_comm TYPE char10.

CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT'


EXPORTING
input = s_date-low
IMPORTING
output = lv_date_low.

CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT'


EXPORTING
input = s_date-high
IMPORTING
output = lv_date_high.

CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT'


EXPORTING
input = gv_date_comm
IMPORTING
output = lv_date_comm.

wa_header1-typ = 'S'.
wa_header1-key = 'Maintenance Plant:'.

SELECT SINGLE werks, name1 FROM t001w INTO @DATA(ls_werks) WHERE werks =
@p_werks.
IF sy-subrc IS INITIAL.
DATA(lv_werks_desc) = ls_werks-name1.
ENDIF.
DATA:
lv_space(15) TYPE c,
lv_space1(15) TYPE c.

CONCATENATE p_werks lv_space INTO DATA(lv_1) RESPECTING BLANKS.


CONCATENATE lv_1 '(' INTO DATA(lv_target) RESPECTING BLANKS.
CONCATENATE lv_target lv_werks_desc INTO DATA(lv_n_target).
CONCATENATE lv_n_target ')' INTO wa_header1-info.

APPEND wa_header1 TO t_header1.


CLEAR: wa_header1,lv_target,lv_1.

wa_header1-typ = 'S'.
wa_header1-key = 'Functional Location:'.
SELECT SINGLE tplnr, pltxt FROM iflotx INTO @DATA(ls_iflotx) WHERE tplnr =
@p_tplnr.
IF sy-subrc IS INITIAL.
DATA(lv_tplnr_desc) = ls_iflotx-pltxt.
ENDIF.

CONCATENATE p_tplnr lv_space INTO DATA(lv_2) RESPECTING BLANKS.


CONCATENATE lv_2 '(' INTO DATA(lv_3) RESPECTING BLANKS.
CONCATENATE lv_3 lv_tplnr_desc INTO DATA(lv_4).
CONCATENATE lv_4 ')' INTO wa_header1-info.

APPEND wa_header1 TO t_header1.


CLEAR wa_header1.

wa_header1-typ = 'S'.
wa_header1-key = 'Meter Type:'.
wa_header1-info = gv_mtype.
APPEND wa_header1 TO t_header1.
CLEAR wa_header1.

wa_header1-typ = 'S'.
wa_header1-key = 'Contract Demand:'.
* wa_header1-info = gv_contract.
CONCATENATE lv_ct_char lv_unit INTO wa_header1-info.
* wa_header1-info = lv_ct_char.
APPEND wa_header1 TO t_header1.
CLEAR wa_header1.

wa_header1-typ = 'S'.
wa_header1-key = 'Supplier Name:'.
wa_header1-info = gv_supply.
APPEND wa_header1 TO t_header1.
CLEAR wa_header1.

wa_header1-typ = 'S'.
wa_header1-key = 'Date of Commission:'.
wa_header1-info = lv_date_comm.
APPEND wa_header1 TO t_header1.
CLEAR wa_header1.

wa_header1-typ = 'S'.
wa_header1-key = 'Reporting Period:'.
CONCATENATE lv_date_low lv_space INTO DATA(lv_target1) RESPECTING BLANKS.
CONCATENATE lv_space lv_date_high INTO DATA(lv_target2) RESPECTING BLANKS.
CONCATENATE lv_target1 lv_target2 INTO wa_header1-info SEPARATED BY 'To'
RESPECTING BLANKS.
APPEND wa_header1 TO t_header1.
CLEAR wa_header1.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form alv_grid_display
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM alv_grid_display .

CLEAR : gr_table.
DATA: lv_title TYPE lvc_title.
lv_title = 'Power Consumption Report'.
TRY.
CALL METHOD cl_salv_table=>factory
EXPORTING
list_display = if_salv_c_bool_sap=>false
IMPORTING
r_salv_table = gr_table
CHANGING
t_table = lt_final.
CATCH cx_salv_msg .
ENDTRY.

IF gr_table IS INITIAL.
MESSAGE 'Error Creating ALV Grid ' TYPE 'I' DISPLAY LIKE 'E'.
STOP.
ENDIF.

** Get functions details


gr_functions = gr_table->get_functions( ).

** Activate All Buttons in Tool Bar


gr_functions->set_all( if_salv_c_bool_sap=>true ).

******* Layout Settings *******

CLEAR : gr_layout, gr_layout_key.


MOVE sy-repid TO gr_layout_key-report. "Set Report ID as
Layout Key"

gr_layout = gr_table->get_layout( ). "Get Layout of


Table"
gr_layout->set_key( gr_layout_key ). "Set Report Id to
Layout"
gr_layout->set_save_restriction( if_salv_c_layout=>restrict_none ). "No
Restriction to Save Layout"

* ******* Global Display Settings *******


gr_display = gr_table->get_display_settings( ). " Global Display
settings"
gr_display->set_striped_pattern( if_salv_c_bool_sap=>true ). "Activate Strip
Pattern"
MOVE 'Power Consumption Report' TO lv_title.
gr_display->set_list_header( lv_title ).

* CALL METHOD lrc_grid->set_grid_lines


* EXPORTING
* value = '23'.
gr_table->set_top_of_list_height( 25 ).

******* Top of List settings ******


PERFORM top_of_page CHANGING gr_content.

gr_table->set_top_of_list( gr_content ).

gr_columns = gr_table->get_columns( ).

PERFORM column_prepare.

PERFORM convert_no_zero.

CALL METHOD gr_table->display.

ENDFORM.
FORM top_of_page CHANGING lr_content TYPE REF TO cl_salv_form_element.
** CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
** EXPORTING
** it_list_commentary = t_header1.

DATA : lr_grid TYPE REF TO cl_salv_form_layout_grid,


lr_text TYPE REF TO cl_salv_form_text,
lr_label TYPE REF TO cl_salv_form_label,
lr_head TYPE string.

DATA:
lv_date_low TYPE char10,
lv_date_high TYPE char10,
lv_date_comm TYPE char10.

CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT'


EXPORTING
input = s_date-low
IMPORTING
output = lv_date_low.

CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT'


EXPORTING
input = s_date-high
IMPORTING
output = lv_date_high.

CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT'


EXPORTING
input = gv_date_comm
IMPORTING
output = lv_date_comm.

CREATE OBJECT lr_grid.

** Add Label in Grid **


SELECT SINGLE werks, name1 FROM t001w INTO @DATA(ls_werks) WHERE werks =
@p_werks.
IF sy-subrc IS INITIAL.
DATA(lv_werks_desc) = ls_werks-name1.
ENDIF.
DATA:
lv_space(15) TYPE c,
lv_space1(15) TYPE c.

CONCATENATE p_werks lv_space INTO DATA(lv_1) RESPECTING BLANKS.


CONCATENATE lv_1 '(' INTO DATA(lv_target) RESPECTING BLANKS.
CONCATENATE lv_target lv_werks_desc INTO DATA(lv_n_target).
CONCATENATE lv_n_target ')' INTO DATA(lv_plant_target).

lr_label = lr_grid->create_label( row = 1


column = 1
text = 'Maintenance Plant:' ).
lr_text = lr_grid->create_text( row = 1
column = 2
text = lv_plant_target ).
lr_grid->add_row( ).
lr_label->set_label_for( lr_text ).
SELECT SINGLE tplnr, pltxt FROM iflotx INTO @DATA(ls_iflotx) WHERE tplnr =
@p_tplnr.
IF sy-subrc IS INITIAL.
DATA(lv_tplnr_desc) = ls_iflotx-pltxt.
ENDIF.

CONCATENATE p_tplnr lv_space INTO DATA(lv_2) RESPECTING BLANKS.


CONCATENATE lv_2 '(' INTO DATA(lv_3) RESPECTING BLANKS.
CONCATENATE lv_3 lv_tplnr_desc INTO DATA(lv_4).
CONCATENATE lv_4 ')' INTO DATA(lv_tplnr_target).

lr_label = lr_grid->create_label( row = 2


column = 1
text = 'Functional Location:' ).
lr_text = lr_grid->create_text( row = 2
column = 2
text = lv_tplnr_target ).
lr_grid->add_row( ).
lr_label->set_label_for( lr_text ).

lr_label = lr_grid->create_label( row = 3


column = 1
text = 'Meter Type:' ).
lr_text = lr_grid->create_text( row = 3
column = 2
text = gv_mtype ).
lr_grid->add_row( ).
lr_label->set_label_for( lr_text ).

CONCATENATE lv_ct_char lv_unit INTO DATA(lv_cdmd_target).


lr_label = lr_grid->create_label( row = 4
column = 1
text = 'Contract Demand:' ).
lr_text = lr_grid->create_text( row = 4
column = 2
text = lv_cdmd_target ).
lr_grid->add_row( ).
lr_label->set_label_for( lr_text ).

lr_label = lr_grid->create_label( row = 5


column = 1
text = 'Supplier Name:' ).
lr_text = lr_grid->create_text( row = 5
column = 2
text = gv_supply ).
lr_grid->add_row( ).
lr_label->set_label_for( lr_text ).

lr_label = lr_grid->create_label( row = 6


column = 1
text = 'Date of Commission:' ).
lr_text = lr_grid->create_text( row = 6
column = 2
text = lv_date_comm ).
lr_grid->add_row( ).
lr_label->set_label_for( lr_text ).
CONCATENATE lv_date_low lv_space INTO DATA(lv_target1) RESPECTING BLANKS.
CONCATENATE lv_space lv_date_high INTO DATA(lv_target2) RESPECTING BLANKS.
CONCATENATE lv_target1 lv_target2 INTO DATA(lv_target3) SEPARATED BY 'To'
RESPECTING BLANKS.
lr_label = lr_grid->create_label( row = 7
column = 1
text = 'Reporting Period:' ).
lr_text = lr_grid->create_text( row = 7
column = 2
text = lv_target3 ).
lr_grid->add_row( ).
lr_label->set_label_for( lr_text ).

** Move lr_grid to lr_content **


lr_content = lr_grid.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form column_prepare
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM column_prepare .

DATA: lr_column TYPE REF TO cl_salv_column.

TRY.
lr_column = gr_columns->get_column( 'CTRATIO' ).
lr_column->set_long_text( 'CT Ratio' ).
CALL METHOD lr_column->set_zero
EXPORTING
value = abap_false.
CATCH cx_salv_not_found.
ENDTRY.

TRY.
lr_column = gr_columns->get_column( 'KWHPREV' ).
lr_column->set_long_text( 'KWH Previous Reading' ).
CALL METHOD lr_column->set_zero
EXPORTING
value = abap_false.
CATCH cx_salv_not_found.
ENDTRY.

TRY.
lr_column = gr_columns->get_column( 'KWHPRES' ).
lr_column->set_long_text( 'KWH Present Reading' ).
CALL METHOD lr_column->set_zero
EXPORTING
value = abap_false.
CATCH cx_salv_not_found.
ENDTRY.

TRY.
lr_column = gr_columns->get_column( 'KWHDIFF' ).
lr_column->set_long_text( 'KWH Difference' ).
CALL METHOD lr_column->set_zero
EXPORTING
value = abap_false.
CATCH cx_salv_not_found.
ENDTRY.

TRY.
lr_column = gr_columns->get_column( 'TOTUNIT' ).
lr_column->set_long_text( 'CT Ratio*KWH Difference' ).
CALL METHOD lr_column->set_zero
EXPORTING
value = abap_false.
CATCH cx_salv_not_found.
ENDTRY.

TRY.
lr_column = gr_columns->get_column( 'KVAPREV' ).
lr_column->set_long_text( 'KVA Previous Reading' ).
CALL METHOD lr_column->set_zero
EXPORTING
value = abap_false.
CATCH cx_salv_not_found.
ENDTRY.

TRY.
lr_column = gr_columns->get_column( 'KVAPRES' ).
lr_column->set_long_text( 'KVA Present Reading' ).
CALL METHOD lr_column->set_zero
EXPORTING
value = abap_false.
CATCH cx_salv_not_found.
ENDTRY.

TRY.
lr_column = gr_columns->get_column( 'KVADIFF' ).
lr_column->set_long_text( 'KVA Difference' ).
CALL METHOD lr_column->set_zero
EXPORTING
value = abap_false.
CATCH cx_salv_not_found.
ENDTRY.

TRY.
lr_column = gr_columns->get_column( 'TOTUNIT1' ).
lr_column->set_long_text( 'CT Ratio*KVA Difference' ).
CALL METHOD lr_column->set_zero
EXPORTING
value = abap_false.
CATCH cx_salv_not_found.
ENDTRY.

TRY.
lr_column = gr_columns->get_column( 'MAXDMND' ).
lr_column->set_long_text( 'Maximum Demand' ).
CALL METHOD lr_column->set_zero
EXPORTING
value = abap_false.
CATCH cx_salv_not_found.
ENDTRY.

TRY.
lr_column = gr_columns->get_column( 'PF' ).
lr_column->set_long_text( 'Power Factor' ).
CALL METHOD lr_column->set_zero
EXPORTING
value = abap_false.
CATCH cx_salv_not_found.
ENDTRY.

TRY.
lr_column = gr_columns->get_column( 'TRIP' ).
lr_column->set_long_text( 'No of Tripings' ).
CALL METHOD lr_column->set_zero
EXPORTING
value = abap_false.
CATCH cx_salv_not_found.
ENDTRY.

TRY.
lr_column = gr_columns->get_column( 'TRIPDUR' ).
lr_column->set_long_text( 'Trip Duration(in mins)' ).
CALL METHOD lr_column->set_zero
EXPORTING
value = abap_false.
CATCH cx_salv_not_found.
ENDTRY.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form convert_no_zero
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM convert_no_zero .

DATA:
lo_salv_columns_table TYPE REF TO cl_salv_columns_table,
lt_column_ref TYPE salv_t_column_ref.

FIELD-SYMBOLS:
<column_ref> TYPE salv_s_column_ref.

lo_salv_columns_table = gr_table->get_columns( ).
lt_column_ref = lo_salv_columns_table->get( ).

LOOP AT lt_column_ref ASSIGNING <column_ref>.


* <column_ref>->SET_ZERO( ' ' ).
* <column_ref>-
ENDLOOP.

ENDFORM.

You might also like