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: 

calculating totals in alv

Former Member
0 Kudos

This is the report i have created and i want it to display the totals for fkimg and netwr(below the columns), so may you please guys help me out on this...

REPORT Z_DAILY_STOCK_NEW.

TYPE-POOLS: SLIS.

TABLES: vbrk, kna1, vbrp, vbap, vbak.

data it_fieldcat TYPE SLIS_T_FIELDCAT_ALV.

data i_repid like sy-repid.

SELECT-OPTIONS:

s_werks FOR vbrp-werks,

s_auart FOR vbak-auart.

DATA: begin of i_stocktab occurs 0,

kunag LIKE vbrk-kunag,

name1 LIKE kna1-name1,

ort01 LIKE kna1-ort01,

inco1 LIKE vbrk-inco1,

vkgrp LIKE vbrp-vkgrp,

fkimg LIKE vbrp-fkimg,

netwr LIKE vbrk-netwr,

end of i_stocktab.

SELECT vbrkkunag kna1name1 kna1ort01 vbrkinco1 vbrp~vkgrp

vbrpfkimg vbrknetwr

FROM kna1 inner join vbrk on kna1kunnr EQ vbrkkunrg

inner join vbak on kna1kunnr EQ vbakkunnr

inner join vbrp on vbrkvbeln EQ vbrpvbeln

INTO i_stocktab

WHERE vbrp~werks IN s_werks

AND vbak~auart IN s_auart.

APPEND i_stocktab.

endselect.

i_repid = sy-repid.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = i_repid

I_INTERNAL_TABNAME = 'I_STOCKTAB'

I_INCLNAME = i_repid

CHANGING

ct_fieldcat = it_fieldcat.

IF sy-subrc <> 0.

ENDIF.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = I_REPID

IT_FIELDCAT = IT_FIELDCAT[]

I_SAVE = 'X'

TABLES

t_outtab = i_stocktab

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

IF sy-subrc <> 0.

ENDIF.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

REPORT Z_DAILY_STOCK_NEW.

TYPE-POOLS: SLIS.

TABLES: vbrk, kna1, vbrp, vbap, vbak.

data it_fieldcat TYPE SLIS_T_FIELDCAT_ALV,

<b>wa_fieldcat type slis_fieldcat_alv.</b>

data i_repid like sy-repid.

SELECT-OPTIONS:

s_werks FOR vbrp-werks,

s_auart FOR vbak-auart.

DATA: begin of i_stocktab occurs 0,

kunag LIKE vbrk-kunag,

name1 LIKE kna1-name1,

ort01 LIKE kna1-ort01,

inco1 LIKE vbrk-inco1,

vkgrp LIKE vbrp-vkgrp,

fkimg LIKE vbrp-fkimg,

netwr LIKE vbrk-netwr,

end of i_stocktab.

SELECT vbrkkunag kna1name1 kna1ort01 vbrkinco1 vbrp~vkgrp

vbrpfkimg vbrknetwr

FROM kna1 inner join vbrk on kna1kunnr EQ vbrkkunrg

inner join vbak on kna1kunnr EQ vbakkunnr

inner join vbrp on vbrkvbeln EQ vbrpvbeln

INTO i_stocktab

WHERE vbrp~werks IN s_werks

AND vbak~auart IN s_auart.

APPEND i_stocktab.

endselect.

i_repid = sy-repid.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = i_repid

I_INTERNAL_TABNAME = 'I_STOCKTAB'

I_INCLNAME = i_repid

CHANGING

ct_fieldcat = it_fieldcat.

IF sy-subrc <> 0.

ENDIF.

<b>loop at it_fieldcat into wa_fieldcat where fieldname eq 'FKIMG' or

fieldname eq 'NETWR'.

wa_fieldcat-do_sum = 'X'.

wa_fieldcat-datatype = 'QUAN'.

modify it_fieldcat from wa_fieldcat.

endloop.</b>

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = I_REPID

IT_FIELDCAT = IT_FIELDCAT[]

I_SAVE = 'X'

TABLES

t_outtab = i_stocktab

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

IF sy-subrc <> 0.

ENDIF.

8 REPLIES 8

Former Member
0 Kudos

Hi Fred,

Modify the table it_fieldcat after the 'REUSE_ALV_FIELDCATALOG_MERGE'

so that the do_sum field will be X

DATA: ls_fieldcat TYPE slis_fieldcat_alv.

ls_fieldcat-do_sum = 'X'.

This needs to be done so that you will get total.

Reward points if useful.

Regards,

Atish

Former Member
0 Kudos

Hi,

CLEAR FIELDCAT_IN. 
FIELDCAT_LN-FIELDNAME     = 'FIELD3'. 
FIELDCAT_LN-TABNAME       = 'ITAB1'. 
FIELDCAT_LN-REF_FIELDNAME = 'MENGE'. "<- REF FIELD IN THE DICTIONNARY 
FIELDCAT_LN-REF_TABNAME   = 'MSEG'.  "<- REF TABLE IN THE DICTIONNARY 
FIELDCAT_LN-NO_OUT        = ' '. 
FIELDCAT_LN-DO_SUM        = 'X'.   " Totals  
APPEND FIELDCAT_LN TO GT_FIELDCAT. 

* DATA SORTING AND SUBTOTAL 
DATA: GS_SORT TYPE SLIS_SORTINFO_ALV. 

CLEAR GS_SORT. 
GS_SORT-FIELDNAME = 'FIELD1'. 
GS_SORT-SPOS      = 1. 
GS_SORT-UP        = 'X'. 
GS_SORT-SUBTOT    = 'X'. 
APPEND GS_SORT TO GT_SORT. 

CLEAR GS_SORT. 
GS_SORT-FIELDNAME = 'FIELD2'. 
GS_SORT-SPOS      = 2. 
GS_SORT-UP        = 'X'. 
*GS_SORT-SUBTOT    = 'X'.   " Sub total
APPEND GS_SORT TO GT_SORT. 

ENDFORM. 

FORM CALL_ALV. 
* ABAP List Viewer 
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' 
EXPORTING 
* I_INTERFACE_CHECK = ' ' 
* I_BYPASSING_BUFFER = 
* I_BUFFER_ACTIVE = ' ' 
I_CALLBACK_PROGRAM = G_REPID 
* I_CALLBACK_PF_STATUS_SET = ' ' 
* I_CALLBACK_USER_COMMAND = ' ' 
I_STRUCTURE_NAME = 'ITAB1' 
IS_LAYOUT =  GS_LAYOUT 
IT_FIELDCAT = GT_FIELDCAT[] 
* IT_EXCLUDING = 
* IT_SPECIAL_GROUPS = 
  IT_SORT = GT_SORT[] 
* IT_FILTER = 
* IS_SEL_HIDE = 
* I_DEFAULT = 'X' 
* I_SAVE = ' ' 
* IS_VARIANT = 
  IT_EVENTS = GT_EVENTS[] 
* IT_EVENT_EXIT = 
  IS_PRINT = GS_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 = ITAB1 
EXCEPTIONS 
PROGRAM_ERROR = 1 
OTHERS = 2. 
ENDFORM.

Regards

Sudheer

Former Member
0 Kudos

Hi,

You need to pass SUM = 'X' in the fieldcatalog against that field.

eg.

*=======================

  • Quantity

*=======================

CLEAR wa_fieldcatalog.

wa_fieldcatalog-fieldname = 'MENGE'.

wa_fieldcatalog-tabname = 'I_OUTPUT'.

wa_fieldcatalog-no_out = ' '.

wa_fieldcatalog-sum = 'X'.

wa_fieldcatalog-seltext_l = text-011.

APPEND wa_fieldcatalog TO i_fieldcatalog.

<b>Reward points</b>

Regards

Former Member
0 Kudos

Hi fred,

v can calculate the sum while building a field catalogue itself.

For that u have to use <b>do_sum</b>.

Otherwise check with the type-pool: slis.

Regards...

Arun.

Reward points if useful.

Former Member
0 Kudos

REPORT Z_DAILY_STOCK_NEW.

TYPE-POOLS: SLIS.

TABLES: vbrk, kna1, vbrp, vbap, vbak.

data it_fieldcat TYPE SLIS_T_FIELDCAT_ALV,

<b>wa_fieldcat type slis_fieldcat_alv.</b>

data i_repid like sy-repid.

SELECT-OPTIONS:

s_werks FOR vbrp-werks,

s_auart FOR vbak-auart.

DATA: begin of i_stocktab occurs 0,

kunag LIKE vbrk-kunag,

name1 LIKE kna1-name1,

ort01 LIKE kna1-ort01,

inco1 LIKE vbrk-inco1,

vkgrp LIKE vbrp-vkgrp,

fkimg LIKE vbrp-fkimg,

netwr LIKE vbrk-netwr,

end of i_stocktab.

SELECT vbrkkunag kna1name1 kna1ort01 vbrkinco1 vbrp~vkgrp

vbrpfkimg vbrknetwr

FROM kna1 inner join vbrk on kna1kunnr EQ vbrkkunrg

inner join vbak on kna1kunnr EQ vbakkunnr

inner join vbrp on vbrkvbeln EQ vbrpvbeln

INTO i_stocktab

WHERE vbrp~werks IN s_werks

AND vbak~auart IN s_auart.

APPEND i_stocktab.

endselect.

i_repid = sy-repid.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

I_PROGRAM_NAME = i_repid

I_INTERNAL_TABNAME = 'I_STOCKTAB'

I_INCLNAME = i_repid

CHANGING

ct_fieldcat = it_fieldcat.

IF sy-subrc <> 0.

ENDIF.

<b>loop at it_fieldcat into wa_fieldcat where fieldname eq 'FKIMG' or

fieldname eq 'NETWR'.

wa_fieldcat-do_sum = 'X'.

wa_fieldcat-datatype = 'QUAN'.

modify it_fieldcat from wa_fieldcat.

endloop.</b>

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = I_REPID

IT_FIELDCAT = IT_FIELDCAT[]

I_SAVE = 'X'

TABLES

t_outtab = i_stocktab

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

IF sy-subrc <> 0.

ENDIF.

0 Kudos

Yes, my question is answered and i'm not sure will you please elaborate the solution yo have sent me.....Thank you for being so helpful!

0 Kudos

hi Fred,

Just the fieldcatalog is modified for those fields,

wa_fieldcat-do_sum = 'X'. " this is the property to get the sum of a field

Former Member
0 Kudos

Hi Fred

For getting the total and subtotal, field shuld be a non characteric field.

so first check that.

You have to build the Internal Table I_SORT with the field positions and pass it to function module of output for Totals and sub totals apart from wriritng

it_fieldcat-do_sum = 'X'

see the sample code.

TYPES :
  BEGIN OF ty_vbak,
    vkorg TYPE vbak-vkorg,             " Sales organization
    kunnr TYPE vbak-kunnr,             " Sold-to party
    vbeln TYPE vbak-vbeln,             " Sales document
    netwr TYPE vbak-netwr,             " Net Value of the Sales Order
    waerk TYPE vbak-waerk,             " Document currency
  END OF ty_vbak.

DATA:
  vbak    TYPE vbak,
  gt_vbak TYPE TABLE OF ty_vbak.

SELECT-OPTIONS :
  s_vkorg FOR vbak-vkorg,              " Sales organization
  s_kunnr FOR vbak-kunnr,              " Sold-to party
  s_vbeln FOR vbak-vbeln.              " Sales document

SELECTION-SCREEN :
  SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max.
PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.
SELECTION-SCREEN END OF LINE.

*---------------------------------------------------------------------*
INITIALIZATION.

  v_1 = 'Maximum of records to read'.

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

  PERFORM f_read_data.

  PERFORM f_display_data.

*---------------------------------------------------------------------*
*      Form  f_read_data
*---------------------------------------------------------------------*
FORM f_read_data.

  SELECT vkorg kunnr vbeln netwr waerk
      UP TO p_max ROWS
    INTO TABLE gt_vbak
    FROM vbak
   WHERE kunnr IN s_kunnr
     AND vbeln IN s_vbeln
     AND vkorg IN s_vkorg.

ENDFORM.                               " F_READ_DATA
*---------------------------------------------------------------------*
*      Form  f_display_data
*---------------------------------------------------------------------*
FORM f_display_data.

  TYPE-POOLS: slis.                    " ALV Global types

  DEFINE m_fieldcat.
    add 1 to ls_fieldcat-col_pos.
    ls_fieldcat-fieldname   = &1.
    ls_fieldcat-ref_tabname = 'VBAK'.
    ls_fieldcat-do_sum      = &2.
    ls_fieldcat-cfieldname  = &3.
    append ls_fieldcat to lt_fieldcat.
  END-OF-DEFINITION.

  DEFINE m_sort.
    add 1 to ls_sort-spos.
    ls_sort-fieldname = &1.
    ls_sort-up        = 'X'.
    ls_sort-subtot    = &2.
    append ls_sort to lt_sort.
  END-OF-DEFINITION.

  DATA:
    ls_fieldcat TYPE slis_fieldcat_alv,
    lt_fieldcat TYPE slis_t_fieldcat_alv,
    lt_sort     TYPE slis_t_sortinfo_alv,
    ls_sort     TYPE slis_sortinfo_alv,
    ls_layout   TYPE slis_layout_alv.

  m_fieldcat 'VKORG' ''  ''.
  m_fieldcat 'KUNNR' ''  ''.
  m_fieldcat 'VBELN' ''  ''.
  m_fieldcat 'NETWR' 'X' 'WAERK'.
  m_fieldcat 'WAERK' ''  ''.

  m_sort 'VKORG' 'X'.                  " Sort by vkorg and subtotal
  m_sort 'KUNNR' 'X'.                  " Sort by kunnr and subtotal
  m_sort 'VBELN' ''.                   " Sort by vbeln

  ls_layout-cell_merge = 'X'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            is_layout   = ls_layout
            it_fieldcat = lt_fieldcat
            it_sort     = lt_sort
       TABLES
            t_outtab    = gt_vbak.

ENDFORM.                               " F_DISPLAY_DATA

Reward all helpfull answers

Regards

Pavan