05-02-2006 2:19 AM
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
05-02-2006 4:45 AM
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
05-02-2006 5:24 AM
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
05-02-2006 5:30 AM
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
05-02-2006 7:53 AM
Hi Raghav,
can you show the exact code, not integer field, what is that field. and what error you are getting.
Regards
vijay
05-02-2006 7:35 AM
Hi Raghav,
Try filling these fields in Fieldcatalog .
wa_fcat-datatype = 'INT'.
wa_fcat-inttype = 'I'.
wa_fcat-do_sum = 'X'.
Regards,
Imman
05-02-2006 3:04 PM
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
05-02-2006 3:11 PM
Hi Raghav,
give <b>type N</b> instead of <b>type i</b>. then it will work.
Regards
vijay
05-02-2006 3:18 PM
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
05-02-2006 11:02 AM
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.