REUSE_ALV_LIST_DISPLAY- 17

light11Use of ALV Field Catalog to calculate TOTAL of a particular field and setting the the total text by the layout property

 

 

The previous post REUSE_ALV_LIST_DISPLAY- 16 shows how to make use of field catalog to hide fields on list alv and also creating check box by layout property set. This post shows how to calculate the total of a field by using the field catalog property and setting the total text by the layout property.


Code Snippet:


———-data declarations——–
TYPE-POOLS: slis.
TYPES: BEGIN OF ty_flight,
box.
INCLUDE STRUCTURE spfli.
TYPES: END OF ty_flight.
DATA: lt_spfli TYPE TABLE OF ty_flight.
DATA: ls_spfli TYPE ty_flight.
DATA: ls_layout TYPE slis_layout_alv.
DATA: lt_fieldcat TYPE slis_t_fieldcat_alv.
———————————–

START-OF-SELECTION.
PERFORM build_data.
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM display_list_alv.

&————————————————-
& Form BUILD_DATA
&————————————————-*
FORM build_data.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE lt_spfli.
ENDFORM. ” BUILD_DATA

&———————————————————————
& Form BUILD_FIELDCATALOG
&———————————————————————
FORM build_fieldcatalog.
DATA: ls_fieldcat TYPE LINE OF slis_t_fieldcat_alv.
CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE’
EXPORTING
i_program_name = sy-cprog
I_INTERNAL_TABNAME =
i_structure_name = ‘SPFLI’
* I_CLIENT_NEVER_DISPLAY = ‘X’
* I_INCLNAME =
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = lt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.

LOOP AT lt_fieldcat INTO ls_fieldcat.
IF ls_fieldcat-fieldname = ‘FLTYPE’ OR ls_fieldcat-fieldname = ‘PERIOD’ .
ls_fieldcat-no_out = ‘X’.
MODIFY lt_fieldcat FROM ls_fieldcat TRANSPORTING no_out.
ENDIF.
IF ls_fieldcat-fieldname = ‘DISTANCE’.
ls_fieldcat-do_sum = ‘X’.     ” set the flag for which field want to calculate the sum
MODIFY lt_fieldcat FROM ls_fieldcat TRANSPORTING do_sum.
ENDIF.
ENDLOOP.

ENDFORM. ” BUILD_FIELDCATALOG

&————————————————–
& Form BUILD_LAYOUT
&————————————————–
FORM build_layout.
ls_layout-zebra = ‘X’.
ls_layout-box_fieldname = ‘BOX’.
ls_layout-detail_popup = ‘X’.
ls_layout-detail_titlebar = ‘Detailed Flight Info’.
ls_layout-f2code = ‘&ETA’.
ls_layout-window_titlebar = ‘Flight Info’.
ls_layout-totals_text = ‘Total’.   ” set the text for the sum calculation
ENDFORM. ” BUILD_LAYOUT
&—————————————————
& Form DISPLAY_LIST_ALV
&—————————————————-
FORM display_list_alv.
CALL FUNCTION ‘REUSE_ALV_LIST_DISPLAY’
EXPORTING
i_callback_program = sy-cprog
” i_structure_name = ‘SPFLI’
is_layout = ls_layout
it_fieldcat = lt_fieldcat
TABLES
t_outtab = lt_spfli
EXCEPTIONS
program_error = 1
OTHERS = 2.
CASE sy-subrc.
WHEN 1.
MESSAGE ‘Program Error’ TYPE ‘I’.
WHEN OTHERS.
ENDCASE.
ENDFORM. ” DISPLAY_LIST_ALV


Program Output:

4.jpg


In above we set the total text as ‘Total’  in the layout but in the output we find that the total text appears as  ‘Tot’ . The total text appears under the first column ‘CARRID’. So we have to increase the display length of CARRID filed by using the field catalog property.


Code Snippet:


———-data declarations——–
TYPE-POOLS: slis.
TYPES: BEGIN OF ty_flight,
box.
INCLUDE STRUCTURE spfli.
TYPES: END OF ty_flight.
DATA: lt_spfli TYPE TABLE OF ty_flight.
DATA: ls_spfli TYPE ty_flight.
DATA: ls_layout TYPE slis_layout_alv.
DATA: lt_fieldcat TYPE slis_t_fieldcat_alv.
———————————–

START-OF-SELECTION.
PERFORM build_data.
PERFORM build_fieldcatalog.
PERFORM build_layout.
PERFORM display_list_alv.

&————————————————-
& Form BUILD_DATA
&————————————————-*
FORM build_data.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE lt_spfli.
ENDFORM. ” BUILD_DATA

&———————————————————————
& Form BUILD_FIELDCATALOG
&———————————————————————
FORM build_fieldcatalog.
DATA: ls_fieldcat TYPE LINE OF slis_t_fieldcat_alv.
CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE’
EXPORTING
i_program_name = sy-cprog
I_INTERNAL_TABNAME =
i_structure_name = ‘SPFLI’
* I_CLIENT_NEVER_DISPLAY = ‘X’
* I_INCLNAME =
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = lt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.

LOOP AT lt_fieldcat INTO ls_fieldcat.
IF ls_fieldcat-fieldname = ‘FLTYPE’ OR ls_fieldcat-fieldname = ‘PERIOD’ .
ls_fieldcat-no_out = ‘X’.
MODIFY lt_fieldcat FROM ls_fieldcat TRANSPORTING no_out.
ENDIF.
IF ls_fieldcat-fieldname = ‘DISTANCE’.
ls_fieldcat-do_sum = ‘X’.
MODIFY lt_fieldcat FROM ls_fieldcat TRANSPORTING do_sum.
ENDIF.
IF ls_fieldcat-fieldname = ‘CARRID’.
ls_fieldcat-outputlen = ‘7’.
MODIFY lt_fieldcat FROM ls_fieldcat TRANSPORTING outputlen.
ENDIF.
ENDLOOP.

ENDFORM. ” BUILD_FIELDCATALOG

&————————————————–
& Form BUILD_LAYOUT
&————————————————–
FORM build_layout.
ls_layout-zebra = ‘X’.
ls_layout-box_fieldname = ‘BOX’.
ls_layout-detail_popup = ‘X’.
ls_layout-detail_titlebar = ‘Detailed Flight Info’.
ls_layout-f2code = ‘&ETA’.
ls_layout-window_titlebar = ‘Flight Info’.
ls_layout-totals_text = ‘Total’.
ENDFORM. ” BUILD_LAYOUT
&—————————————————
& Form DISPLAY_LIST_ALV
&—————————————————-
FORM display_list_alv.
CALL FUNCTION ‘REUSE_ALV_LIST_DISPLAY’
EXPORTING
i_callback_program = sy-cprog
” i_structure_name = ‘SPFLI’
is_layout = ls_layout
it_fieldcat = lt_fieldcat
TABLES
t_outtab = lt_spfli
EXCEPTIONS
program_error = 1
OTHERS = 2.
CASE sy-subrc.
WHEN 1.
MESSAGE ‘Program Error’ TYPE ‘I’.
WHEN OTHERS.
ENDCASE.
ENDFORM. ” DISPLAY_LIST_ALV


Program Output:

5.jpg


 

One comment

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s