Subtotal in REUSE_ALV_HIERSEQ_LIST_DISPLAY
Hello,
Can someone tell me how can we get the Subtotals in the ALV?
I have used Sort and DO_SUM option
Thanks,
Sneha Singh.
Hi Sneha,
You can use w_fieldcat-do_sum = 'X' in fieldcat & while building sorting table use
w_sort-up = 'X'.
w_sort-subtot = 'X'.
Please refer below code it is exclusively a subtotal report with Hierarchical ALV.
[http://wiki.sdn.sap.com/wiki/display/Snippets/Subtotalsinhirarchial+report]
Kindly set to resolved if it helps you.
Regards
Abhii
Similar Messages
-
REUSE_ALV_HIERSEQ_LIST_DISPLAY and subtotal functionality
Hello,
I'm using REUSE_ALV_HIERSEQ_LIST_DISPLAY for a report.
Can a field in the ITEM_TABLE (ITEMCOST) be subtotaled directly into a field in its parent line in the HEADER_TABLE (TOTALINVOICE)?
Or do I need to do this programmatically outside of the call to REUSE_ALV_HIERSEQ_LIST_DISPLAY?
Thx.
AndyHi,
add do_sum = 'X" for the field in the field catalog
see the example..
w_l_fieldcat-reptext_ddic = 'WRBTR'.
w_l_fieldcat-outputlen = 18.
w_l_fieldcat-do_sum = 'X'. "write this
MODIFY ch_tab_fieldcat from w_l_fieldcat.
Pass this field catalog to fm 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'.
Regards,
Prabhudas -
Subtotal for line item in REUSE_ALV_HIERSEQ_LIST_DISPLAY
Hi Abapers,
Is it possible to have subtotal functionality for line item for
REUSE_ALV_HIERSEQ_LIST_DISPLAY.
when i select particular line item and press subtotal button
system displaying information mesage
"Subtotals cannot be calculated using item
characteristics"
Even when i executed standard hie program same message displaying for line item.
please provide any sample code for subtotal for line item .
regards,
Hari priyajust copy the program and execute
*& Report Z_HIERSEQ_REP2 *
*& author : ramesh.k *
*& title : hierseq list in alv format *
REPORT z_hierseq_rep2 MESSAGE-ID zrae.
TYPE-POOLS : slis.
*structure declarations
*structure for likp
TYPES : BEGIN OF ty_likp,
vbeln TYPE vbeln_vl,
vkorg TYPE vkorg,
END OF ty_likp.
*structure for lips
TYPES : BEGIN OF ty_lips,
vbeln TYPE vbeln_vl,
posnr TYPE posnr_vl,
matnr TYPE matnr,
matkl TYPE matkl,
ntgew TYPE ntgew_15,
END OF ty_lips.
*internal table declarations
DATA : t_likp TYPE STANDARD TABLE OF ty_likp INITIAL SIZE 0,
t_lips TYPE STANDARD TABLE OF ty_lips INITIAL SIZE 0.
DATA : t_fieldcat TYPE slis_t_fieldcat_alv,
t_sortinfo TYPE slis_t_sortinfo_alv,
i_events TYPE slis_t_event.
*workareas
DATA : w_likp TYPE ty_likp,
w_lips TYPE ty_lips,
w_fieldcat TYPE slis_fieldcat_alv,
w_keyinfo TYPE slis_keyinfo_alv,
w_sortinfo TYPE slis_sortinfo_alv,
W_event TYPE slis_alv_event ,
sub_text type slis_subtot_text.
*global declarations.
DATA : g_vbeln like likp-vbeln.
*selection-screen declarations
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME.
SELECT-OPTIONS : s_vbeln FOR g_vbeln.
SELECTION-SCREEN END OF BLOCK blk1.
AT SELECTION-SCREEN.
SELECT SINGLE
vbeln
FROM likp
INTO (w_likp-vbeln)
WHERE vbeln IN s_vbeln.
IF sy-subrc NE 0.
MESSAGE i001 WITH 'vbeln not found'.
ENDIF.
START-OF-SELECTION.
get_data_likp
PERFORM sub_getdata_likp.
get_data_lips
PERFORM sub_getdata_lips.
fieldcatlog_build
PERFORM build_fieldcatlog.
*SORTINFO FOR SUBTOTALS
PERFORM get_sortinfo.
*KEYINFORMATION
PERFORM get_keyinfo.
*LIST DISPLAY
PERFORM alv_list_display.
*& Form sub_getdata_likp
extracting the data from likp.
--> p1 text
<-- p2 text
FORM sub_getdata_likp .
SELECT vbeln
vkorg
FROM likp
INTO TABLE t_likp
WHERE vbeln IN s_vbeln.
ENDFORM. " sub_getdata_likp
*& Form sub_getdata_lips
extracting data from lips.
--> p1 text
<-- p2 text
FORM sub_getdata_lips .
SELECT vbeln
posnr
matnr
matkl
ntgew
FROM lips
INTO TABLE t_lips
FOR ALL ENTRIES IN t_likp
WHERE vbeln = t_likp-vbeln.
ENDFORM. " sub_getdata_lips
*& Form build_fieldcatlog
text
--> p1 text
<-- p2 text
FORM build_fieldcatlog .
*FIELDCATLOG FOR HEADER TABLE
PERFORM build_fieldcatlog1 USING :
'1' 'VBELN' 'DELIVERY NO' 'T_LIKP' ' ' ' ' ' ',
'2' 'VKORG' 'GROUP' 'T_LIKP' ' ' ' ' ' ',
*FIELDCATLOAG FOR ITEM TABLE
'1' 'POSNR' 'ITEM NO' 'T_LIPS' ' ' ' ' ' ',
'2' 'MATNR' 'MAT NO' 'T_LIPS' ' ' ' ' ' ',
'3' 'MATKL' 'GROUP' 'T_LIPS' ' ' ' ' ' ',
'4' 'NTGEW' 'QUAN' 'T_LIPS' 'X' 'X' 'X'.
ENDFORM. " build_fieldcatlog
*& Form build_fieldcatlog1
text
-->P_0185 text
-->P_0186 text
-->P_0187 text
-->P_0188 text
FORM build_fieldcatlog1 USING
pcol TYPE char2
pfldname TYPE char8
pseltext TYPE char20
ptabname TYPE char10
psum TYPE char10
PQUAN TYPE CHAR15
PSUBTOTAL TYPE CHAR40.
w_fieldcat-col_pos = pcol.
w_fieldcat-fieldname = pfldname.
w_fieldcat-seltext_m = pseltext.
w_fieldcat-tabname = ptabname.
w_fieldcat-do_sum = psum.
W_FIELDCAT-qfieldname = PQUAN.
W_FIELDCAT-subtotals_text = PSUBTOTAL.
APPEND w_fieldcat TO t_fieldcat.
ENDFORM. " build_fieldcatlog1
*& Form GET_KEYINFO
text
--> p1 text
<-- p2 text
FORM get_keyinfo .
w_keyinfo-header01 = 'VBELN'.
w_keyinfo-item01 = 'VBELN'.
ENDFORM. " GET_KEYINFO
*& Form ALV_LIST_DISPLAY
text
FORM alv_list_display .
DATA : S_REPID TYPE SY-REPID.
S_REPID = SY-REPID.
DATA W_LAYOUT TYPE SLIS_LAYOUT_ALV.
W_LAYOUT-totals_text = 'G.TOTAL'.
W_LAYOUT-subtotals_text = 'SUBTOTAL_TEXT'.
*FORM subtotal_text CHANGING p_total TYPE any
p_subtot_text TYPE slis_subtot_text.
p_subtot_text-criteria = 'VBELN'.
*p_subtot_text-max_len = 40.
*p_subtot_text-display_text_for_subtotal
*= 'SUBTOTAL'.
**ENDIF.
*ENDFORM.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
i_callback_program = S_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
IS_LAYOUT = W_LAYOUT
it_fieldcat = t_fieldcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
it_sort = t_sortinfo
IT_FILTER =
IS_SEL_HIDE =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
I_DEFAULT = 'X'
I_SAVE = 'X'
IS_VARIANT =
IT_EVENTS = i_eventS
IT_EVENT_EXIT =
i_tabname_header = 'T_LIKP'
i_tabname_item = 'T_LIPS'
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
is_keyinfo = w_keyinfo
IS_PRINT =
IS_REPREP_ID =
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab_header = t_likp
t_outtab_item = t_lips
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.
ENDFORM. " ALV_LIST_DISPLAY
*& Form GET_SORTINFO
text
--> p1 text
<-- p2 text
FORM get_sortinfo .
w_sortinfo-fieldname = 'VBELN'.
w_sortinfo-tabname = 'T_LIKP'.
W_SORTINFO-group = TEXT-001.
w_sortinfo-subtot = 'X'.
APPEND w_sortinfo TO t_sortinfo.
ENDFORM. " GET_SORTINFO -
Use subtotal feature in REUSE_ALV_HIERSEQ_LIST_DISPLAY
Dear All,
Im using the FM REUSE_ALV_HIERSEQ_LIST_DISPLAY to display Hierarchy list display.
How can i add subtotal feature to it?Hi Juhi,
You can use the field catalog the to do sum . The using do-sum.
lw_fcat-do_sum = 'X'.
and using the sort table you can use to do sub total.
lw_sort-tabname = 'IT_FINAL'.
lw_sort-fieldname = 'BRNCH'.
lw_sort-up = 'X'.
lw_sort-subtot = 'X'.
append lw_sort to it_sort.
pass it to Reuse_alv_hierseq_list_display
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = gs_layout
it_fieldcat = it_fcat
it_sort = it_sort
i_default = 'X'
i_save = 'A'
is_variant = wa_variant
it_events = it_events
i_tabname_header = g_tabname_header
i_tabname_item = g_tabname_item
is_keyinfo = gs_keyinfo
TABLES
t_outtab_header = it_final
t_outtab_item = it_final1
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 .
Nilesh -
REUSE_ALV_HIERSEQ_LIST_DISPLAY
Hi,
I have developed a report using REUSE_ALV_HIERSEQ_LIST_DISPLAY .
I need to include checkbox at the header level.
Can anyone help me with an example?
ThanksHi Prabha,
Go through this hope u can find ur solution.
TYPE-POOLS: slis.
DATA: BEGIN OF itab OCCURS 0,
vbeln TYPE vbeln,
expand,
END OF itab.
DATA: BEGIN OF itab1 OCCURS 0,
vbeln TYPE vbeln,
posnr TYPE posnr,
matnr TYPE matnr,
netpr TYPE netpr,
END OF itab1.
DATA: t_fieldcatalog TYPE slis_t_fieldcat_alv.
DATA: s_fieldcatalog TYPE slis_fieldcat_alv.
s_fieldcatalog-col_pos = '1'.
s_fieldcatalog-fieldname = 'VBELN'.
s_fieldcatalog-tabname = 'ITAB'.
s_fieldcatalog-rollname = 'VBELN'.
s_fieldcatalog-outputlen = '12'.
APPEND s_fieldcatalog TO t_fieldcatalog.
CLEAR: s_fieldcatalog.
s_fieldcatalog-col_pos = '1'.
s_fieldcatalog-fieldname = 'VBELN'.
s_fieldcatalog-tabname = 'ITAB1'.
s_fieldcatalog-rollname = 'VBELN'.
s_fieldcatalog-outputlen = '12'.
APPEND s_fieldcatalog TO t_fieldcatalog.
CLEAR: s_fieldcatalog.
s_fieldcatalog-col_pos = '2'.
s_fieldcatalog-fieldname = 'POSNR'.
s_fieldcatalog-tabname = 'ITAB1'.
s_fieldcatalog-rollname = 'POSNR'.
APPEND s_fieldcatalog TO t_fieldcatalog.
CLEAR: s_fieldcatalog.
s_fieldcatalog-col_pos = '3'.
s_fieldcatalog-fieldname = 'MATNR'.
s_fieldcatalog-tabname = 'ITAB1'.
s_fieldcatalog-rollname = 'MATNR'.
APPEND s_fieldcatalog TO t_fieldcatalog.
CLEAR: s_fieldcatalog.
s_fieldcatalog-col_pos = '4'.
s_fieldcatalog-fieldname = 'NETPR'.
s_fieldcatalog-tabname = 'ITAB1'.
s_fieldcatalog-rollname = 'NETPR'.
s_fieldcatalog-do_sum = 'X'.
APPEND s_fieldcatalog TO t_fieldcatalog.
CLEAR: s_fieldcatalog.
DATA: s_layout TYPE slis_layout_alv.
s_layout-subtotals_text = 'SUBTOTAL TEXT'.
s_layout-key_hotspot = 'X'.
s_layout-expand_fieldname = 'EXPAND'.
SELECT vbeln UP TO 100 ROWS
FROM
vbak
INTO TABLE itab.
IF NOT itab[] IS INITIAL.
SELECT vbeln posnr matnr netpr
FROM vbap
INTO TABLE itab1
FOR ALL ENTRIES IN itab
WHERE vbeln = itab-vbeln.
ENDIF.
DATA: v_repid TYPE syrepid.
v_repid = sy-repid.
DATA: s_keyinfo TYPE slis_keyinfo_alv.
s_keyinfo-header01 = 'VBELN'.
s_keyinfo-item01 = 'VBELN'.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = v_repid
is_layout = s_layout
it_fieldcat = t_fieldcatalog
i_tabname_header = 'ITAB'
i_tabname_item = 'ITAB1'
is_keyinfo = s_keyinfo
TABLES
t_outtab_header = itab
t_outtab_item = itab1
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.
Reward points if helpful.
Thanks
Naveen khan -
Subtotal text in the 3rd column of the alv list
Hi Guru,
Can anyone know or have some codes on how to implement a subtotal text in the 3rd column of the ALV list. Im using FM REUSE_ALV_HIERSEQ_LIST_DISPLAY to display the report.
Please give some advise or help.
Thanks and rewards is given.Hi my friend,
Insted Using FM REUSE_ALV_HIERSEQ_LIST_DISPLAY
better use REUSE_ALV_GRID_DISPLAY.
in that
it_sort = i_sort[]
constants : c_x type char1 value 'X'.
l_rec_fieldcat_wa-do_sum = c_x.
endif. -
hello experts,
are there any example using function 'REUSE_ALV_HIERSEQ_LIST_DISPLAY' with editable columns.
Or, have somebody an idea to resolve my problem.
I can edit the fields in the alv-grid, but I don't see the changes in the internal table using 'LVC_TRANSFER_FROM_SLIS' function.
thanks and regards.
K. WErnerhi,
here is the code for editable Hieararchical ALV
TYPE-POOLS : slis.
TABLES : mseg.
DATA : BEGIN OF itab_head OCCURS 0,
mat LIKE mseg-matnr,
* matnr LIKE mseg-matnr,
werks LIKE mseg-werks,
END OF itab_head.
DATA : BEGIN OF itab_item OCCURS 0,
* mat LIKE mseg-matnr,
matnr LIKE mseg-matnr,
werks LIKE mseg-werks,
mblnr LIKE mseg-mblnr,
menge LIKE mseg-menge,
END OF itab_item.
DATA : t_fcat TYPE slis_t_fieldcat_alv,
key_info TYPE slis_keyinfo_alv,
t_eve TYPE slis_t_event,
gt_subtot TYPE slis_t_sortinfo_alv,
subtot LIKE LINE OF gt_subtot,
t_listhead TYPE slis_t_listheader,
st_line TYPE slis_listheader.
DATA : lin_no TYPE i.
DATA : t_mtdoc LIKE mseg-mblnr.
SELECT-OPTIONS : mat FOR mseg-matnr.
INITIALIZATION.
PERFORM build_cat USING t_fcat.
PERFORM build_eve.
START-OF-SELECTION.
PERFORM get_data.
PERFORM dis_data.
*& Form build_cat
* text
* -->TEMP_FCAT text
FORM build_cat USING temp_fcat TYPE slis_t_fieldcat_alv.
DATA : wa_fcat TYPE slis_fieldcat_alv.
wa_fcat-tabname = 'ITAB_HEAD'.
wa_fcat-fieldname = 'MAT'.
wa_fcat-seltext_m = 'Material'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_HEAD'.
wa_fcat-fieldname = 'WERKS'.
wa_fcat-seltext_m = 'Plant'.
wa_fcat-edit = 'X'.
wa_fcat-input = 'X'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITEM'.
wa_fcat-fieldname = 'MBLNR'.
wa_fcat-seltext_m = 'Material Doc.'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITEM'.
wa_fcat-fieldname = 'MENGE'.
wa_fcat-seltext_m = 'Quantity'.
wa_fcat-edit = 'X'.
wa_fcat-input = 'X'.
wa_fcat-do_sum = 'Y'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
subtot-spos = 1.
subtot-fieldname = 'MAT'.
subtot-tabname = 'ITAB_HEAD'.
subtot-up = 'X'.
subtot-group = 'X'.
subtot-subtot = 'X'.
subtot-expa = 'X'.
APPEND subtot TO gt_subtot.
ENDFORM. "build_cat
*& Form build_eve
* text
FORM build_eve.
DATA : wa_eve TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = t_eve
* EXCEPTIONS
* LIST_TYPE_WRONG = 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.
READ TABLE t_eve INTO wa_eve WITH KEY name = 'TOP_OF_PAGE'.
IF sy-subrc = 0.
wa_eve-form = 'TOP_OF_PAGE'.
MODIFY t_eve FROM wa_eve INDEX sy-tabix.
ENDIF.
ENDFORM. "build_eve
*& Form get_data
* text
FORM get_data.
SELECT matnr werks mblnr menge FROM mseg INTO CORRESPONDING FIELDS OF TABLE itab_item
WHERE matnr IN mat.
ENDFORM. "get_data
*& Form dis_data
* text
FORM dis_data.
key_info-header01 = 'MAT'.
key_info-item01 = 'MATNR'.
key_info-header02 = 'WERKS'.
key_info-item02 = 'WERKS'.
REFRESH itab_head.
LOOP AT itab_item.
ON CHANGE OF itab_item-matnr OR itab_item-werks.
MOVE-CORRESPONDING itab_item TO itab_head.
itab_head-mat = itab_item-matnr.
APPEND itab_head.
ENDON.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = 'ZALV_PRDS'
it_fieldcat = t_fcat
it_sort = gt_subtot
it_events = t_eve[]
i_tabname_header = 'ITAB_HEAD'
i_tabname_item = 'ITAB_ITEM'
is_keyinfo = key_info
TABLES
t_outtab_header = itab_head
t_outtab_item = itab_item
* 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.
ENDFORM. "dis_data
*& Form top_of_page
* text
FORM top_of_page.
CLEAR st_line.
st_line-typ = 'H'.
st_line-info = 'Dhwani Shah'.
APPEND st_line TO t_listhead.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = t_listhead
* I_LOGO =
* I_END_OF_LIST_GRID =
* I_ALV_FORM =
ENDFORM. "top_of_page
reward if usefull..... -
USER_COMMAND in the 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
HAI Experts ,
Can anyone pls give me a sample code which displays some operation using USER_COMMAND in the 'REUSE_ALV_HIERSEQ_LIST_DISPLAY' .
Any small sample program will be helpful.
Regards,
Devendranhi
Check this code:
REPORT Z_RE_ALV_JERARQUIA .
*****TABLAS
TABLES : MARA, MAKT.
****TIPOS
TYPE-POOLS: SLIS.
****TABLAS INTERNAS
DATA: IT_MARA LIKE MARA OCCURS 0 WITH HEADER LINE,
WA_MARA LIKE LINE OF IT_MARA ,
BEGIN OF IT_HEADER OCCURS 0,
TIPO LIKE MARA-MTART,
END OF IT_HEADER,
BEGIN OF IT_ITEM OCCURS 0,
TIPO LIKE MARA-MTART,
MATERIAL LIKE MARA-MATNR,
MATKL LIKE MARA-MATKL,
MEINS LIKE MARA-MEINS,
MAKTX LIKE MAKT-MAKTX,
END OF IT_ITEM.
*****ALV
DATA: IT_KEYINFO type SLIS_KEYINFO_ALV OCCURS 0 WITH HEADER LINE,
G_REPID LIKE SY-REPID,
IT_LAYOUT TYPE SLIS_LAYOUT_ALV,
IT_FIELD TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
IT_EVENTS TYPE SLIS_T_EVENT WITH HEADER LINE,
IT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
IT_LIST_END_OF_PAGE TYPE SLIS_T_LISTHEADER,
IT_SORT TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE,
IT_FILTER TYPE SLIS_T_FILTER_ALV WITH HEADER LINE,
GT_SP_GROUP TYPE SLIS_T_SP_GROUP_ALV,
ls_event type slis_alv_event,
LS_LINE TYPE slis_listheader.
*****VARIABLES
DATA: TEXT(60).
****CONSTANTES
CONSTANTS:
GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
GC_FORMNAME_END_OF_PAGE TYPE SLIS_FORMNAME VALUE 'END_OF_PAGE'.
****INITIALIZATION
INITIALIZATION.
G_REPID = SY-REPID.
IT_LAYOUT-ZEBRA = 'X'.
IT_LAYOUT-no_hotspot = ' '.
IT_layout-colwidth_optimize = 'X'.
****START OF SELECTION
START-OF-SELECTION.
SELECT-OPTIONS: TIPO FOR MARA-MTART OBLIGATORY.
SELECT *
FROM MARA
INTO TABLE IT_MARA
WHERE MTART IN TIPO.
IF NOT IT_MARA[] IS INITIAL.
PERFORM FO_PROCESAR.
PERFORM FO_KEY_INFO.
PERFORM FO_IMPRIMIR_CABECERA USING IT_LIST_TOP_OF_PAGE[].
PERFORM FO_SORT.
PERFORM FO_FIELDCAT.
PERFORM FO_FILTRAR.
PERFORM FO_EVENTOS USING IT_events[].
PERFORM FO_MOSTRAR_ALV_JER.
ELSE.
MESSAGE S000(SU) WITH TEXT-001.
ENDIF.
*& Form FO_PROCESAR
FORM FO_PROCESAR.
SORT IT_MARA BY MTART ASCENDING.
LOOP AT IT_MARA.
MOVE-CORRESPONDING IT_MARA TO WA_MARA.
MOVE WA_MARA-MTART TO IT_HEADER-TIPO.
APPEND IT_HEADER.
MOVE: IT_MARA-MTART TO IT_ITEM-TIPO,
IT_MARA-MATNR TO IT_ITEM-MATERIAL,
IT_MARA-MATKL TO IT_ITEM-MATKL,
IT_MARA-MEINS TO IT_ITEM-MEINS.
SELECT SINGLE MAKTX INTO IT_ITEM-MAKTX
FROM MAKT
WHERE MATNR EQ IT_MARA-MATNR
AND SPRAS EQ 'S'.
APPEND IT_ITEM.
CLEAR: IT_MARA, WA_MARA, IT_ITEM, IT_HEADER.
ENDLOOP.
SORT IT_HEADER BY TIPO ASCENDING.
DELETE ADJACENT DUPLICATES FROM IT_HEADER COMPARING TIPO.
ENDFORM. " FO_PROCESAR
*& Form FO_MOSTRAR_ALV_JER
FORM FO_MOSTRAR_ALV_JER.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_CALLBACK_PROGRAM = G_REPID
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = IT_LAYOUT
IT_FIELDCAT = IT_FIELD[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT = IT_SORT[]
IT_FILTER = IT_FILTER[]
IS_SEL_HIDE =
I_SCREEN_START_COLUMN = 10
I_SCREEN_START_LINE = 5
I_SCREEN_END_COLUMN = 45
I_SCREEN_END_LINE = 30
I_DEFAULT = 'X'
I_SAVE = 'X'
IS_VARIANT =
IT_EVENTS = IT_EVENTS[]
IT_EVENT_EXIT =
I_TABNAME_HEADER = 'IT_HEADER'
I_TABNAME_ITEM = 'IT_ITEM'
I_STRUCTURE_NAME_HEADER =
I_STRUCTURE_NAME_ITEM =
IS_KEYINFO = IT_KEYINFO
IS_PRINT =
IS_REPREP_ID =
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB_HEADER = IT_HEADER
T_OUTTAB_ITEM = IT_ITEM
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.
ENDFORM. " FO_MOSTRAR_ALV_JER
*& Form FO_KEY_INFO
FORM FO_KEY_INFO.
REFRESH IT_KEYINFO. CLEAR IT_KEYINFO.
IT_KEYINFO-header01 = 'TIPO'.
IT_KEYINFO-item01 = 'TIPO'.
APPEND IT_KEYINFO.
ENDFORM. " FO_KEY_INFO
*& Form FO_IMPRIMIR_CABECERA
FORM FO_IMPRIMIR_CABECERA USING TEXTO_REPORT TYPE SLIS_T_LISTHEADER.
CLEAR: LS_line, text.
LS_line-typ = 'H'.
WRITE: sy-title TO text.
LS_line-info = text.
APPEND LS_line TO TEXTO_REPORT.
CLEAR: LS_line, text.
LS_line-typ = 'A'.
WRITE: 'Fecha de Ejecución:' to text,
sy-DATUM TO text+20(20).
LS_line-info = text.
APPEND LS_line TO TEXTO_REPORT.
CLEAR: LS_line, text.
LS_line-typ = 'A'.
WRITE: 'Usuario:' to text,
sy-uname TO text+20(20).
LS_line-info = text.
APPEND LS_line TO TEXTO_REPORT.
CLEAR LS_LINE.
APPEND LS_line TO TEXTO_REPORT.
ENDFORM. " FO_IMPRIMIR_CABECERA
*& Form FO_SORT
FORM FO_SORT.
IT_SORT-FIELDNAME = 'TIPO'.
IT_SORT-TABNAME = 'IT_HEADER'.
IT_SORT-GROUP = 'X'.
IT_SORT-UP = 'X'.
IT_SORT-DOWN = ' '.
IT_SORT-SUBTOT = ' '.
APPEND IT_SORT. CLEAR IT_SORT.
ENDFORM. " FO_SORT
*& Form FO_FIELDCAT
FORM FO_FIELDCAT.
CLEAR IT_FIELD.
IT_FIELD-TABNAME = 'IT_ITEM'.
IT_FIELD-FIELDNAME = 'TIPO'.
IT_FIELD-COL_POS = '1'.
IT_FIELD-JUST = 'L'.
IT_FIELD-SELTEXT_L = 'Tipo Material'.
IT_FIELD-KEY = 'X'.
APPEND IT_FIELD.
CLEAR IT_FIELD.
IT_FIELD-TABNAME = 'IT_ITEM'.
IT_FIELD-FIELDNAME = 'MATERIAL'.
IT_FIELD-COL_POS = '2'.
IT_FIELD-JUST = 'L'.
IT_FIELD-SELTEXT_L = 'Codigo Material'.
APPEND IT_FIELD.
CLEAR IT_FIELD.
IT_FIELD-TABNAME = 'IT_ITEM'.
IT_FIELD-FIELDNAME = 'MATKL'.
IT_FIELD-COL_POS = '3'.
IT_FIELD-JUST = 'L'.
IT_FIELD-SELTEXT_L = 'Grupo De Articulos'.
APPEND IT_FIELD.
CLEAR IT_FIELD.
IT_FIELD-TABNAME = 'IT_ITEM'.
IT_FIELD-FIELDNAME = 'MEINS'.
IT_FIELD-COL_POS = '4'.
IT_FIELD-JUST = 'L'.
IT_FIELD-SELTEXT_L = 'Uni. Med. Base'.
APPEND IT_FIELD.
CLEAR IT_FIELD.
IT_FIELD-TABNAME = 'IT_ITEM'.
IT_FIELD-FIELDNAME = 'MAKTX'.
IT_FIELD-COL_POS = '5'.
IT_FIELD-JUST = 'L'.
IT_FIELD-outputlen = '40'.
IT_FIELD-SELTEXT_L = 'Descriptivo'.
APPEND IT_FIELD.
ENDFORM. " FO_FIELDCAT
*& Form FO_EVENTOS
FORM FO_EVENTOS USING PIT_EVENTS type slis_t_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = PIT_EVENTS
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2.
read table PIT_EVENTS with key name = SLIS_EV_TOP_OF_PAGE
into ls_event.
if sy-subrc = 0.
move gc_formname_top_of_page to ls_event-form.
append ls_event to pIT_EVENTS.
endif.
CLEAR LS_EVENT.
ENDFORM. " FO_EVENTOS
*& FORM top_of_page *
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = 'ZLOGO_GRUPO_POLAR'
IT_LIST_COMMENTARY = IT_LIST_TOP_OF_PAGE.
ENDFORM. "TOP_OF_PAGE
*& Form FO_FILTRAR
FORM FO_FILTRAR.
*IT_FILTER-FIELDNAME = 'TIPO'.
*IT_FILTER-TABNAME = 'IT_HEADER'.
*APPEND IT_FILTER. CLEAR IT_FILTER.
ENDFORM. " FO_FILTRAR
*& Form USER_COMMAND
FORM USER_COMMAND USING ucomm LIKE sy-ucomm
selfield TYPE slis_selfield.
READ TABLE IT_ITEM INDEX SELFIELD-TABINDEX.
IF SY-SUBRC EQ 0.
ENDIF.
ENDFORM. " USER_COMMAND
Regards
Gregory -
I can't do Subtotal_text in REUSE_ALV_HIERSEQ_LIST_DISPLAY
I'm using FM: REUSE_ALV_HIERSEQ_LIST_DISPLAY in my program and I need to display the subtotal text
Previously, there is only 1 subtotal text, so I can use layout-subtotals_text = 'ABCDEF'
Now users want to have more subtotal.
I tried to use
FORM SUBTOTAL_TEXT USING Header STRUCTURE TT_HEADER
IN_SUBTOTAL_TEXT TYPE slis_subtot_text.
ENDFORM.
But it doesn't work.
How can I solve this problem.Hi Juhi,
You can use the field catalog the to do sum . The using do-sum.
lw_fcat-do_sum = 'X'.
and using the sort table you can use to do sub total.
lw_sort-tabname = 'IT_FINAL'.
lw_sort-fieldname = 'BRNCH'.
lw_sort-up = 'X'.
lw_sort-subtot = 'X'.
append lw_sort to it_sort.
pass it to Reuse_alv_hierseq_list_display
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = gs_layout
it_fieldcat = it_fcat
it_sort = it_sort
i_default = 'X'
i_save = 'A'
is_variant = wa_variant
it_events = it_events
i_tabname_header = g_tabname_header
i_tabname_item = g_tabname_item
is_keyinfo = gs_keyinfo
TABLES
t_outtab_header = it_final
t_outtab_item = it_final1
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 .
Nilesh -
Sub Total in REUSE_ALV_HIERSEQ_LIST_DISPLAY
Hello Guys,
I am using the FM REUSE_ALV_HIERSEQ_LIST_DISPLAY to display my final Ouptut.
At present my output is:
MATNR KUNNR LABST
002 212 50
002 212 100
150
002 213 50
002 213 100
150
Total 300
+And my required Output is : +
MATNR KUNNR LABST
002 212 50
002 212 100
150
002 213 50
002 213 100
150
Total 150.
Difference in the above two result is written in BOLD.
NOTE: Total is done for each MATERIAL.
Please revert back to me ,if u need any further explanations.
Regards,
NajamHI,
Check this link..
REUSE_ALV_HIERSEQ_LIST_DISPLAY subtotal
subtotal for line item in REUSE_ALV_HIERSEQ_LIST_DISPLAY
Edited by: Avinash Kodarapu on Feb 27, 2009 1:00 PM -
hi friends,
in alv grid display output on toolbar how to get button of Subtotal,Expand and Colapse
pls,reply...........hi,
try this.
<b>DATA: gt_subtot TYPE slis_t_sortinfo_alv,
subtot LIKE LINE OF gt_subtot.</b>
subtot-spos = 1.
subtot-fieldname = 'NAME1'.
subtot-tabname = 'ITAB_HEAD'.
subtot-up = 'X'.
subtot-group = 'X'.
subtot-subtot = 'X'.
subtot-expa = 'X'.
APPEND subtot TO gt_subtot.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = 'ZRAW_COST'
it_fieldcat = fcat
<b> it_sort = gt_subtot</b>
it_events = eve
i_tabname_header = 'ITAB_HEAD'
i_tabname_item = 'ITAB_ITM'
is_keyinfo = alv_keyinfo
TABLES
t_outtab_header = itab_head
t_outtab_item = itab_itm
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.
reward if useful.
this is whole report for better understanding.
REPORT ZRAW_COST.
TYPE-POOLS:slis.
TABLES:mseg,
lfa1,
mkpf,
ekpo,
mara,
j_1iexchdr,
mbew.
DATA:BEGIN OF itab_vend OCCURS 0,
lifnr LIKE lfa1-lifnr, "Vendor Code
END OF itab_vend.
DATA:BEGIN OF itab_data OCCURS 0,
lifnr LIKE mseg-lifnr, "Vendor Code
mblnr LIKE mseg-mblnr, "Material Doc.
charg LIKE mseg-charg, "Batch
matnr LIKE mseg-matnr, "Material
maktx LIKE makt-maktx, "Description
menge LIKE mseg-menge, "Quantity
dmbtr LIKE mseg-dmbtr, "Amount
budat LIKE mkpf-budat, "G.R.Date
xblnr LIKE mkpf-xblnr, "Delivery Note(Bill No.)
frbnr LIKE mkpf-frbnr, "Bill of Lading(Bill Date)
netpr LIKE ekpo-netpr, "Basic Rate
matkl LIKE ekpo-matkl, "Material Group
END OF itab_data.
DATA:BEGIN OF itab_itm OCCURS 0,
lifnr LIKE mseg-lifnr, "Vendor Code
name1 LIKE lfa1-name1, "Vendor Name
matkl LIKE ekpo-matkl, "Material Group
wgbez LIKE t023t-wgbez, "Material Group Name
mblnr LIKE mseg-mblnr, "Material Doc.
matnr LIKE mseg-matnr, "Material
maktx LIKE makt-maktx, "Description
xblnr LIKE mkpf-xblnr, "Delivery Note(Bill No.)
frbnr LIKE mkpf-frbnr, "Bill of lading(Bill Date)
budat LIKE mkpf-budat, "G.R.Date
exnum LIKE j_1iexchdr-exnum, "Ex.Bill No.
exdat LIKE j_1iexchdr-exdat, "Ex.Bill Date
charg LIKE mseg-charg, "Batch
menge LIKE mseg-menge, "Quantity
netpr LIKE ekpo-netpr, "Basic Rate
verpr LIKE mbew-verpr, "Costing Rate
dmbtr LIKE mseg-dmbtr, "Amount
END OF itab_itm.
DATA:BEGIN OF itab_head OCCURS 0,
lifnr LIKE mseg-lifnr, "Vendor Code
name1 LIKE lfa1-name1, "Vendor Name
matkl LIKE ekpo-matkl, "Material Group
wgbez LIKE t023t-wgbez, "Material Group Name
END OF itab_head.
DATA:fcat TYPE slis_t_fieldcat_alv,
eve TYPE slis_t_event,
alv_keyinfo TYPE slis_keyinfo_alv,
gt_subtot TYPE slis_t_sortinfo_alv,
subtot LIKE LINE OF gt_subtot.
DATA:ex_doc LIKE j_1iexchdr-exnum,
ex_dat LIKE j_1iexchdr-exdat,
mov_pr LIKE mbew-verpr,
name LIKE lfa1-name1,
gr_nm LIKE t023t-wgbez,
t_mblnr LIKE mseg-mblnr,
yr LIKE mseg-mjahr.
DATA: BEGIN OF record OCCURS 0,
act(003),
rfd(003),
matdoc(010),
docyr(004),
END OF record.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
SELECTION-SCREEN:BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:dt FOR mkpf-budat OBLIGATORY,
vend FOR lfa1-lifnr,
mat_gr FOR mara-matkl.
SELECTION-SCREEN:END OF BLOCK blk1.
INITIALIZATION.
PERFORM build_cat USING fcat.
START-OF-SELECTION.
PERFORM get_data.
PERFORM dis_data.
*& Form build_cat
text
-->T_FCAT text
FORM build_cat USING t_fcat TYPE slis_t_fieldcat_alv.
DATA:wa_fcat TYPE slis_fieldcat_alv.
wa_fcat-tabname = 'ITAB_HEAD'.
wa_fcat-fieldname = 'NAME1'.
wa_fcat-seltext_m = 'Vendor Name'.
wa_fcat-outputlen = '30'.
wa_fcat-just = 'C'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_HEAD'.
wa_fcat-fieldname = 'WGBEZ'.
wa_fcat-seltext_m = 'Material Group Name'.
wa_fcat-outputlen = '30'.
wa_fcat-just = 'C'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'MBLNR'.
wa_fcat-seltext_m = 'Material Doc.'.
wa_fcat-outputlen = '15'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'MAKTX'.
wa_fcat-seltext_m = 'Product Name'.
wa_fcat-outputlen = '40'.
wa_fcat-just = 'L'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'XBLNR'.
wa_fcat-seltext_m = 'Bill.No.'.
wa_fcat-just = 'C'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'FRBNR'.
wa_fcat-seltext_m = 'Bill Date'.
wa_fcat-just = 'C'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'BUDAT'.
wa_fcat-seltext_m = 'G.R.Date'.
wa_fcat-outputlen = '10'.
wa_fcat-just = 'C'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'EXNUM'.
wa_fcat-seltext_m = 'Ex.Bill.No.'.
wa_fcat-just = 'C'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'EXDAT'.
wa_fcat-seltext_m = 'Ex.Bill Date'.
wa_fcat-just = 'C'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'CHARG'.
wa_fcat-seltext_m = 'Batch'.
wa_fcat-outputlen = '15'.
wa_fcat-just = 'C'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'MENGE'.
wa_fcat-seltext_m = 'Qty'.
wa_fcat-do_sum = 'Y'.
wa_fcat-outputlen = '15'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'NETPR'.
wa_fcat-seltext_m = 'Basic Rate'.
wa_fcat-do_sum = 'Y'.
wa_fcat-outputlen = '12'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'VERPR'.
wa_fcat-seltext_m = 'Costing Rate'.
wa_fcat-do_sum = 'Y'.
wa_fcat-outputlen = '12'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB_ITM'.
wa_fcat-fieldname = 'DMBTR'.
wa_fcat-seltext_m = 'Amount'.
wa_fcat-do_sum = 'Y'.
wa_fcat-outputlen = '15'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
subtot-spos = 1.
subtot-fieldname = 'NAME1'.
subtot-tabname = 'ITAB_HEAD'.
subtot-up = 'X'.
subtot-group = 'X'.
subtot-subtot = 'X'.
subtot-expa = 'X'.
APPEND subtot TO gt_subtot.
subtot-spos = 2.
subtot-fieldname = 'WGBEZ'.
subtot-tabname = 'ITAB_HEAD'.
subtot-up = 'X'.
subtot-group = 'X'.
subtot-subtot = 'X'.
subtot-expa = 'X'.
APPEND subtot TO gt_subtot.
ENDFORM. "build_cat
*& Form get_data
text
FORM get_data.
SELECT DISTINCT mseg~lifnr INTO CORRESPONDING FIELDS OF TABLE itab_vend
FROM mseg INNER JOIN mkpf
ON msegmblnr = mkpfmblnr
WHERE mkpfbudat IN dt AND mseglifnr IN vend.
LOOP AT itab_vend.
SELECT mseglifnr msegmblnr msegmatnr maktmaktx msegcharg msegmenge msegdmbtr mkpfbudat mkpfxblnr mkpffrbnr ekponetpr ekpomatkl
INTO CORRESPONDING FIELDS OF TABLE itab_data
FROM mseg INNER JOIN mkpf ON
msegmblnr = mkpfmblnr
INNER JOIN ekpo ON
msegebeln = ekpoebeln AND msegmatnr = ekpomatnr
INNER JOIN makt ON
msegmatnr = maktmatnr
WHERE mkpfbudat IN dt AND mseglifnr IN vend AND msegbwart = '101' AND msegebeln <> '' AND ekpo~matkl IN mat_gr.
ENDLOOP.
SORT itab_data BY lifnr matkl matnr mblnr.
LOOP AT itab_data.
CLEAR: ex_doc,ex_dat,mov_pr,name,gr_nm.
MOVE-CORRESPONDING itab_data TO itab_itm.
SELECT SINGLE name1 FROM lfa1 INTO name WHERE lifnr = itab_data-lifnr.
SELECT SINGLE wgbez FROM t023t INTO gr_nm WHERE matkl = itab_data-matkl.
SELECT SINGLE exnum exdat FROM j_1iexchdr INTO (ex_doc,ex_dat) WHERE rdoc = itab_data-mblnr.
SELECT SINGLE verpr INTO mov_pr FROM mbew WHERE matnr = itab_data-matnr AND bwtar = itab_data-charg.
itab_itm-exnum = ex_doc.
itab_itm-exdat = ex_dat.
itab_itm-verpr = mov_pr.
itab_itm-name1 = name.
itab_itm-wgbez = gr_nm.
APPEND itab_itm.
ENDLOOP.
SORT itab_itm . "BY lifnr matkl mblnr matnr charg.
DELETE ADJACENT DUPLICATES FROM itab_itm.
ENDFORM. "get_data
*& Form dis_data
text
FORM dis_data.
alv_keyinfo-header01 = 'LIFNR'.
alv_keyinfo-item01 = 'LIFNR'.
alv_keyinfo-header02 = 'MATKL'.
alv_keyinfo-item02 = 'MATKL'.
REFRESH itab_head.
LOOP AT itab_itm.
ON CHANGE OF itab_itm-lifnr OR itab_itm-matkl .
MOVE-CORRESPONDING itab_itm TO itab_head.
APPEND itab_head.
ENDON.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = 'ZRAW_COST'
it_fieldcat = fcat
it_sort = gt_subtot
i_tabname_header = 'ITAB_HEAD'
i_tabname_item = 'ITAB_ITM'
is_keyinfo = alv_keyinfo
TABLES
t_outtab_header = itab_head
t_outtab_item = itab_itm
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.
ENDFORM. "dis_data -
Hi,
I've a header table with PERSG field and Item table with a FTE field which is numeric.
In the alv for every PERSG field for which there are multiple records in itam table I want to display subtotals.
And if there are no items for the Header Data the record should not be displayed in the Header as well.
find below is my fieldcatalog.
W_FCAT-COL_POS = 1.
W_FCAT-FIELDNAME = 'PERSG'.
W_FCAT-SELTEXT_M = 'EmployeeGroup'.
W_FCAT-TABNAME = 'WT_T501T'.
APPEND W_FCAT TO T_FCAT.
W_FCAT-COL_POS = 2.
W_FCAT-FIELDNAME = 'PTEXT'.
W_FCAT-SELTEXT_M = 'Description'.
W_FCAT-TABNAME = 'WT_T501T'.
APPEND W_FCAT TO T_FCAT.
W_FCAT-COL_POS = 3.
W_FCAT-FIELDNAME = 'PERNR'.
W_FCAT-SELTEXT_M = 'PersonnelNo'.
W_FCAT-TABNAME = 'WT_FINAL_TAB'.
APPEND W_FCAT TO T_FCAT.
W_FCAT-COL_POS = 4.
W_FCAT-FIELDNAME = 'BEGDA'.
W_FCAT-SELTEXT_M = 'StartDate'.
W_FCAT-TABNAME = 'WT_FINAL_TAB'.
APPEND W_FCAT TO T_FCAT.
W_FCAT-COL_POS = 5.
W_FCAT-FIELDNAME = 'ENDDA'.
W_FCAT-SELTEXT_M = 'EndDate'.
W_FCAT-TABNAME = 'WT_FINAL_TAB'.
APPEND W_FCAT TO T_FCAT.
W_FCAT-COL_POS = 6.
W_FCAT-FIELDNAME = 'PERSK'.
W_FCAT-SELTEXT_M = 'EmployeeSubgroup'.
W_FCAT-TABNAME = 'WT_FINAL_TAB'.
APPEND W_FCAT TO T_FCAT.
W_FCAT-COL_POS = 7.
W_FCAT-FIELDNAME = 'CTTYP'.
W_FCAT-SELTEXT_M = 'ContractType'.
W_FCAT-TABNAME = 'WT_FINAL_TAB'.
APPEND W_FCAT TO T_FCAT.
W_FCAT-COL_POS = 8.
W_FCAT-FIELDNAME = 'PROZT'.
W_FCAT-SELTEXT_M = 'WeightagePercentage'.
W_FCAT-TABNAME = 'WT_FINAL_TAB'.
APPEND W_FCAT TO T_FCAT.
W_FCAT-COL_POS = 9.
W_FCAT-FIELDNAME = 'ANSVH'.
W_FCAT-SELTEXT_M = 'WorkContract'.
W_FCAT-TABNAME = 'WT_FINAL_TAB'.
APPEND W_FCAT TO T_FCAT.
W_FCAT-COL_POS = 10.
W_FCAT-FIELDNAME = 'ATX'.
W_FCAT-SELTEXT_M = 'WorkContractText'.
W_FCAT-TABNAME = 'WT_FINAL_TAB'.
APPEND W_FCAT TO T_FCAT.
W_FCAT-COL_POS = 11.
W_FCAT-FIELDNAME = 'VORNA'.
W_FCAT-SELTEXT_M = 'FirstName'.
W_FCAT-TABNAME = 'WT_FINAL_TAB'.
APPEND W_FCAT TO T_FCAT.
W_FCAT-COL_POS = 12.
W_FCAT-FIELDNAME = 'NACHN'.
W_FCAT-SELTEXT_M = 'LastName'.
W_FCAT-TABNAME = 'WT_FINAL_TAB'.
APPEND W_FCAT TO T_FCAT.
W_FCAT-COL_POS = 13.
W_FCAT-FIELDNAME = 'AFTEVA'.
W_FCAT-SELTEXT_M = 'ActiveFTE'.
W_FCAT-DO_SUM = 'X'.
W_FCAT-TABNAME = 'WT_FINAL_TAB'.
APPEND W_FCAT TO T_FCAT.
W_FCAT-COL_POS = 14.
W_FCAT-FIELDNAME = 'AFTEVI'.
W_FCAT-SELTEXT_M = 'InactiveFTE'.
W_FCAT-DO_SUM = 'X'.
W_FCAT-TABNAME = 'WT_FINAL_TAB'.
APPEND W_FCAT TO T_FCAT.
fs_sort_data-fieldname = 'PERSG'.
fs_sort_data-tabname = 'wt_t501t'.
fs_sort_data-spos = 1.
fs_sort_data-up = 'X'.
fs_sort_data-subtot = 'X'.
fs_sort_data-group = 'X'.
APPEND fs_sort_data TO tsort_data.
CLEAR fs_sort_data.
fs_sort_data-fieldname = 'AFTEVA'.
fs_sort_data-tabname = 'wt_final_tab'.
fs_sort_data-spos = 2.
fs_sort_data-up = 'X'.
fs_sort_data-subtot = 'X'.
APPEND fs_sort_data TO tsort_data.
CLEAR fs_sort_data.
fs_sort_data-fieldname = 'AFTEVI'.
fs_sort_data-tabname = 'wt_final_tab'.
fs_sort_data-spos = 3.
fs_sort_data-up = 'X'.
fs_sort_data-subtot = 'X'.
APPEND fs_sort_data TO tsort_data.
CLEAR fs_sort_data.
Kindly suggest.
full points rewarded for the solution
kumarCheck this sample program
TYPE-POOLS: slis.
DATA: BEGIN OF itab OCCURS 0,
vbeln TYPE vbeln,
expand,
END OF itab.
DATA: BEGIN OF itab1 OCCURS 0,
vbeln TYPE vbeln,
posnr TYPE posnr,
matnr TYPE matnr,
netpr TYPE netpr,
END OF itab1.
DATA: t_fieldcatalog TYPE slis_t_fieldcat_alv.
DATA: s_fieldcatalog TYPE slis_fieldcat_alv.
s_fieldcatalog-col_pos = '1'.
s_fieldcatalog-fieldname = 'VBELN'.
s_fieldcatalog-tabname = 'ITAB'.
s_fieldcatalog-rollname = 'VBELN'.
s_fieldcatalog-outputlen = '12'.
APPEND s_fieldcatalog TO t_fieldcatalog.
CLEAR: s_fieldcatalog.
s_fieldcatalog-col_pos = '1'.
s_fieldcatalog-fieldname = 'VBELN'.
s_fieldcatalog-tabname = 'ITAB1'.
s_fieldcatalog-rollname = 'VBELN'.
s_fieldcatalog-outputlen = '12'.
APPEND s_fieldcatalog TO t_fieldcatalog.
CLEAR: s_fieldcatalog.
s_fieldcatalog-col_pos = '2'.
s_fieldcatalog-fieldname = 'POSNR'.
s_fieldcatalog-tabname = 'ITAB1'.
s_fieldcatalog-rollname = 'POSNR'.
APPEND s_fieldcatalog TO t_fieldcatalog.
CLEAR: s_fieldcatalog.
s_fieldcatalog-col_pos = '3'.
s_fieldcatalog-fieldname = 'MATNR'.
s_fieldcatalog-tabname = 'ITAB1'.
s_fieldcatalog-rollname = 'MATNR'.
APPEND s_fieldcatalog TO t_fieldcatalog.
CLEAR: s_fieldcatalog.
s_fieldcatalog-col_pos = '4'.
s_fieldcatalog-fieldname = 'NETPR'.
s_fieldcatalog-tabname = 'ITAB1'.
s_fieldcatalog-rollname = 'NETPR'.
s_fieldcatalog-do_sum = 'X'.
APPEND s_fieldcatalog TO t_fieldcatalog.
CLEAR: s_fieldcatalog.
DATA: s_layout TYPE slis_layout_alv.
s_layout-subtotals_text = 'SUBTOTAL TEXT'.
s_layout-key_hotspot = 'X'.
s_layout-expand_fieldname = 'EXPAND'.
SELECT vbeln UP TO 100 ROWS
FROM vbak
INTO TABLE itab.
IF NOT itab[] IS INITIAL.
SELECT vbeln posnr matnr netpr
FROM vbap
INTO TABLE itab1
FOR ALL ENTRIES IN itab
WHERE vbeln = itab-vbeln.
ENDIF.
DATA: v_repid TYPE syrepid.
v_repid = sy-repid.
DATA: s_keyinfo TYPE slis_keyinfo_alv.
s_keyinfo-header01 = 'VBELN'.
s_keyinfo-item01 = 'VBELN'.
CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
EXPORTING
i_callback_program = v_repid
is_layout = s_layout
it_fieldcat = t_fieldcatalog
i_tabname_header = 'ITAB'
i_tabname_item = 'ITAB1'
is_keyinfo = s_keyinfo
TABLES
t_outtab_header = itab
t_outtab_item = itab1
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. -
Field should not display in the subtotal row in ALV report after sorting .
we have a requirement, after sorting and subtotaling, the output in ALV is -
vbeln amount1 amount2 amount3
123 11 12 13
123 12 13 14
123 23 25 27
133 11 12 13
133 12 13 14
133 23 25 27
Now the customer wants the ALV outpput in this fashion -
123 11 12 13
123 12 13 14
23 25 27 --->123 (vbeln) should not come in subtotaling row
133 11 12 13
133 12 13 14
23 25 27--->133(vbeln) should not come in subtotaling rowHi,
if it helps you could create a hierachy. In this way you can define the field catalog for the lines and for the subtotal columns. The only thing is that you would always show the subtotal rows.
You have references of hierachy alvs in
http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/c060fcb4-2c62-2b10-d2b2-f32407a5cc6f
ALV Hierarchy
alv hierarchy
In this case it also sorts
Sorting for ALV hierarchy
I hope it helps.
Edited by: Oscar Pecharroman on Aug 2, 2010 1:13 PM -
Goods receipt subtotal is showing zero instead sum of quantity..!
Hi Guys,
1. Goods movement subtotal showing 0 instead of the total of the quantity.
The check throwing the following error message.
Update control of movement type is incorrect (entry 122 X X)
Message no. M7226
2. Purchase order data tab not showing item details for variance items but showing the message
"This item has not been ordered." But the PO items are ordered and present in the PO.
Please find the screen shots.
Thanks
SamHi Sam,
Kindly Check table T156SC entries there is a entry missing in the table.
And if required so kindly Maintain the missing entries in table.
If entries of movement type 101 are prefect then
Goto Transaction -- SE37 ,
Function module -- MB_CONTROL_MOVETYPE_GET_SINGLE
Kindly do Set a break point to select statement which is failing at the table above at both the systems.You should be able to crack the error.
Hope this will help you to solve the issue.
And if not Kindly let us know.
Thanks & Regards
Ritesh Kumar -
Transfer from Subtotal in one table to another sheet.
Hi, about a year ago i made a salary application for my production company. This works quite well, but when I supposed to report amounts for each employed to the swedish tax authorities I am still not automatic because I haven't solved how to transfer a subtotal sum to a specific cell in another sheet. I am sure that this has been discussed earlier, but in the searches I have done I can't find a similar question. So if someone has an idea where to look or knows if it is possible.
What I would need is to have a formula like LOOKUP (I guess that is the english formula for looking up references) or similar so that I can identify a Subtotal for a specific class of rows (i.e. salaries for one person).Thanks for the reply. If I understand you correctly the approach is simple an genial. I am all the time using and thinking within the frame of the elegant sorting functions that you find in the tables. Very easy to use when you need a quick result, though as far as I can see impossible to bring with you. But of course just put the conditions i a Sum.if. Simple!
Thanks.
Leif
Maybe you are looking for
-
Previous suggestions said after sys prfs..Printers..I should either open the print queues then go to printer setup then chose driver, or go to options & supplies and then do settings, or in some way click the driver and pick the settings. None of th
-
Data come from difference data source
In my saturation, my program's data are come from difference data source. For example, the program will retrieve PO balance, material consumption, future consumption and so on. In my program logic, i retrieve all of the material number, the retrieve
-
TS3274 My iPad will not show up in My Computer
After updating iTunes last night only to find that Apple Support services would not start, and doing a clean reinstall of iTunes and all its componants, I now have another problem... My iPad will not register on my computer, or iTunes. It wants to co
-
Using Windows 7, from a Google search results, open link on new window or tab, gives a 404 for all links -- Double clicking on link will open a new window with the site with no problem. Thanks hp
-
When ingesting footage via Prelude...
...are all changes made upon ingest, e.g. metadata, markers, etc, included in the results of transcodes done during ingest? My concern is about handing-off footage to others: should I hand-off only trancoded footage? orignal footage from the camera?