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: 

Summing option in ALV Grid.

Former Member
0 Kudos

Hi friends,

I need to make an integer field as summable on the ALV grid output. I am taking that field as an integer and while designing the field catalog i am assigning do_sum = 'X'. But i am getting dump.

Can we only sum quantity and currency fields ? or we can even sum integer also ? Plz let me know am i doing any mistake or suggest me some solution. if any one have some example code that would help me.

quick response is appreciative.

regards

rahav

9 REPLIES 9

Former Member
0 Kudos

HI

GOOD

AS PER YOUR QUERY I THINK YOU CANT ASSIGNED A VALUE IN FIELDS CATALOGUE AS YOU HAVE ASSIGNED "DO_SUM = 'X'" .READ TEH DUMP CAREFULLY AND I HOPE THERE WOULD BE SOME ASSIGNING PROBLEM.

IF YOU CAN GIVE SOME MORE DETAILS LIKE THE CODE OF FIELD CATALOGUE , I HOPE I CAN HELP YOU MORE.

THANKS

MRUTYUN

0 Kudos

Hi Mrutyun,

thanx for your response . following is my code of field catalogue :

t_fieldcat_hdr-fieldname = Integer Field name in itab

t_fieldcat_hdr-reptext_ddic =Field lable

t_fieldcat_hdr-col_pos = Column position

t_fieldcat_hdr-outputlen = Column width

t_fieldcat_hdr-key = Key Field? (X or SPACE)

t_fieldcat_hdr-do_sum = 'X'. "for summing

do i need to take any more properties for this or how you want me to handle this plz let me know ? hope you have understood my problem. if you still need more details let me know i can give you.

regards

raghav

0 Kudos

Hi Raghav,

It will require the internal table name as well. I think the name of the field in the catalog is TABNAME, specify the internal table name and make sure you are passing all the data in upper case.

Regards,

Ravi

Note : Please mark the helpful answers

0 Kudos

Hi Raghav,

can you show the exact code, not integer field, what is that field. and what error you are getting.

Regards

vijay

Former Member
0 Kudos

Hi Raghav,

Try filling these fields in Fieldcatalog .

wa_fcat-datatype = 'INT'.

wa_fcat-inttype = 'I'.

wa_fcat-do_sum = 'X'.

Regards,

Imman

0 Kudos

Hi,

i am taking one field some x type i in internal table.

according to functionality i am assigning values to that. it actually takes '1' or '0'.

and building the fieldcatalog.

t_fieldcat_hdr-tabname = 'IT_OUTPUT'.

t_fieldcat_hdr-fieldname = 'ACCOUNT_ACT'.

t_fieldcat_hdr-reptext_ddic = 'ACTIVE FLAG'.

t_fieldcat_hdr-col_pos = 6.

t_fieldcat_hdr-outputlen = 10.

t_fieldcat_hdr-do_sum = 'X'. "for summing

t_fieldcat_hdr-datatype = 'INT1'.

t_fieldcat_hdr-inttype = 'I'.

APPEND t_fieldcat_hdr TO t_fieldcat.

this is what i am doing . and as i told you i am getting dump before displaying itself. if i take that variable as character then i am able to display output. but i am not getting sum option.

i am getting following error in the dump :

assign component

<ls_fieldcat>-fieldname of structure rt_data to <g_field>.

if sy-subrc ne 0.

message x000(0k).

endif.

regards

rao

0 Kudos

Hi Raghav,

give <b>type N</b> instead of <b>type i</b>. then it will work.

Regards

vijay

0 Kudos

Hi Raghav,

i don't why it is not working for you, for me it is working fine.

check the sample code...

REPORT  ZTEST_ALV_SUM                         .

TYPE-POOLS: SLIS.


DATA: X_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
      IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
      layout  type SLIS_LAYOUT_ALV.
DATA: BEGIN OF ITAB OCCURS 0,
        VBELN LIKE VBAK-VBELN,
        POSNR LIKE VBAP-POSNR,
        num type i,
      END OF ITAB.

SELECT VBELN
       POSNR
       FROM VBAP
       UP TO 20 ROWS
       INTO TABLE ITAB.

x_fieldcat-fieldname = 'VBELN'.
x_fieldcat-seltext_l = 'Sales Order'.
X_FIELDCAT-OUTPUTLEN = 10.
x_fieldcat-col_pos = 1.
append x_fieldcat to it_fieldcat.
clear X_fieldcat.

x_fieldcat-fieldname = 'POSNR'.
x_fieldcat-seltext_l = 'ITEM'.
X_FIELDCAT-OUTPUTLEN = 6.
x_fieldcat-col_pos = 2.
append x_fieldcat to it_fieldcat.
clear X_fieldcat.

x_fieldcat-fieldname = 'NUM'.
x_fieldcat-seltext_l = 'NUMBER'.
X_FIELDCAT-OUTPUTLEN = 10.
x_fieldcat-col_pos = 3.
x_fieldcat-do_sum = 'X'.
append x_fieldcat to it_fieldcat.
clear X_fieldcat.

loop at itab.

itab-num = sy-tabix.
modify itab.
ENDLOOP.

layout-zebra = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    I_CALLBACK_PROGRAM = SY-REPID
    IT_FIELDCAT        = IT_FIELDCAT
    IS_LAYOUT          = layout
  TABLES
    T_OUTTAB           = ITAB
  EXCEPTIONS
    PROGRAM_ERROR      = 1
    OTHERS             = 2.
IF SY-SUBRC <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

Regards

vijay

Former Member
0 Kudos

hi,

here is a sample code.

TABLES: VBAK.

TYPE-POOLS : SLIS.

DATA: BEGIN OF IT_VBAK OCCURS 0,

ICON TYPE ICON-ID,

VBELN LIKE VBAK-VBELN,

AUDAT LIKE VBAK-AUDAT,

VBTYP LIKE VBAK-VBTYP,

AUART LIKE VBAK-AUART,

AUGRU LIKE VBAK-AUGRU,

NETWR LIKE VBAK-NETWR,

WAERK LIKE VBAK-WAERK,

END OF IT_VBAK.

DATA: G_REPID LIKE SY-REPID,

WA_SORT TYPE SLIS_SORTINFO_ALV,

IT_SORT TYPE SLIS_T_SORTINFO_ALV,

WA_LAYOUT TYPE SLIS_LAYOUT_ALV,

IT_FIELDTAB TYPE SLIS_T_FIELDCAT_ALV,

WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.

SELECT-OPTIONS:S_VBELN FOR VBAK-VBELN,

S_VBTYP FOR VBAK-VBTYP DEFAULT 'C'.

SELECTION-SCREEN END OF BLOCK B1 .

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME.

PARAMETERS: LIST RADIOBUTTON GROUP RAD1,

GRID RADIOBUTTON GROUP RAD1.

SELECTION-SCREEN END OF BLOCK B2.

INITIALIZATION.

G_REPID = SY-REPID.

START-OF-SELECTION.

SELECT VBELN

AUDAT

VBTYP

AUART

AUGRU

NETWR

WAERK INTO CORRESPONDING FIELDS OF TABLE IT_VBAK

FROM VBAK WHERE AUDAT > '01/01/2004' AND

NETWR > 0 AND

VBELN IN S_VBELN AND

VBTYP IN S_VBTYP.

LOOP AT IT_VBAK.

IF IT_VBAK-NETWR < 10000.

IT_VBAK-ICON = '@08@'.

ELSEIF IT_VBAK-NETWR > 10000 AND IT_VBAK-NETWR < 100000.

IT_VBAK-ICON = '@09@'.

ELSEIF IT_VBAK-NETWR > 100000.

IT_VBAK-ICON = '@0A@'.

ENDIF.

MODIFY IT_VBAK INDEX SY-TABIX.

ENDLOOP.

END-OF-SELECTION.

PERFORM SORT_LIST.

PERFORM MODIFY_FIELDCAT.

PERFORM LAYOUT_LIST.

&----


*& Form sort_list

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM SORT_LIST .

CLEAR WA_SORT.

WA_SORT-FIELDNAME = 'AUART'.

WA_SORT-SPOS = '1'.

WA_SORT-UP = 'X'.

APPEND WA_SORT TO IT_SORT.

CLEAR WA_SORT.

WA_SORT-FIELDNAME = 'VBTYP'.

WA_SORT-SPOS = '2'.

WA_SORT-UP = 'X'.

APPEND WA_SORT TO IT_SORT.

CLEAR WA_SORT.

WA_SORT-FIELDNAME = 'WAERK'.

WA_SORT-SPOS = '3'.

WA_SORT-UP = 'X'.

WA_SORT-SUBTOT = 'X'.

APPEND WA_SORT TO IT_SORT.

ENDFORM. " sort_list

&----


*& Form layout_list

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM LAYOUT_LIST .

CLEAR WA_LAYOUT.

IF LIST = 'X'.

WA_LAYOUT-ZEBRA = 'X'.

WA_LAYOUT-WINDOW_TITLEBAR = 'LIST DISPLAY'.

WA_LAYOUT-SUBTOTALS_TEXT = 'SUBTOTAL'.

WA_LAYOUT-TOTALS_TEXT = 'TOTAL'.

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 =

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDTAB[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

IT_SORT = IT_SORT[]

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_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 = IT_VBAK

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • OTHERS = 2

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ELSEIF GRID = 'X'.

WA_LAYOUT-ZEBRA = 'X'.

WA_LAYOUT-WINDOW_TITLEBAR = 'GRID DISPLAY'.

WA_LAYOUT-SUBTOTALS_TEXT = 'SUBTOTAL'.

WA_LAYOUT-TOTALS_TEXT = 'TOTAL'.

CALL FUNCTION 'REUSE_ALV_GRID_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_CALLBACK_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE =

  • I_GRID_SETTINGS =

IS_LAYOUT = WA_LAYOUT

IT_FIELDCAT = IT_FIELDTAB

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

IT_SORT = IT_SORT

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • I_HTML_HEIGHT_TOP =

  • I_HTML_HEIGHT_END =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = IT_VBAK

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • OTHERS = 2

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDIF.

ENDFORM. " layout_list

&----


*& Form modify_fieldcat

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM MODIFY_FIELDCAT .

CLEAR WA_FIELDCAT.

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

WA_FIELDCAT-FIELDNAME = 'ICON'.

WA_FIELDCAT-SELTEXT_L = 'LIGHTS'.

WA_FIELDCAT-ICON = 'X'.

  • WA_FIELDCAT-ddictxt = 'l'.

WA_FIELDCAT-COL_POS = 1.

WA_FIELDCAT-OUTPUTLEN = 10.

APPEND WA_FIELDCAT TO IT_FIELDTAB.

CLEAR WA_FIELDCAT .

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

WA_FIELDCAT-FIELDNAME = 'VBELN'.

WA_FIELDCAT-SELTEXT_L = 'SALES DOCUMENT'.

  • WA_FIELDCAT-ddictxt = 'l'.

WA_FIELDCAT-COL_POS = 2.

WA_FIELDCAT-OUTPUTLEN = 10.

APPEND WA_FIELDCAT TO IT_FIELDTAB.

CLEAR WA_FIELDCAT .

  • when 'maktx'.

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

WA_FIELDCAT-FIELDNAME = 'AUDAT'.

WA_FIELDCAT-SELTEXT_L = 'DATE'.

  • WA_FIELDCAT-ddictxt = 'l'.

WA_FIELDCAT-COL_POS = 3.

WA_FIELDCAT-OUTPUTLEN = 15.

APPEND WA_FIELDCAT TO IT_FIELDTAB.

CLEAR WA_FIELDCAT .

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

WA_FIELDCAT-FIELDNAME = 'VBTYP'.

WA_FIELDCAT-SELTEXT_L = 'SALES CATEGORY'.

WA_FIELDCAT-COL_POS = 4.

WA_FIELDCAT-OUTPUTLEN = 10.

APPEND WA_FIELDCAT TO IT_FIELDTAB.

CLEAR WA_FIELDCAT .

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

WA_FIELDCAT-FIELDNAME = 'AUART'.

WA_FIELDCAT-SELTEXT_L = 'SALES DOCUMENT TYPE'.

WA_FIELDCAT-COL_POS = 5.

WA_FIELDCAT-OUTPUTLEN = 10.

APPEND WA_FIELDCAT TO IT_FIELDTAB.

CLEAR WA_FIELDCAT .

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

WA_FIELDCAT-FIELDNAME = 'AUGRU'.

WA_FIELDCAT-SELTEXT_L = 'ORDER REASON'.

  • WA_FIELDCAT-ddictxt = 'l'.

WA_FIELDCAT-COL_POS = 6.

WA_FIELDCAT-OUTPUTLEN = 10.

APPEND WA_FIELDCAT TO IT_FIELDTAB.

CLEAR WA_FIELDCAT .

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

WA_FIELDCAT-FIELDNAME = 'NETWR'.

WA_FIELDCAT-SELTEXT_L = 'QUANTITY'.

WA_FIELDCAT-DO_SUM = 'X'.

  • WA_FIELDCAT-ddictxt = 'l'.

WA_FIELDCAT-COL_POS = 7.

WA_FIELDCAT-OUTPUTLEN = 25.

APPEND WA_FIELDCAT TO IT_FIELDTAB.

CLEAR WA_FIELDCAT .

WA_FIELDCAT-TABNAME = 'IT_VBAK'.

WA_FIELDCAT-FIELDNAME = 'WAERK'.

WA_FIELDCAT-SELTEXT_L = 'CURRENCY'.

  • WA_FIELDCAT-ddictxt = 'l'.

WA_FIELDCAT-COL_POS = 8.

WA_FIELDCAT-OUTPUTLEN = 10.

APPEND WA_FIELDCAT TO IT_FIELDTAB.

CLEAR WA_FIELDCAT .

ENDFORM. " modify_fieldcat

pls award points if helpful.

thanks,

keerthi.