04-21-2008 9:02 AM
Hi gurus,
I'm using the reuse_alv_hierseq_list_display fm in my program and I need to display the subtotal per purchase document.
I had already added codes:
data: gt_sort type slis_t_sortinfo_alv,
gs_sort like line of gt_sort.
gs_sort-spos = 1.
gs_sort-fieldname = 'LIFNR'.
gs_sort-tabname = 'IT_HEADER'.
gs_sort-up = 'X'.
gs_sort-subtot = 'X'.
append gs_sort to gt_sort.
clear gs_sort.
gs_sort-fieldname = 'EBELN'.
gs_sort-tabname = 'IT_DETAIL'.
gs_sort-up = 'X'.
gs_sort-subtot = 'X'.
append gs_sort to gt_sort.
clear gs_sort.
However, this does not work. Is there any other way to force a subtotal?
Kindly advise.
Points will be rewarded.
Thanks!
04-21-2008 9:11 AM
Hi amythiel,
I believe EBELN is there in the heade table as well.
just change ur code like below
Check the sample program to get subtotal in Hierarchical ALV .
gs_sort-fieldname = 'EBELN'.
gs_sort-tabname = 'IT_HEADER'.
gs_sort-up = 'X'.
gs_sort-subtot = 'X'.
append gs_sort to gt_sort.
clear gs_sort.
I hope that it solves ur problem.
Regards,
Venkat.O
REPORT zvenkat_alv_4_hierarchi_subtot.
"Types
TYPES:
BEGIN OF t_pa0001, "Header table type
pernr TYPE pa0001-pernr,
bukrs TYPE pa0001-bukrs,
werks TYPE pa0001-werks,
persg TYPE pa0001-persg,
persk TYPE pa0001-persk,
abkrs TYPE pa0001-abkrs,
expand TYPE c,
END OF t_pa0001,
BEGIN OF t_pa0008, "Item table
pernr TYPE pa0008-pernr,
lga01 TYPE pa0008-lga01,
bet01 TYPE pa0008-bet01,
END OF t_pa0008.
"Work areas
DATA:
w_pa0008 TYPE t_pa0008,
w_pa0001 TYPE t_pa0001.
"Internal tables
DATA:
i_pa0008 TYPE STANDARD TABLE OF t_pa0008,
i_pa0001 TYPE STANDARD TABLE OF t_pa0001.
*&---------------------------------------------------------------------*
" ALV Declarations
*----------------------------------------------------------------------*
" Types Pools
TYPE-POOLS:
slis.
" Types
TYPES:
t_fieldcat TYPE slis_fieldcat_alv,
t_events TYPE slis_alv_event,
t_layout TYPE slis_layout_alv,
t_sort TYPE slis_sortinfo_alv,
t_keyinfo TYPE slis_keyinfo_alv.
" Workareas
DATA:
w_fieldcat TYPE t_fieldcat,
w_events TYPE t_events,
w_sort TYPE t_sort,
w_layout TYPE t_layout,
w_keyinfo TYPE t_keyinfo.
" Internal Tables
DATA:
i_fieldcat TYPE STANDARD TABLE OF t_fieldcat,
i_events TYPE STANDARD TABLE OF t_events,
i_sort TYPE STANDARD TABLE OF t_sort.
START-OF-SELECTION.
PERFORM get_data.
END-OF-SELECTION.
PERFORM build_fieldcatalog. "Fieldcatalog
PERFORM build_events. "Events table
PERFORM build_sort_tab. "To sort table and get subtotal
PERFORM build_relation_structure. "Making relationship between header and Item table
PERFORM display_data.
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
FORM get_data.
DATA:l_0008 TYPE pa0008 OCCURS 0 WITH HEADER LINE.
SELECT *
FROM pa0001
INTO CORRESPONDING FIELDS OF TABLE i_pa0001
UP TO 50 ROWS
WHERE begda LE sy-datum
AND endda GE sy-datum.
IF i_pa0001[] IS NOT INITIAL.
SELECT pernr lga01 bet01
FROM pa0008
INTO CORRESPONDING FIELDS OF l_0008
FOR ALL ENTRIES IN i_pa0001
WHERE pernr = i_pa0001-pernr
AND begda LE sy-datum
AND endda GE sy-datum.
w_pa0008-pernr = l_0008-pernr.
w_pa0008-lga01 = l_0008-lga01.
w_pa0008-bet01 = l_0008-bet01.
APPEND w_pa0008 TO i_pa0008.
CLEAR w_pa0008.
w_pa0008-pernr = l_0008-pernr.
w_pa0008-lga01 = l_0008-lga02.
w_pa0008-bet01 = l_0008-bet02.
APPEND w_pa0008 TO i_pa0008.
CLEAR w_pa0008.
w_pa0008-pernr = l_0008-pernr.
w_pa0008-lga01 = l_0008-lga03.
w_pa0008-bet01 = l_0008-bet03.
APPEND w_pa0008 TO i_pa0008.
CLEAR w_pa0008.
w_pa0008-pernr = l_0008-pernr.
w_pa0008-lga01 = l_0008-lga04.
w_pa0008-bet01 = l_0008-bet04.
APPEND w_pa0008 TO i_pa0008.
CLEAR w_pa0008.
ENDSELECT.
ENDIF.
ENDFORM. "get_data
*&---------------------------------------------------------------------*
*& Form build_fieldcatalog
*&---------------------------------------------------------------------*
FORM build_fieldcatalog.
PERFORM build_fcat USING:
"Field Int.Table Text
'PERNR' 'I_PA0001' 'PERNR',
'BUKRS' 'I_PA0001' 'BUKRS',
'WERKS' 'I_PA0001' 'WERKS',
'PERSG' 'I_PA0001' 'PERSG',
'PERSK' 'I_PA0001' 'PERSK',
'ABKRS' 'I_PA0001' 'ABKRS',
'PERNR' 'I_PA0008' 'PERNR', "Remove this if u dont want in the item table as well as it is there in the header table
'LGA01' 'I_PA0008' 'LGA01',
'BET01' 'I_PA0008' 'BET01'.
ENDFORM. "build_fieldcatalog
*&---------------------------------------------------------------------*
*& Form build_events
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM build_events.
CLEAR:
w_events, i_events[].
w_events-name = 'TOP_OF_PAGE'.
w_events-form = 'TOP_OF_PAGE'.
APPEND w_events TO i_events.
CLEAR w_events.
ENDFORM. "build_events
*&---------------------------------------------------------------------*
*& Form build_relation_structure
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM build_relation_structure.
w_keyinfo-header01 = 'PERNR'.
w_keyinfo-item01 = 'PERNR'.
ENDFORM. "build_relation_structure
*&---------------------------------------------------------------------*
*& Form display_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM display_data.
DATA:
l_program TYPE sy-repid VALUE sy-repid.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = l_program
it_fieldcat = i_fieldcat
it_events = i_events
it_sort = i_sort
i_tabname_header = 'I_PA0001'
i_tabname_item = 'I_PA0008'
is_keyinfo = w_keyinfo
TABLES
t_outtab_header = i_pa0001
t_outtab_item = i_pa0008.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. "display_data
*&---------------------------------------------------------------------*
*& Form build_fcat
*&---------------------------------------------------------------------*
FORM build_fcat USING l_field l_tab l_text.
w_fieldcat-fieldname = l_field.
w_fieldcat-tabname = l_tab.
w_fieldcat-seltext_m = l_text.
IF l_field = 'BET01'.
w_fieldcat-do_sum = 'X'.
ENDIF.
APPEND w_fieldcat TO i_fieldcat.
CLEAR w_fieldcat.
ENDFORM. " build_fcat
*&---------------------------------------------------------------------*
*& Form top_of_page
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM top_of_page.
DATA :
i_header TYPE slis_t_listheader,
w_header LIKE LINE OF i_header.
DATA:l_date1 TYPE datum,
l_date2 TYPE datum.
w_header-typ = 'S'.
w_header-info = sy-title.
APPEND w_header TO i_header.
CLEAR w_header.
w_header-typ = 'H'.
w_header-info = sy-repid.
APPEND w_header TO i_header.
CLEAR w_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = i_header
i_logo = 'ENJOYSAP_LOGO'.
ENDFORM. "top_of_page
*&---------------------------------------------------------------------*
*& Form BUILD_sort_tab
*&---------------------------------------------------------------------*
FORM build_sort_tab .
CLEAR :i_sort[],w_sort.
w_sort-spos = 1.
w_sort-fieldname = 'PERNR'.
w_sort-tabname = 'I_PA0001'. "header table
w_sort-up = 'X'.
w_sort-subtot = 'X'.
APPEND w_sort TO i_sort.
CLEAR w_sort.
ENDFORM. " BUILD_sort_tab
04-21-2008 9:07 AM
04-21-2008 9:07 AM
Hi amythiel,
WELCOME TO SDN
PLEASE CHECK THIS LINK
http://www.saptechnical.com/Tutorials/ALV/ALVMainPage.htm
reward if helpful
raam
04-21-2008 9:10 AM
the code you have written is ok and you must also add the do_sum = 'X' in your field catalog for whate ver columns you need your subtotal
04-21-2008 9:11 AM
Hi amythiel,
I believe EBELN is there in the heade table as well.
just change ur code like below
Check the sample program to get subtotal in Hierarchical ALV .
gs_sort-fieldname = 'EBELN'.
gs_sort-tabname = 'IT_HEADER'.
gs_sort-up = 'X'.
gs_sort-subtot = 'X'.
append gs_sort to gt_sort.
clear gs_sort.
I hope that it solves ur problem.
Regards,
Venkat.O
REPORT zvenkat_alv_4_hierarchi_subtot.
"Types
TYPES:
BEGIN OF t_pa0001, "Header table type
pernr TYPE pa0001-pernr,
bukrs TYPE pa0001-bukrs,
werks TYPE pa0001-werks,
persg TYPE pa0001-persg,
persk TYPE pa0001-persk,
abkrs TYPE pa0001-abkrs,
expand TYPE c,
END OF t_pa0001,
BEGIN OF t_pa0008, "Item table
pernr TYPE pa0008-pernr,
lga01 TYPE pa0008-lga01,
bet01 TYPE pa0008-bet01,
END OF t_pa0008.
"Work areas
DATA:
w_pa0008 TYPE t_pa0008,
w_pa0001 TYPE t_pa0001.
"Internal tables
DATA:
i_pa0008 TYPE STANDARD TABLE OF t_pa0008,
i_pa0001 TYPE STANDARD TABLE OF t_pa0001.
*&---------------------------------------------------------------------*
" ALV Declarations
*----------------------------------------------------------------------*
" Types Pools
TYPE-POOLS:
slis.
" Types
TYPES:
t_fieldcat TYPE slis_fieldcat_alv,
t_events TYPE slis_alv_event,
t_layout TYPE slis_layout_alv,
t_sort TYPE slis_sortinfo_alv,
t_keyinfo TYPE slis_keyinfo_alv.
" Workareas
DATA:
w_fieldcat TYPE t_fieldcat,
w_events TYPE t_events,
w_sort TYPE t_sort,
w_layout TYPE t_layout,
w_keyinfo TYPE t_keyinfo.
" Internal Tables
DATA:
i_fieldcat TYPE STANDARD TABLE OF t_fieldcat,
i_events TYPE STANDARD TABLE OF t_events,
i_sort TYPE STANDARD TABLE OF t_sort.
START-OF-SELECTION.
PERFORM get_data.
END-OF-SELECTION.
PERFORM build_fieldcatalog. "Fieldcatalog
PERFORM build_events. "Events table
PERFORM build_sort_tab. "To sort table and get subtotal
PERFORM build_relation_structure. "Making relationship between header and Item table
PERFORM display_data.
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
FORM get_data.
DATA:l_0008 TYPE pa0008 OCCURS 0 WITH HEADER LINE.
SELECT *
FROM pa0001
INTO CORRESPONDING FIELDS OF TABLE i_pa0001
UP TO 50 ROWS
WHERE begda LE sy-datum
AND endda GE sy-datum.
IF i_pa0001[] IS NOT INITIAL.
SELECT pernr lga01 bet01
FROM pa0008
INTO CORRESPONDING FIELDS OF l_0008
FOR ALL ENTRIES IN i_pa0001
WHERE pernr = i_pa0001-pernr
AND begda LE sy-datum
AND endda GE sy-datum.
w_pa0008-pernr = l_0008-pernr.
w_pa0008-lga01 = l_0008-lga01.
w_pa0008-bet01 = l_0008-bet01.
APPEND w_pa0008 TO i_pa0008.
CLEAR w_pa0008.
w_pa0008-pernr = l_0008-pernr.
w_pa0008-lga01 = l_0008-lga02.
w_pa0008-bet01 = l_0008-bet02.
APPEND w_pa0008 TO i_pa0008.
CLEAR w_pa0008.
w_pa0008-pernr = l_0008-pernr.
w_pa0008-lga01 = l_0008-lga03.
w_pa0008-bet01 = l_0008-bet03.
APPEND w_pa0008 TO i_pa0008.
CLEAR w_pa0008.
w_pa0008-pernr = l_0008-pernr.
w_pa0008-lga01 = l_0008-lga04.
w_pa0008-bet01 = l_0008-bet04.
APPEND w_pa0008 TO i_pa0008.
CLEAR w_pa0008.
ENDSELECT.
ENDIF.
ENDFORM. "get_data
*&---------------------------------------------------------------------*
*& Form build_fieldcatalog
*&---------------------------------------------------------------------*
FORM build_fieldcatalog.
PERFORM build_fcat USING:
"Field Int.Table Text
'PERNR' 'I_PA0001' 'PERNR',
'BUKRS' 'I_PA0001' 'BUKRS',
'WERKS' 'I_PA0001' 'WERKS',
'PERSG' 'I_PA0001' 'PERSG',
'PERSK' 'I_PA0001' 'PERSK',
'ABKRS' 'I_PA0001' 'ABKRS',
'PERNR' 'I_PA0008' 'PERNR', "Remove this if u dont want in the item table as well as it is there in the header table
'LGA01' 'I_PA0008' 'LGA01',
'BET01' 'I_PA0008' 'BET01'.
ENDFORM. "build_fieldcatalog
*&---------------------------------------------------------------------*
*& Form build_events
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM build_events.
CLEAR:
w_events, i_events[].
w_events-name = 'TOP_OF_PAGE'.
w_events-form = 'TOP_OF_PAGE'.
APPEND w_events TO i_events.
CLEAR w_events.
ENDFORM. "build_events
*&---------------------------------------------------------------------*
*& Form build_relation_structure
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM build_relation_structure.
w_keyinfo-header01 = 'PERNR'.
w_keyinfo-item01 = 'PERNR'.
ENDFORM. "build_relation_structure
*&---------------------------------------------------------------------*
*& Form display_data
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM display_data.
DATA:
l_program TYPE sy-repid VALUE sy-repid.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = l_program
it_fieldcat = i_fieldcat
it_events = i_events
it_sort = i_sort
i_tabname_header = 'I_PA0001'
i_tabname_item = 'I_PA0008'
is_keyinfo = w_keyinfo
TABLES
t_outtab_header = i_pa0001
t_outtab_item = i_pa0008.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. "display_data
*&---------------------------------------------------------------------*
*& Form build_fcat
*&---------------------------------------------------------------------*
FORM build_fcat USING l_field l_tab l_text.
w_fieldcat-fieldname = l_field.
w_fieldcat-tabname = l_tab.
w_fieldcat-seltext_m = l_text.
IF l_field = 'BET01'.
w_fieldcat-do_sum = 'X'.
ENDIF.
APPEND w_fieldcat TO i_fieldcat.
CLEAR w_fieldcat.
ENDFORM. " build_fcat
*&---------------------------------------------------------------------*
*& Form top_of_page
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM top_of_page.
DATA :
i_header TYPE slis_t_listheader,
w_header LIKE LINE OF i_header.
DATA:l_date1 TYPE datum,
l_date2 TYPE datum.
w_header-typ = 'S'.
w_header-info = sy-title.
APPEND w_header TO i_header.
CLEAR w_header.
w_header-typ = 'H'.
w_header-info = sy-repid.
APPEND w_header TO i_header.
CLEAR w_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = i_header
i_logo = 'ENJOYSAP_LOGO'.
ENDFORM. "top_of_page
*&---------------------------------------------------------------------*
*& Form BUILD_sort_tab
*&---------------------------------------------------------------------*
FORM build_sort_tab .
CLEAR :i_sort[],w_sort.
w_sort-spos = 1.
w_sort-fieldname = 'PERNR'.
w_sort-tabname = 'I_PA0001'. "header table
w_sort-up = 'X'.
w_sort-subtot = 'X'.
APPEND w_sort TO i_sort.
CLEAR w_sort.
ENDFORM. " BUILD_sort_tab
04-21-2008 9:14 AM
hi
here is a link with all details
check it
http://www.sap-img.com/abap/how-to-use-alv-for-hierarchical-lists.htm
plz reward if usefull
snehi chouhan
04-21-2008 9:14 AM
in the field catalog..
use
do_sum = 'X'
it will serve ur purpose..
eg: ls_fieldcat-do_sum = 'X'.
04-21-2008 9:16 AM
Hi,
Check the option Do-sum = 'x'
so that you will be getting the subtotals.
Reward Uf Helpfull,
Naresh.
04-22-2008 6:06 AM
Gurus,
Thanks so much for all the help. Problem already resolved and points are rewarded.