Regarding sub totaling in alv
hi,
i am making report in alv in which i have to display the sub totals and den full total.
is it possible to display sub total in ALV acccording to material type wise or itemid wise.
plzz help me with some example.
If find useful he or she will definately rewarded.........
Hi,
The following example for sub totall for ALV report..
u have to pass do_sum = 'X'. for perticuler fileds.
if it is use full answer reward me a points..
*& Report ZDEL_ALV1
*Description: This ALV interactive report is display Delivary
status
REPORT zdel_alv1 NO STANDARD PAGE HEADING LINE-SIZE 255 LINE-COUNT 60.
*TABLE DECLARATION
TABLES : likp, "Delivery Header Data
lips, "Delivery item Data
vbup. "sales document item status
TYPE-POOLS : slis.
*SRUCTURE DECLARATION
*THIS TABLE FOR HEADER DETAILS
TYPES : BEGIN OF t_likp ,
vbeln LIKE likp-vbeln, "Delivery number
kosta like vbup-kosta,
kunnr LIKE likp-kunnr, "Customer number
wadat LIKE likp-wadat, "Planned goods movement date
ernam LIKE likp-ernam, "Name of person
vkorg LIKE likp-vkorg, "Sales organization
lfart LIKE likp-lfart, "DELIVERY TYPE
ntgew LIKE likp-ntgew, "NET WEIGHT
END OF t_likp.
*THIS TABLE FOR ITEM DETAILS
TYPES : BEGIN OF t_lips ,
vbeln LIKE lips-vbeln, "Delivery number
posnr LIKE lips-posnr, "delivery item
matnr LIKE lips-matnr, "Material number
lfimg LIKE lips-lfimg, "Actual quantity delivered
ntgew LIKE lips-ntgew, "Net weight
exbwr LIKE lips-exbwr, "Externally entered posting amount
arktx LIKE lips-arktx, "Short text SO Item
END OF t_lips.
*THIS IS FOR FINAL OUTPUT
TYPES : BEGIN OF t_vbup ,
vbeln LIKE likp-vbeln, "Delivery number
kosta LIKE vbup-kosta, "Picking status/Putaway status
posnr LIKE vbup-posnr, "delivery item
matnr LIKE lips-matnr, "Material number
lfimg LIKE lips-lfimg, "Actual quantity delivered
ntgew LIKE lips-ntgew, "Net weight
exbwr LIKE lips-exbwr, "Externally entered posting amount
arktx LIKE lips-arktx, "SHORT text SO Item
description(20), "for display text
END OF t_vbup.
*INTERNAL TABLES
DATA : i_likp TYPE STANDARD TABLE OF t_likp.
DATA : i_lips TYPE STANDARD TABLE OF t_lips.
DATA : i_vbup TYPE STANDARD TABLE OF t_vbup.
DATA : repid LIKE sy-repid.
DATA : delivar1(10) TYPE c.
*WORK AREA
DATA : wa_likp TYPE t_likp.
DATA : wa_lips TYPE t_lips.
DATA : wa_vbup TYPE t_vbup.
DATA: i_vbup1 LIKE wa_vbup OCCURS 0 WITH HEADER LINE.
*SLIS TABLE DECLARATIONS
DATA: i_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
i_events TYPE slis_t_event,
w_events TYPE slis_alv_event,
i_fieldcat1 TYPE slis_t_fieldcat_alv WITH HEADER LINE,
i_layout TYPE slis_layout_alv.
*SELECTING RANGE OF VALUES
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_vbeln FOR likp-vbeln,
s_kunnr FOR likp-kunnr,
s_wadat FOR likp-wadat.
SELECTION-SCREEN END OF BLOCK b1 .
*CHOOSE ONE CHECK BOX FOR DISPLAYING THE DELIVARY STATUS
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS : cb_kostc AS CHECKBOX,"DEFAULT 'X',
cb_kosta AS CHECKBOX,
cb_kostb AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK b2.
*INTIALIZATION CHECK
INITIALIZATION.
repid = sy-repid.
*START-OF-SELECTION
START-OF-SELECTION.
PERFORM get_data.
PERFORM get_field.
PERFORM GET_EVENTS.
PERFORM display.
*END-OF-SELECTION
END-OF-SELECTION.
*& Form RUCOMM
This form getting details from lips table for displaying
the item details and all select statements for delivary status
-->R_UCOMM text
-->RS_SELFIELDtext
FORM user_command USING r_ucomm LIKE sy-ucomm rs_selfield TYPE
slis_selfield.
IF rs_selfield-fieldname = 'VBELN'.
delivar1 = rs_selfield-value.
ENDIF.
IF cb_kostc = 'X'.
SELECT VBELN KOSTA FROM VBUP
INTO TABLE I_VBUP
WHERE VBELN IN DELIVAR
AND KOSTA = 'C'.
SELECT VBELN MATNR LFIMG EXBWR INTO TABLE I_LIPS FROM LIPS
WHERE VBELN EQ DELIVAR1.
REFRESH i_vbup1[].
CLEAR i_vbup1.
SELECT avbeln akosta bposnr bmatnr blfimg bntgew b~exbwr
b~arktx
INTO TABLE i_vbup
FROM vbup AS a INNER JOIN lips AS b
ON avbeln = bvbeln
WHERE a~vbeln EQ delivar1
AND kosta = 'C'.
ELSEIF cb_kosta = 'X'.
SELECT VBELN KOSTA FROM VBUP
INTO TABLE I_VBUP
WHERE VBELN IN DELIVAR
AND KOSTA = 'A'.
SELECT avbeln akosta bposnr bmatnr blfimg bntgew b~exbwr
b~arktx
INTO TABLE i_vbup
FROM vbup AS a INNER JOIN lips AS b
ON avbeln = bvbeln
WHERE a~vbeln EQ delivar1
AND kosta = 'A'.
ELSEIF cb_kostb = 'X'.
SELECT VBELN KOSTA FROM VBUP
INTO TABLE I_VBUP
WHERE VBELN IN DELIVAR
AND KOSTA = 'B'.
SELECT avbeln akosta bposnr bmatnr blfimg bntgew b~exbwr
b~arktx
INTO TABLE i_vbup
FROM vbup AS a INNER JOIN lips AS b
ON avbeln = bvbeln
WHERE a~vbeln EQ delivar1
AND kosta = 'B'.
ENDIF.
CLEAR i_vbup1.
LOOP AT i_vbup INTO wa_vbup.
i_vbup1-vbeln = wa_vbup-vbeln.
i_vbup1-kosta = wa_vbup-kosta.
IF wa_vbup-kosta = 'C'.
i_vbup1-description = 'COMPLETELY PROCESSED'.
ELSEIF wa_vbup-kosta = 'B'.
i_vbup1-description = 'PARTIALLY PROCESSED'.
ELSEIF wa_vbup-kosta = 'A'.
i_vbup1-description = 'NOT YET PROCESSED'.
ENDIF.
i_vbup1-posnr = wa_vbup-posnr.
i_vbup1-matnr = wa_vbup-matnr.
i_vbup1-lfimg = wa_vbup-lfimg.
i_vbup1-ntgew = wa_vbup-ntgew.
i_vbup1-exbwr = wa_vbup-exbwr.
i_vbup1-arktx = wa_vbup-arktx.
APPEND i_vbup1 .
ENDLOOP.
SORT i_vbup1 BY vbeln matnr lfimg.
DELETE ADJACENT DUPLICATES FROM i_vbup1 COMPARING vbeln matnr lfimg.
SELECT VBELN MATNR LFIMG EXBWR INTO TABLE I_LIPS FROM LIPS
WHERE VBELN EQ DELIVAR1.
*This function module for displaying the item details
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = repid
it_fieldcat = i_fieldcat1[]
i_callback_top_of_page = 'TOP_OF_PAGE'
i_callback_user_command = 'USER_COMMAND1'
it_events = i_events
TABLES
t_outtab = i_vbup1
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.
CLEAR i_vbup1.
ENDFORM. "RUCOMM
*& Form USER_COMMAND1
text
-->R_UCOMM1 text
-->RS_SELFIELDtext
FORM user_command1 USING r_ucomm1 LIKE sy-ucomm rs_selfield1 TYPE
slis_selfield.
DATA: deliv(10) TYPE c.
IF rs_selfield1 = 'VBELN'.
deliv = rs_selfield1-value.
ENDIF.
SET PARAMETER ID 'VL' FIELD delivar1.
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
ENDFORM. "USER_COMMAND1
*& Form GET_DATA
This form for getting the data from likp table
--> p1 text
<-- p2 text
FORM get_data .
SELECT VBELN KUNNR WADAT FROM LIKP INTO TABLE I_LIKP
WHERE VBELN IN S_VBELN
AND KUNNR IN S_KUNNR
AND WADAT IN S_WADAT.
REFRESH i_likp[].
CLEAR i_likp.
IF cb_kostc = 'X' AND cb_kosta = ' ' AND cb_kostb = ''.
SELECT avbeln akosta bkunnr bwadat bernam bvkorg blfart bntgew
INTO TABLE i_likp
FROM vbup AS a INNER JOIN likp AS b
ON avbeln = bvbeln
WHERE
b~kunnr IN s_kunnr
AND b~vbeln IN s_vbeln
AND b~wadat IN s_wadat
AND a~kosta = 'C'.
ELSEIF cb_kosta = 'X' AND cb_kostb = ' ' AND cb_kostc = ''.
SELECT avbeln akosta bkunnr bwadat bernam bvkorg blfart bntgew
INTO TABLE i_likp
FROM vbup AS a INNER JOIN likp AS b
ON avbeln = bvbeln
WHERE
b~kunnr IN s_kunnr
AND b~vbeln IN s_vbeln
AND b~wadat IN s_wadat
AND a~kosta = 'A'.
ELSEIF cb_kostb = 'X' AND cb_kosta = '' AND cb_kostc = ''.
SELECT avbeln akosta bkunnr bwadat bernam bvkorg blfart bntgew
INTO TABLE i_likp
FROM vbup AS a INNER JOIN likp AS b
ON avbeln = bvbeln
WHERE
b~kunnr IN s_kunnr
AND b~vbeln IN s_vbeln
AND b~wadat IN s_wadat
AND kosta = 'B'.
ELSEIF cb_kostc = 'X' AND cb_kosta = 'X' AND cb_kostb = 'X'.
SELECT avbeln akosta bkunnr bwadat bernam bvkorg blfart bntgew
INTO TABLE i_likp
FROM vbup AS a INNER JOIN likp AS b
ON avbeln = bvbeln
WHERE
b~kunnr IN s_kunnr
AND b~vbeln IN s_vbeln
AND b~wadat IN s_wadat
AND kosta NE ' '.
ENDIF.
DELETE ADJACENT DUPLICATES FROM i_likp.
ENDFORM. " GET_DATA
*& Form GET_FIELD
This form for defining the every fields from likp & lips tables
FORM get_field .
*This fields are retrieving from header table(likp)
CLEAR i_fieldcat.
i_fieldcat-fieldname = 'VBELN'.
i_fieldcat-seltext_m = 'SALES ORDER NO'.
APPEND i_fieldcat TO i_fieldcat.
CLEAR i_fieldcat.
i_fieldcat-fieldname = 'KUNNR'.
i_fieldcat-seltext_m = 'CUSTOMER NO'.
APPEND i_fieldcat TO i_fieldcat.
CLEAR i_fieldcat.
i_fieldcat-fieldname = 'WADAT'.
i_fieldcat-seltext_m = 'DATE'.
APPEND i_fieldcat TO i_fieldcat.
CLEAR i_fieldcat.
i_fieldcat-fieldname = 'ERNAM'.
i_fieldcat-seltext_m = 'NAME OF PERSON'.
APPEND i_fieldcat TO i_fieldcat.
CLEAR i_fieldcat.
i_fieldcat-fieldname = 'VKORG'.
i_fieldcat-seltext_m = 'SALES ORGANIZATION'.
APPEND i_fieldcat TO i_fieldcat.
CLEAR i_fieldcat.
i_fieldcat-fieldname = 'LFART'.
i_fieldcat-seltext_m = 'DELIVERY TYPE'.
APPEND i_fieldcat TO i_fieldcat.
CLEAR i_fieldcat.
i_fieldcat-fieldname = 'NTGEW'.
i_fieldcat-seltext_m = 'NET WEIGHT'.
i_fieldcat-do_sum = 'X'.
APPEND i_fieldcat TO i_fieldcat.
CLEAR i_fieldcat.
*This fields are retrieving from item table(lips)
CLEAR i_fieldcat1.
i_fieldcat1-fieldname = 'VBELN'.
i_fieldcat1-seltext_m = 'DELIVAR NO'.
APPEND i_fieldcat1 TO i_fieldcat1.
CLEAR i_fieldcat1.
i_fieldcat1-fieldname = 'POSNR'.
i_fieldcat1-seltext_m = 'DELIVERY ITEM'.
APPEND i_fieldcat1 TO i_fieldcat1.
CLEAR i_fieldcat1.
i_fieldcat1-fieldname = 'MATNR'.
i_fieldcat1-seltext_m = 'MATERIAL NO'.
APPEND i_fieldcat1 TO i_fieldcat1.
CLEAR i_fieldcat1.
i_fieldcat1-fieldname = 'LFIMG'.
i_fieldcat1-seltext_m = 'ACTUAL QUANTITY'.
i_fieldcat1-do_sum = 'X'.
APPEND i_fieldcat1 TO i_fieldcat1.
CLEAR i_fieldcat1.
i_fieldcat1-fieldname = 'NTGEW'.
i_fieldcat1-seltext_m = 'NET WEIGHT'.
i_fieldcat1-do_sum = 'X'.
APPEND i_fieldcat1 TO i_fieldcat1.
CLEAR i_fieldcat1.
i_fieldcat1-fieldname = 'EXBWR'.
i_fieldcat1-seltext_m = 'AMOUNT'.
APPEND i_fieldcat1 TO i_fieldcat1.
CLEAR i_fieldcat1.
i_fieldcat1-fieldname = 'ARKTX'.
i_fieldcat1-seltext_m = 'SHORT TEXT FOR so ITEM'.
APPEND i_fieldcat1 TO i_fieldcat1.
CLEAR i_fieldcat1.
i_fieldcat1-fieldname = 'DESCRIPTION'.
i_fieldcat1-seltext_m = 'PICKING STATUS'.
APPEND i_fieldcat1 TO i_fieldcat1.
CLEAR i_fieldcat1.
ENDFORM. " GET_FIELD
*& Form GET_EVENTS
This form defining the events
*FORM GET_EVENTS .
CLEAR W_EVENTS.
W_EVENTS-NAME = 'USER_COMMAND'.
W_EVENTS-FORM = 'RUCOMM'.
APPEND W_EVENTS TO I_EVENTS.
*ENDFORM. " GET_EVENTS
*& Form DISPLAY
This form is going to display header details from likp table
FORM display .
*This function module for displaying the header details
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = repid
i_callback_top_of_page = 'TOP-OF-PAGE'
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = i_fieldcat[]
i_save = 'X'
it_events = i_events
TABLES
t_outtab = i_likp
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. " DISPLAY
*& Form TOP-OF-PAGE
This form is going to display top-of-page header text
FORM top-of-page.
DATA: i_list_comments TYPE slis_t_listheader.
DATA: w_list_comments TYPE slis_listheader.
CLEAR: i_list_comments[].
w_list_comments-typ = 'H'. "H=Header, S=Selection, A=Action
w_list_comments-info = 'DELIVERY ORDER DETAILS'.
APPEND w_list_comments TO i_list_comments.
w_list_comments-typ = 'A'. " H = Header, S = Selection, A = Action
w_list_comments-info = 'Basic list'.
APPEND w_list_comments TO i_list_comments.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = 'enjoy'
it_list_commentary = i_list_comments.
ENDFORM. "TOP-OF-PAGE
*& Form TOP_OF_PAGE
This form is going to display top-of-page item text
FORM top_of_page.
DATA: i_list_comments TYPE slis_t_listheader.
DATA: w_list_comments TYPE slis_listheader.
DATA : i_line LIKE w_list_comments-info.
CONCATENATE 'DELIVERY ITEM DETAILS :' delivar1 INTO i_line .
SEPARATED BY SPACE.
CLEAR: i_list_comments[].
w_list_comments-typ = 'H'. "H=Header, S=Selection, A=Action
w_list_comments-info = i_line.
APPEND w_list_comments TO i_list_comments.
w_list_comments-typ = 'A'. " H = Header, S = Selection, A = Action
w_list_comments-info = 'Secondary list'.
APPEND w_list_comments TO i_list_comments.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
i_logo = 'enjoy'
it_list_commentary = i_list_comments.
ENDFORM. "TOP_OF_PAGE
Similar Messages
-
URGENT:-Regarding sub-total in alv code
Hi,
i had made dis report and it is working fine but now i want to add the sub total feature in dis report as it is the new requierment of report.
plzz help me out by providing the code of sub-total feature in dis report .
Help will be definately rewarded. here is d code of report:-
TABLES: ISEG,MARA.
TYPE-POOLS : SLIS.
DATA : DATE1(15) TYPE C,
DATE2(15) TYPE C,
TITLE(65) TYPE C,
DT(25) TYPE C.
DATA : ITEVENT TYPE SLIS_T_EVENT.
DATA: lv_sort TYPE slis_sortinfo_alv,
t_sort type slis_t_sortinfo_alv.
DATA : repid LIKE sy-repid.
INTERNAL TABLE FOR INVENTORY STOCK *****************
DATA: BEGIN OF ITS1 OCCURS 0,
MATNR LIKE ISEG-MATNR,
ITEMID(6) TYPE C,
MEINS LIKE ISEG-MEINS,
MENGE LIKE ISEG-MENGE,
WRTZL LIKE ISEG-WRTZL,
BUCHM LIKE ISEG-BUCHM,
WRTBM LIKE ISEG-WRTBM,
WERKS LIKE ISEG-WERKS,
BUDAT LIKE ISEG-BUDAT,
ZLDAT LIKE ISEG-ZLDAT,
MTART LIKE MARA-MTART,
ITEMDESC LIKE MAKT-MAKTX,
DIFFQTY LIKE ISEG-BUCHM,
DIFFVALUE LIKE ISEG-WRTBM,
GRUND LIKE ISEG-GRUND,
GRTXT LIKE T157E-GRTXT,
BWART LIKE T157E-BWART,
REAS TYPE C LENGTH 15,
END OF ITS1.
data: t_heading type slis_t_listheader.
SELECTION-SCREEN BEGIN OF BLOCK PAR1 WITH FRAME TITLE TEXT-001.
*SELECTION-SCREEN : BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
*********PARAMETERS*********
PARAMETERS : PLANT LIKE ISEG-WERKS OBLIGATORY.
*********SELECTION SCREEN OPTIONS*********
SELECT-OPTIONS : R_DATE FOR ISEG-BUDAT OBLIGATORY NO-EXTENSION,
M_TYPE FOR MARA-MTART,
IT_M FOR MARA-MATNR.
*********DEFINING VARIABLES*********
SELECTION-SCREEN END OF BLOCK par1.
CONCATENATE R_DATE-LOW6(2) '.' R_DATE-LOW4(2) '.' R_DATE-LOW+0(4) INTO DATE1.
CONCATENATE R_DATE-HIGH6(2) '.' R_DATE-HIGH4(2) '.' R_DATE-HIGH+0(4) INTO DATE2.
TOP-OF-PAGE.
PERFORM PG_HEADER.
START-OF-SELECTION.
SELECT AMATNR AMEINS AMENGE AWRTZL ABUCHM AWRTBM AWERKS ABUDAT AZLDAT BMTART AGRUND CBWART
FROM ISEG AS A INNER JOIN MARA AS B ON BMATNR = AMATNR
INNER JOIN MSEG AS C ON AMBLNR = CMBLNR
INTO CORRESPONDING FIELDS OF TABLE ITS1 WHERE BMATNR = AMATNR AND BMEINS = AMEINS AND AWERKS = PLANT AND ABUDAT IN R_DATE AND BMTART IN M_TYPE AND BMATNR IN IT_M.
SORT ITS1 BY MTART.
LOOP AT ITS1.
ITS1-ITEMID = ITS1-MATNR+12(6).
ITS1-DIFFQTY = ITS1-MENGE - ITS1-BUCHM.
ITS1-DIFFVALUE = ITS1-WRTZL - ITS1-WRTBM.
SELECT SINGLE MAKTX FROM MAKT INTO ITS1-ITEMDESC WHERE MATNR = ITS1-MATNR.
SELECT SINGLE GRTXT INTO ITS1-GRTXT FROM T157E WHERE GRUND = ITS1-GRUND AND SPRAS = 'E' AND BWART = ITS1-BWART.
MODIFY ITS1.
ENDLOOP.
PERFORM PRN_SMSTOCK_ALV.
WRITING DATA FROM D TABLES**********
FORM PG_HEADER.
WRITE : 'INVENTORY REPORT PLANT : ', PLANT.
ENDFORM.
*& Form PRN_SMSTOCK_ALV
text
--> p1 text
<-- p2 text
form PRN_SMSTOCK_ALV .
data: w_title type lvc_title,
w_repid type syrepid,
w_comm type slis_formname,
w_status type slis_formname,
x_layout type slis_layout_alv,
t_event type slis_t_event,
t_fieldcat type slis_t_fieldcat_alv,
t_subtot TYPE slis_t_sortinfo_alv,
subtot LIKE LINE OF t_subtot.
refresh t_fieldcat.
refresh t_event.
refresh t_sort.
clear x_layout.
clear w_title.
perform set_fieldcat2 using:
1 'MTART' 'MTART' 'MARA' '15' space 'MATERIAL TYPE' space space space space space space space space SPACE t_fieldcat 'L' 'L',
2 'ITEMID' 'ITEMID' 'MARA' '7' space 'ITEM ID' space space space space space space space space SPACE t_fieldcat 'R' 'C',
3 'ITEMDESC' 'MAKTX' 'MAKT' '25' space 'MATERIAL DESCRIPTION' space space space space space space space space SPACE t_fieldcat 'L' 'C',
4 'MEINS' 'MEINS' 'MARA' '5' space 'UOM' space space space space space space space space SPACE t_fieldcat 'C' 'C',
5 'MENGE' 'MENGE' 'ISEG' '13' space 'ORG.INV.QTY' space space space space space space space space SPACE t_fieldcat 'R' 'C',
6 'WRTZL' 'WRTZL' 'ISEG' '13' space 'ORG.INV.VALUE' space space space space space space space space SPACE t_fieldcat 'R' 'C',
7 'BUCHM' 'BUCHM' 'ISEG' '13' space 'PHY.INV.QTY' space space space space space space space space SPACE t_fieldcat 'R' 'C',
8 'WRTBM' 'WRTBM' 'ISEG' '13' space 'PHY.INV.VALUE' space space space space space space space space SPACE t_fieldcat 'R' 'C',
9 'DIFFQTY' 'MENGE' 'ISEG' '13' space 'DIFF.INV.QTY' space space space space space space space space SPACE t_fieldcat 'R' 'C',
10 'DIFFVALUE' 'WRTZL' 'ISEG' '13' space 'DIFF.INV.VALUE' space space space space space space space space SPACE t_fieldcat SPACE 'P',
11 'BUDAT' 'BUDAT' 'ISEG' '18' space 'CORRECTED DATE' space space space space space space space space SPACE t_fieldcat 'C' 'C',
12 'GRTXT' 'GRTXT' 'ISEG' '18' space 'REASON' space space space space space space space space SPACE t_fieldcat 'L' 'L',
13 'REAS' 'REAS' 'ISEG' '18' space 'AUTH.BY' space space space space space space space space SPACE t_fieldcat 'C' 'C'.
x_layout-zebra = 'X'.
perform set_top_page_heading using t_heading t_event.
perform set_events using t_event.
w_status = ''.
w_repid = sy-repid.
w_comm = 'USER_COMMAND'.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = w_repid
it_fieldcat = t_fieldcat
i_Callback_top_of_page = 'Top-of-page'
is_layout = x_layout
it_sort = t_sort
i_callback_pf_status_set = w_status
i_callback_user_command = w_comm
i_save = 'X'
it_events = t_event
i_grid_title = w_title
tables
t_outtab = ITS1
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.
FORM set_fieldcat2 USING
p_colpos p_fieldname p_ref_fieldname p_ref_tabname
p_outputlen p_noout
p_seltext_m p_seltext_l p_seltext_s p_reptext_ddic p_ddictxt
p_hotspot p_showasicon p_checkbox p_edit
p_dosum
p_subtot
t_fieldcat TYPE slis_t_fieldcat_alv
P_JUST
P_FTYPE.
DATA: wa_fieldcat TYPE slis_fieldcat_alv.
CLEAR wa_fieldcat.
General settings
wa_fieldcat-fieldname = p_fieldname.
wa_fieldcat-col_pos = p_colpos.
wa_fieldcat-no_out = p_noout.
wa_fieldcat-hotspot = p_hotspot.
wa_fieldcat-checkbox = p_checkbox.
wa_fieldcat-icon = p_showasicon.
wa_fieldcat-do_sum = p_dosum.
Set output length.
IF NOT p_outputlen IS INITIAL.
wa_fieldcat-outputlen = p_outputlen.
ENDIF.
Set text headers.
IF NOT p_seltext_m IS INITIAL.
wa_fieldcat-seltext_m = p_seltext_m.
ENDIF.
IF NOT p_seltext_l IS INITIAL.
wa_fieldcat-seltext_l = p_seltext_l.
ENDIF.
IF NOT p_seltext_s IS INITIAL.
wa_fieldcat-seltext_s = p_seltext_s.
ENDIF.
IF NOT p_reptext_ddic IS INITIAL.
wa_fieldcat-reptext_ddic = p_reptext_ddic.
ENDIF.
IF NOT p_ddictxt IS INITIAL.
wa_fieldcat-ddictxt = p_ddictxt.
ENDIF.
IF NOT P_JUST IS INITIAL.
WA_FIELDCAT-JUST = P_JUST.
ENDIF.
IF NOT p_edit IS INITIAL.
wa_fieldcat-Input = 'X'.
wa_fieldcat-edit = 'X'.
wa_fieldcat-do_sum = 'x'.
wa_fieldcat-checkbox = 'x'.
wa_fieldcat-hotspot = 'x'.
ENDIF.
APPEND wa_fieldcat TO t_fieldcat.
ENDFORM. "set_fieldcat2
======================== Subroutines called by ALV ================
*& Form top_of_page
Called on top_of_page ALV event.
Prints the heading.
form top_of_page.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = t_heading.
ENDFORM.
form set_top_page_heading using t_heading type slis_t_listheader
t_events type slis_t_event.
data: x_heading type slis_listheader,
x_event type line of slis_t_event.
Report title
clear t_heading[].
clear x_heading.
x_heading-typ = 'H'.
x_heading-info = 'PHYSICAL INVENTORY AUDIT REPORT'.
append x_heading to t_heading.
Plant Name
clear x_heading.
x_heading-typ = 'S'.
x_heading-key = 'PLANT : '.
x_heading-info = PLANT.
append x_heading to t_heading.
IF DATE2 = '00.00.0000'.
CONCATENATE DATE1 'to' DATE1 INTO DT SEPARATED BY SPACE.
ELSE.
CONCATENATE DATE1 'to' DATE2 INTO DT SEPARATED BY SPACE.
ENDIF.
X_heading-TYP = 'S'.
X_heading-key = 'PERIOD :'.
X_heading-INFO = DT.
APPEND x_heading TO t_heading.
Control Date
clear x_heading.
x_heading-typ = 'S'.
x_heading-key = 'CONTROL NO. :'.
x_heading-info = ' ASDFADDFAAS DATE : 11.04.2007'.
append x_heading to t_heading.
Top of page event
x_event-name = slis_ev_top_of_page.
x_event-form = 'TOP_OF_PAGE'.
append x_event to t_events.
endform.
form set_events using t_events type slis_t_event.
data: x_event type line of slis_t_event.
endform.
Edited by: ric .s on Jan 29, 2008 5:21 AMHi,
U can do subtotal for a field based on some other field in ur ALV report using slis_t_sortinfo_alv.
see the sample code below...
data: int_sort TYPE slis_t_sortinfo_alv,
fs_sort TYPE slis_sortinfo_alv.
Sort the output based on ORG UNIT.
CLEAR fs_sort.
fs_sort-fieldname = 'ORGEH'.
fs_sort-subtot = 'X'.
fs_sort-up = 'X'.
APPEND fs_sort TO int_sort.
perform f_alv_catsfieldcat.
Fieldcat calculates the sum for SMPCNT field.
FORM f_alv_catsfieldcat.
DATA: loc_fieldcat TYPE slis_fieldcat_alv.
DEFINE define_field.
clear loc_fieldcat.
loc_fieldcat-fieldname = &1.
loc_fieldcat-seltext_l = &2.
loc_fieldcat-key = &3.
loc_fieldcat-outputlen = &4.
loc_fieldcat-do_sum = &5.
append loc_fieldcat to int_fieldcat.
END-OF-DEFINITION.
REFRESH int_fieldcat.
CLEAR int_fieldcat.
define_field 'PERNR' text-029 'X' '8' ''.
define_field 'ENAME' text-030 '' '40' ''.
define_field 'KOSTL' text-037 '' '10' ''.
define_field 'SMPCNT' text-040 '' '' 'X'.
endform.
Then call REUSE_ALV-GRID_DISPLAY with ur internal table with int_sort.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_top_of_page = 'TOP_OF_PAGE'
it_sort = int_sort
i_callback_pf_status_set = 'F_PF_STATUS_SET'
i_callback_user_command = 'F_USER_COMMAND'
it_fieldcat = int_fieldcat
i_save = 'X'
TABLES
t_outtab = int_outputcpy
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
WRITE / 'error'.
ENDIF.
Hope it will help u..
Reward points if helpful
Cheers,
Shanthi
Edited by: shanthi ps on Jan 29, 2008 5:37 AM
Edited by: shanthi ps on Jan 29, 2008 5:38 AM -
Urgent: regarding sub total button in alv report
hi,
i had made dis report and it is is fine till now,but now i want add the sub total field in it ,by making double click on the field sub-total should be displayed in it.
here is d code as i had tried the sub - total but when i execute it is giving some diferrent result.
*& Report ZTET2
REPORT ZTET2.
TABLES: ISEG,MARA.
TYPE-POOLS : SLIS.
DATA : DATE1(15) TYPE C,
DATE2(15) TYPE C,
TITLE(65) TYPE C,
DT(25) TYPE C.
DATA : ITEVENT TYPE SLIS_T_EVENT.
DATA: lv_sort TYPE slis_sortinfo_alv,
t_sort type slis_t_sortinfo_alv.
DATA : repid LIKE sy-repid.
INTERNAL TABLE FOR INVENTORY STOCK *****************
DATA: BEGIN OF ITS1 OCCURS 0,
MATNR LIKE ISEG-MATNR,
ITEMID(6) TYPE C,
MEINS LIKE ISEG-MEINS,
MENGE LIKE ISEG-MENGE,
WRTZL LIKE ISEG-WRTZL,
BUCHM LIKE ISEG-BUCHM,
WRTBM LIKE ISEG-WRTBM,
WERKS LIKE ISEG-WERKS,
BUDAT LIKE ISEG-BUDAT,
ZLDAT LIKE ISEG-ZLDAT,
MTART LIKE MARA-MTART,
ITEMDESC LIKE MAKT-MAKTX,
DIFFQTY LIKE ISEG-BUCHM,
DIFFVALUE LIKE ISEG-WRTBM,
GRUND LIKE ISEG-GRUND,
GRTXT LIKE T157E-GRTXT,
BWART LIKE T157E-BWART,
REAS TYPE C LENGTH 15,
END OF ITS1.
data: t_heading type slis_t_listheader.
SELECTION-SCREEN BEGIN OF BLOCK PAR1 WITH FRAME TITLE TEXT-001.
*SELECTION-SCREEN : BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
*********PARAMETERS*********
PARAMETERS : PLANT LIKE ISEG-WERKS OBLIGATORY.
*********SELECTION SCREEN OPTIONS*********
SELECT-OPTIONS : R_DATE FOR ISEG-BUDAT OBLIGATORY NO-EXTENSION,
M_TYPE FOR MARA-MTART,
IT_M FOR MARA-MATNR.
*********DEFINING VARIABLES*********
SELECTION-SCREEN END OF BLOCK par1.
CONCATENATE R_DATE-LOW6(2) '.' R_DATE-LOW4(2) '.' R_DATE-LOW+0(4) INTO DATE1.
CONCATENATE R_DATE-HIGH6(2) '.' R_DATE-HIGH4(2) '.' R_DATE-HIGH+0(4) INTO DATE2.
TOP-OF-PAGE.
PERFORM PG_HEADER.
START-OF-SELECTION.
SELECT AMATNR AMEINS AMENGE AWRTZL ABUCHM AWRTBM AWERKS ABUDAT AZLDAT BMTART AGRUND CBWART
FROM ISEG AS A INNER JOIN MARA AS B ON BMATNR = AMATNR
INNER JOIN MSEG AS C ON AMBLNR = CMBLNR
INTO CORRESPONDING FIELDS OF TABLE ITS1 WHERE BMATNR = AMATNR AND BMEINS = AMEINS AND AWERKS = PLANT AND ABUDAT IN R_DATE AND BMTART IN M_TYPE AND BMATNR IN IT_M.
LOOP AT ITS1.
ITS1-ITEMID = ITS1-MATNR+12(6).
ITS1-DIFFQTY = ITS1-MENGE - ITS1-BUCHM.
ITS1-DIFFVALUE = ITS1-WRTZL - ITS1-WRTBM.
SELECT SINGLE MAKTX FROM MAKT INTO ITS1-ITEMDESC WHERE MATNR = ITS1-MATNR.
SELECT SINGLE GRTXT INTO ITS1-GRTXT FROM T157E WHERE GRUND = ITS1-GRUND AND SPRAS = 'E' AND BWART = ITS1-BWART.
MODIFY ITS1.
ENDLOOP.
PERFORM PRN_SMSTOCK_ALV.
WRITING DATA FROM D TABLES**********
FORM PG_HEADER.
WRITE : 'PHYSICAL INVENTORY AUDIT REPORT PLANT : ', PLANT.
ENDFORM.
*& Form PRN_SMSTOCK_ALV
text
--> p1 text
<-- p2 text
form PRN_SMSTOCK_ALV .
data: w_title type lvc_title,
w_repid type syrepid,
w_comm type slis_formname,
w_status type slis_formname,
x_layout type slis_layout_alv,
t_event type slis_t_event,
t_fieldcat type slis_t_fieldcat_alv,
t_subtot TYPE slis_t_sortinfo_alv,
subtot LIKE LINE OF t_subtot.
refresh t_fieldcat.
refresh t_event.
refresh t_sort.
clear x_layout.
clear w_title.
perform set_fieldcat2 using:
1 'MTART' 'MTART' 'MARA' '15' space 'MATERIAL TYPE' space space space space space space space space SPACE t_fieldcat 'L' 'L',
2 'ITEMID' 'ITEMID' 'MARA' '7' space 'ITEM ID' space space space space space space space space SPACE t_fieldcat 'R' 'C',
3 'ITEMDESC' 'MAKTX' 'MAKT' '25' space 'MATERIAL DESCRIPTION' space space space space space space space space SPACE t_fieldcat 'L' 'C',
4 'MEINS' 'MEINS' 'MARA' '5' space 'UOM' space space space space space space space space SPACE t_fieldcat 'C' 'C',
5 'MENGE' 'MENGE' 'ISEG' '13' space 'ORG.INV.QTY' space space space space space space space space SPACE t_fieldcat 'R' 'C',
6 'WRTZL' 'WRTZL' 'ISEG' '13' space 'ORG.INV.VALUE' space space space space space space space space SPACE t_fieldcat 'R' 'C',
7 'BUCHM' 'BUCHM' 'ISEG' '13' space 'PHY.INV.QTY' space space space space space space space space SPACE t_fieldcat 'R' 'C',
8 'WRTBM' 'WRTBM' 'ISEG' '13' space 'PHY.INV.VALUE' space space space space space space space space SPACE t_fieldcat 'R' 'C',
9 'DIFFQTY' 'MENGE' 'ISEG' '13' space 'DIFF.INV.QTY' space space space space space space space space SPACE t_fieldcat 'R' 'C',
10 'DIFFVALUE' 'WRTZL' 'ISEG' '13' space 'DIFF.INV.VALUE' space space space space space space space space SPACE t_fieldcat SPACE 'P',
11 'BUDAT' 'BUDAT' 'ISEG' '18' space 'CORRECTED DATE' space space space space space space space space SPACE t_fieldcat 'C' 'C',
12 'GRTXT' 'GRTXT' 'ISEG' '18' space 'REASON' space space space space space space space space SPACE t_fieldcat 'L' 'L',
13 'REAS' 'REAS' 'ISEG' '18' space 'AUTH.BY' space space space space space space space space SPACE t_fieldcat 'C' 'C'.
x_layout-zebra = 'X'.
perform set_top_page_heading using t_heading t_event.
perform set_events using t_event.
perform get_subtotals.
w_status = ''.
w_repid = sy-repid.
w_comm = 'USER_COMMAND'.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = w_repid
it_fieldcat = t_fieldcat
i_Callback_top_of_page = 'Top-of-page'
is_layout = x_layout
it_sort = t_sort
i_callback_pf_status_set = w_status
i_callback_user_command = w_comm
i_save = 'X'
it_events = t_event
i_grid_title = w_title
tables
t_outtab = ITS1
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.
FORM set_fieldcat2 USING
p_colpos p_fieldname p_ref_fieldname p_ref_tabname
p_outputlen p_noout
p_seltext_m p_seltext_l p_seltext_s p_reptext_ddic p_ddictxt
p_hotspot p_showasicon p_checkbox p_edit
p_dosum
p_subtot
t_fieldcat TYPE slis_t_fieldcat_alv
P_JUST
P_FTYPE.
DATA: wa_fieldcat TYPE slis_fieldcat_alv.
CLEAR wa_fieldcat.
General settings
wa_fieldcat-fieldname = p_fieldname.
wa_fieldcat-col_pos = p_colpos.
wa_fieldcat-no_out = p_noout.
wa_fieldcat-hotspot = p_hotspot.
wa_fieldcat-checkbox = p_checkbox.
wa_fieldcat-icon = p_showasicon.
wa_fieldcat-do_sum = p_dosum.
wa_fieldcat-t_subtot = p_subtot.
Set output length.
IF NOT p_outputlen IS INITIAL.
wa_fieldcat-outputlen = p_outputlen.
ENDIF.
Set text headers.
IF NOT p_seltext_m IS INITIAL.
wa_fieldcat-seltext_m = p_seltext_m.
ENDIF.
IF NOT p_seltext_l IS INITIAL.
wa_fieldcat-seltext_l = p_seltext_l.
ENDIF.
IF NOT p_seltext_s IS INITIAL.
wa_fieldcat-seltext_s = p_seltext_s.
ENDIF.
IF NOT p_reptext_ddic IS INITIAL.
wa_fieldcat-reptext_ddic = p_reptext_ddic.
ENDIF.
IF NOT p_ddictxt IS INITIAL.
wa_fieldcat-ddictxt = p_ddictxt.
ENDIF.
IF NOT P_JUST IS INITIAL.
WA_FIELDCAT-JUST = P_JUST.
ENDIF.
IF NOT p_edit IS INITIAL.
wa_fieldcat-Input = 'X'.
wa_fieldcat-edit = 'X'.
wa_fieldcat-do_sum = 'x'.
wa_fieldcat-p_subtot = 'x'.
ENDIF.
APPEND wa_fieldcat TO t_fieldcat.
ENDFORM. "set_fieldcat2
======================== Subroutines called by ALV ================
*& Form top_of_page
Called on top_of_page ALV event.
Prints the heading.
form top_of_page.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = t_heading.
ENDFORM.
form set_top_page_heading using t_heading type slis_t_listheader
t_events type slis_t_event.
data: x_heading type slis_listheader,
x_event type line of slis_t_event.
Report title
clear t_heading[].
clear x_heading.
x_heading-typ = 'H'.
x_heading-info = 'PHYSICAL INVENTORY AUDIT REPORT'.
append x_heading to t_heading.
Plant Name
clear x_heading.
x_heading-typ = 'S'.
x_heading-key = 'PLANT : '.
x_heading-info = PLANT.
append x_heading to t_heading.
IF DATE2 = '00.00.0000'.
CONCATENATE DATE1 'to' DATE1 INTO DT SEPARATED BY SPACE.
ELSE.
CONCATENATE DATE1 'to' DATE2 INTO DT SEPARATED BY SPACE.
ENDIF.
X_heading-TYP = 'S'.
X_heading-key = 'PERIOD :'.
X_heading-INFO = DT.
APPEND x_heading TO t_heading.
Control Date
clear x_heading.
x_heading-typ = 'S'.
x_heading-key = 'CONTROL NO. :'.
x_heading-info = ' ASDFADDFAAS DATE : 11.04.2007'.
append x_heading to t_heading.
Control date
clear x_heading.
x_heading-typ = 'S'.
x_heading-key = 'CONTROL DATE : '.
x_heading-info = ''.
append x_heading to t_heading.
Time of execution
clear x_heading.
x_heading-typ = 'S'.
x_heading-key = 'DATE : '.
write sy-DATUM to x_heading-info.
append x_heading to t_heading.
Top of page event
x_event-name = slis_ev_top_of_page.
x_event-form = 'TOP_OF_PAGE'.
append x_event to t_events.
endform.
FORM get_subtotals.
CLEAR lv_sort.
lv_sort-fieldname = 'MENGE'.
lv_sort-up = 'X'.
lv_sort-subtot = 'X'.
APPEND lv_sort TO t_sort.
clear lv_sort.
*lv_sort-fieldname = 'MENGE'.
*lv_sort-tabname = 'ITS1'.
*lv_sort-subtot = 'X'.
*APPEND lv_sort TO t_sort.
lv_sort-fieldname = 'WRTZL'.
lv_sort-tabname = 'ITS1'.
lv_sort-subtot = 'X'.
APPEND lv_sort TO t_sort.
clear lv_sort.
lv_sort-fieldname = 'BUCHM'.
lv_sort-tabname = 'ITS1'.
lv_sort-subtot = 'X'.
APPEND lv_sort TO t_sort.
clear lv_sort.
lv_sort-fieldname = 'WRTBM'.
lv_sort-tabname = 'ITS1'.
lv_sort-subtot = 'X'.
APPEND lv_sort TO t_sort.
clear lv_sort.
lv_sort-fieldname = 'DIFFQTY'.
lv_sort-tabname = 'ITS1'.
lv_sort-subtot = 'X'.
APPEND lv_sort TO t_sort.
clear lv_sort.
lv_sort-fieldname = 'DIFFVALUE'.
lv_sort-tabname = 'ITS1'.
lv_sort-subtot = 'X'.
APPEND lv_sort TO t_sort.
clear lv_sort.
ENDFORM.
form set_events using t_events type slis_t_event.
data: x_event type line of slis_t_event.
endform.
PLZ HELP ME and definately get rewarded.hi,
how did u declared ur internal table?
Declare a dummy field in your internal table to trigger subtotal text event.
TYPES: BEGIN OF ty_ekpo,
lifnr TYPE ekko-lifnr, "vendor number
ebeln TYPE ekko-ebeln, "purchase document number
ebelp TYPE ekpo-ebelp, "Item Number of Purchasing Document
matnr TYPE ekpo-matnr, "Material Number
bukrs TYPE ekpo-bukrs, "Company Code
werks TYPE ekpo-werks, "Plant
d, "Dummy field to fire the Subtotal text event
END OF ty_ekpo.
Prepare field catalog for that dummyfield also and set attributes like below
wa_fcat-col_pos = 7.
wa_fcat-fieldname = 'D'.
wa_fcat-tabname = 'IT_EKPO'.
wa_fcat-ref_fieldname = 'NETPR'.
wa_fcat-ref_tabname = 'EKPO'.
wa_fcat-no_out = 'X'.
APPEND wa_fcat TO it_fcat.
Fill sortinfo table as follows
wa_sort-spos = 1.
wa_sort-fieldname = 'LIFNR'.
wa_sort-tabname = 'IT_EKPO'.
wa_sort-up = 'X'.
wa_sort-group = 'UL'.
APPEND wa_sort TO it_sort.
CLEAR wa_sort.
wa_sort-spos = 2.
wa_sort-fieldname = 'D'.
wa_sort-tabname = 'IT_EKPO'.
wa_sort-up = 'X'.
wa_sort-group = 'UL'.
wa_sort-subtot = 'X'.
APPEND wa_sort TO it_sort.
fill the event table
wa_event-name = 'SUBTOTAL_TEXT'. "--> this event is used to trigger subtotal text
wa_event-form = 'SUBTOTAL'.
APPEND wa_event TO it_event.
*& Form subtotal
FORM subtotal USING i_listhead STRUCTURE wa_ekpo i_subtotal TYPE slis_subtot_text.
READ TABLE it_sort INTO wa_sort WITH KEY fieldname = 'D'.
IF sy-subrc = 0.
IF i_subtotal-criteria = 'D'.
i_subtotal-display_text_for_subtotal = 'Sub total'.
ENDIF.
ENDIF.
ENDFORM. "subtotal
Thanks & REgards -
REGARDING: Sub total activation button in alv
hi,
I had made dis report and added the feature SUB total ,but the problem is when i select 1 coloumn den it used to display correct sub total but when i choose all these buttons den it does not display the correct sub - total.
PLZZ GO THROUGH THE CODE AND HELP ME OUT WHAT PROBLEM IS WITH IT?
Moreover it does not display the RADIO BUTTON ACTIVE when i execute the report.
here is d code:-
*& Report ZTET2
REPORT ZTET2.
TABLES: ISEG,MARA.
TYPE-POOLS : SLIS.
DATA : DATE1(15) TYPE C,
DATE2(15) TYPE C,
TITLE(65) TYPE C,
DT(25) TYPE C.
DATA : ITEVENT TYPE SLIS_T_EVENT.
DATA: lv_sort TYPE slis_sortinfo_alv,
t_sort type slis_t_sortinfo_alv.
DATA : repid LIKE sy-repid.
INTERNAL TABLE FOR INVENTORY STOCK *****************
DATA: BEGIN OF ITS1 OCCURS 0,
MATNR LIKE ISEG-MATNR,
ITEMID(6) TYPE C,
MEINS LIKE ISEG-MEINS,
MENGE LIKE ISEG-MENGE,
WRTZL LIKE ISEG-WRTZL,
BUCHM LIKE ISEG-BUCHM,
WRTBM LIKE ISEG-WRTBM,
WERKS LIKE ISEG-WERKS,
BUDAT LIKE ISEG-BUDAT,
ZLDAT LIKE ISEG-ZLDAT,
MTART LIKE MARA-MTART,
ITEMDESC LIKE MAKT-MAKTX,
DIFFQTY LIKE ISEG-BUCHM,
DIFFVALUE LIKE ISEG-WRTBM,
GRUND LIKE ISEG-GRUND,
GRTXT LIKE T157E-GRTXT,
BWART LIKE T157E-BWART,
REAS TYPE C LENGTH 15,
END OF ITS1.
data: t_heading type slis_t_listheader.
SELECTION-SCREEN BEGIN OF BLOCK PAR1 WITH FRAME TITLE TEXT-001.
*********PARAMETERS*********
PARAMETERS : PLANT LIKE ISEG-WERKS OBLIGATORY.
*********SELECTION SCREEN OPTIONS*********
SELECT-OPTIONS : R_DATE FOR ISEG-BUDAT OBLIGATORY NO-EXTENSION,
M_TYPE FOR MARA-MTART,
IT_M FOR MARA-MATNR.
*********DEFINING VARIABLES*********
SELECTION-SCREEN END OF BLOCK par1.
CONCATENATE R_DATE-LOW6(2) '.' R_DATE-LOW4(2) '.' R_DATE-LOW+0(4) INTO DATE1.
CONCATENATE R_DATE-HIGH6(2) '.' R_DATE-HIGH4(2) '.' R_DATE-HIGH+0(4) INTO DATE2.
TOP-OF-PAGE.
PERFORM PG_HEADER.
START-OF-SELECTION.
SELECT AMATNR AMEINS AMENGE AWRTZL ABUCHM AWRTBM AWERKS ABUDAT AZLDAT BMTART AGRUND CBWART
FROM ISEG AS A INNER JOIN MARA AS B ON BMATNR = AMATNR
INNER JOIN MSEG AS C ON AMBLNR = CMBLNR
INTO CORRESPONDING FIELDS OF TABLE ITS1 WHERE BMATNR = AMATNR AND BMEINS = AMEINS AND AWERKS = PLANT AND ABUDAT IN R_DATE AND BMTART IN M_TYPE AND BMATNR IN IT_M.
SORT ITS1 BY MTART.
LOOP AT ITS1.
ITS1-ITEMID = ITS1-MATNR+12(6).
ITS1-DIFFQTY = ITS1-MENGE - ITS1-BUCHM.
ITS1-DIFFVALUE = ITS1-WRTZL - ITS1-WRTBM.
SELECT SINGLE MAKTX FROM MAKT INTO ITS1-ITEMDESC WHERE MATNR = ITS1-MATNR.
SELECT SINGLE GRTXT INTO ITS1-GRTXT FROM T157E WHERE GRUND = ITS1-GRUND AND SPRAS = 'E' AND BWART = ITS1-BWART.
MODIFY ITS1.
ENDLOOP.
PERFORM PRN_SMSTOCK_ALV.
WRITING DATA FROM D TABLES**********
FORM PG_HEADER.
WRITE : 'PHYSICAL INVENTORY AUDIT REPORT PLANT : ', PLANT.
ENDFORM.
*& Form PRN_SMSTOCK_ALV
text
--> p1 text
<-- p2 text
form PRN_SMSTOCK_ALV .
data: w_title type lvc_title,
w_repid type syrepid,
w_comm type slis_formname,
w_status type slis_formname,
x_layout type slis_layout_alv,
t_event type slis_t_event,
t_fieldcat type slis_t_fieldcat_alv,
t_subtot TYPE slis_t_sortinfo_alv,
subtot LIKE LINE OF t_subtot.
refresh t_fieldcat.
refresh t_event.
refresh t_sort.
clear x_layout.
clear w_title.
perform set_fieldcat2 using:
1 'MTART' 'MTART' 'MARA' '15' space 'MATERIAL TYPE' space space space space space space space space SPACE t_fieldcat 'L' 'L',
2 'ITEMID' 'ITEMID' 'MARA' '7' space 'ITEM ID' space space space space space space space space SPACE t_fieldcat 'R' 'C',
3 'ITEMDESC' 'MAKTX' 'MAKT' '25' space 'MATERIAL DESCRIPTION' space space space space space space space space SPACE t_fieldcat 'L' 'C',
4 'MEINS' 'MEINS' 'MARA' '5' space 'UOM' space space space space space space space space SPACE t_fieldcat 'C' 'C',
5 'MENGE' 'MENGE' 'ISEG' '13' space 'ORG.INV.QTY' space space space space space space space space SPACE t_fieldcat 'R' 'C',
6 'WRTZL' 'WRTZL' 'ISEG' '13' space 'ORG.INV.VALUE' space space space space space space space space SPACE t_fieldcat 'R' 'C',
7 'BUCHM' 'BUCHM' 'ISEG' '13' space 'PHY.INV.QTY' space space space space space space space space SPACE t_fieldcat 'R' 'C',
8 'WRTBM' 'WRTBM' 'ISEG' '13' space 'PHY.INV.VALUE' space space space space space space space space SPACE t_fieldcat 'R' 'C',
9 'DIFFQTY' 'MENGE' 'ISEG' '13' space 'DIFF.INV.QTY' space space space space space space space space SPACE t_fieldcat 'R' 'C',
10 'DIFFVALUE' 'WRTZL' 'ISEG' '13' space 'DIFF.INV.VALUE' space space space space space space space space SPACE t_fieldcat SPACE 'P',
11 'BUDAT' 'BUDAT' 'ISEG' '18' space 'CORRECTED DATE' space space space space space space space space SPACE t_fieldcat 'C' 'C',
12 'GRTXT' 'GRTXT' 'ISEG' '18' space 'REASON' space space space space space space space space SPACE t_fieldcat 'L' 'L',
13 'REAS' 'REAS' 'ISEG' '18' space 'AUTH.BY' space space space space space space space space SPACE t_fieldcat 'C' 'C'.
x_layout-zebra = 'X'.
perform set_top_page_heading using t_heading t_event.
perform set_events using t_event.
perform get_subtotals.
w_status = ''.
w_repid = sy-repid.
w_comm = 'USER_COMMAND'.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = w_repid
it_fieldcat = t_fieldcat
i_Callback_top_of_page = 'Top-of-page'
is_layout = x_layout
it_sort = t_sort
i_callback_pf_status_set = w_status
i_callback_user_command = w_comm
i_save = 'X'
it_events = t_event
i_grid_title = w_title
tables
t_outtab = ITS1
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.
FORM set_fieldcat2 USING
p_colpos p_fieldname p_ref_fieldname p_ref_tabname
p_outputlen p_noout
p_seltext_m p_seltext_l p_seltext_s p_reptext_ddic p_ddictxt
p_hotspot p_showasicon p_checkbox p_edit
p_dosum
t_fieldcat TYPE slis_t_fieldcat_alv
P_JUST
P_FTYPE.
DATA: wa_fieldcat TYPE slis_fieldcat_alv.
CLEAR wa_fieldcat.
General settings
wa_fieldcat-fieldname = p_fieldname.
wa_fieldcat-col_pos = p_colpos.
wa_fieldcat-no_out = p_noout.
wa_fieldcat-hotspot = p_hotspot.
wa_fieldcat-checkbox = p_checkbox.
wa_fieldcat-icon = p_showasicon.
wa_fieldcat-do_sum = p_dosum.
wa_fieldcat-t_subtot = p_subtot.
Set output length.
IF NOT p_outputlen IS INITIAL.
wa_fieldcat-outputlen = p_outputlen.
ENDIF.
Set text headers.
IF NOT p_seltext_m IS INITIAL.
wa_fieldcat-seltext_m = p_seltext_m.
ENDIF.
IF NOT p_seltext_l IS INITIAL.
wa_fieldcat-seltext_l = p_seltext_l.
ENDIF.
IF NOT p_seltext_s IS INITIAL.
wa_fieldcat-seltext_s = p_seltext_s.
ENDIF.
IF NOT p_reptext_ddic IS INITIAL.
wa_fieldcat-reptext_ddic = p_reptext_ddic.
ENDIF.
IF NOT p_ddictxt IS INITIAL.
wa_fieldcat-ddictxt = p_ddictxt.
ENDIF.
IF NOT P_JUST IS INITIAL.
WA_FIELDCAT-JUST = P_JUST.
ENDIF.
IF NOT p_edit IS INITIAL.
wa_fieldcat-Input = 'X'.
wa_fieldcat-edit = 'X'.
wa_fieldcat-do_sum = 'x'.
wa_fieldcat-checkbox = 'x'.
wa_fieldcat-hotspot = 'x'.
ENDIF.
APPEND wa_fieldcat TO t_fieldcat.
ENDFORM. "set_fieldcat2
======================== Subroutines called by ALV ================
*& Form top_of_page
Called on top_of_page ALV event.
Prints the heading.
form top_of_page.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = t_heading.
ENDFORM.
form set_top_page_heading using t_heading type slis_t_listheader
t_events type slis_t_event.
data: x_heading type slis_listheader,
x_event type line of slis_t_event.
Report title
clear t_heading[].
clear x_heading.
x_heading-typ = 'H'.
x_heading-info = 'PHYSICAL INVENTORY AUDIT REPORT'.
append x_heading to t_heading.
Plant Name
clear x_heading.
x_heading-typ = 'S'.
x_heading-key = 'PLANT : '.
x_heading-info = PLANT.
append x_heading to t_heading.
IF DATE2 = '00.00.0000'.
CONCATENATE DATE1 'to' DATE1 INTO DT SEPARATED BY SPACE.
ELSE.
CONCATENATE DATE1 'to' DATE2 INTO DT SEPARATED BY SPACE.
ENDIF.
X_heading-TYP = 'S'.
X_heading-key = 'PERIOD :'.
X_heading-INFO = DT.
APPEND x_heading TO t_heading.
Control Date
clear x_heading.
x_heading-typ = 'S'.
x_heading-key = 'CONTROL NO. :'.
x_heading-info = ' ASDFADDFAAS DATE : 11.04.2007'.
append x_heading to t_heading.
Top of page event
x_event-name = slis_ev_top_of_page.
x_event-form = 'TOP_OF_PAGE'.
append x_event to t_events.
endform.
FORM get_subtotals.
CLEAR lv_sort.
lv_sort-fieldname = 'MENGE'.
lv_sort-tabname = 'ITS1'.
lv_sort-spos = 3.
lv_sort-up = 'X'.
lv_sort-subtot = 'X'.
APPEND lv_sort TO t_sort.
clear lv_sort.
lv_sort-fieldname = 'WRTZL'.
lv_sort-tabname = 'ITS1'.
lv_sort-spos = 4.
lv_sort-up = 'X'.
lv_sort-subtot = 'X'.
APPEND lv_sort TO t_sort.
clear lv_sort.
lv_sort-fieldname = 'BUCHM'.
lv_sort-tabname = 'ITS1'.
lv_sort-spos = 5.
lv_sort-up = 'X'.
lv_sort-subtot = 'X'.
APPEND lv_sort TO t_sort.
clear lv_sort.
lv_sort-fieldname = 'WRTBM'.
lv_sort-tabname = 'ITS1'.
lv_sort-spos = 6.
lv_sort-up = 'X'.
lv_sort-subtot = 'X'.
APPEND lv_sort TO t_sort.
clear lv_sort.
lv_sort-fieldname = 'DIFFQTY'.
lv_sort-tabname = 'ITS1'.
lv_sort-spos = 7.
lv_sort-up = 'X'.
lv_sort-subtot = 'X'.
APPEND lv_sort TO t_sort.
clear lv_sort.
lv_sort-fieldname = 'DIFFVALUE'.
lv_sort-tabname = 'ITS1'.
lv_sort-spos = 8.
lv_sort-up = 'X'.
lv_sort-subtot = 'X'.
APPEND lv_sort TO t_sort.
clear lv_sort.
ENDFORM.
form set_events using t_events type slis_t_event.
data: x_event type line of slis_t_event.
endform.Don't give the ratios (quantity, amount, etc.) in the IT_SORT parameter, but the criteria of sorting. (material type, material number, etc.)
In the field catalog IT_FIELDCAT of the ratio, give the do_sum = 'X'.
Regards -
hi,
I have a report on ALV with sub totals for some fields, it is working fine but my requirement is whether i can get only the sub totals of that report.
regards,
PrabhuHI
refer this code.
REPORT ZALV.
TYPE-POOLS: SLIS.
DATA: G_REPID LIKE SY-REPID,
GS_PRINT TYPE SLIS_PRINT_ALV,
GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
GT_EVENTS TYPE SLIS_T_EVENT,
GT_SORT TYPE SLIS_T_SORTINFO_ALV,
GS_LAYOUT TYPE SLIS_LAYOUT_ALV,
GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
FIELDCAT_LN LIKE LINE OF GT_FIELDCAT,
COL_POS TYPE I.
DATA: BEGIN OF ITAB,
FIELD1(5) TYPE C,
FIELD2(5) TYPE C,
FIELD3(5) TYPE P DECIMALS 2,
END OF ITAB.
DATA: BEGIN OF ITAB1 OCCURS 0.
INCLUDE STRUCTURE ITAB.
DATA: END OF ITAB1.
DATA: BEGIN OF ITAB_FIELDCAT OCCURS 0.
INCLUDE STRUCTURE ITAB.
DATA: END OF ITAB_FIELDCAT.
Print Parameters
PARAMETERS:
P_PRINT AS CHECKBOX DEFAULT ' ', "PRINT IMMEDIATE
P_NOSINF AS CHECKBOX DEFAULT 'X', "NO SELECTION INFO
P_NOCOVE AS CHECKBOX DEFAULT ' ', "NO COVER PAGE
P_NONEWP AS CHECKBOX DEFAULT ' ', "NO NEW PAGE
P_NOLINF AS CHECKBOX DEFAULT 'X', "NO PRINT LIST INFO
P_RESERV TYPE I. "NO OF FOOTER LINE
INITIALIZATION.
G_REPID = SY-REPID.
PERFORM PRINT_BUILD USING GS_PRINT. "Print PARAMETERS
START-OF-SELECTION.
TEST DATA
MOVE 'TEST1' TO ITAB1-FIELD1.
MOVE 'TEST1' TO ITAB1-FIELD2.
MOVE '10.00' TO ITAB1-FIELD3.
APPEND ITAB1.
MOVE 'TEST2' TO ITAB1-FIELD1.
MOVE 'TEST2' TO ITAB1-FIELD2.
MOVE '20.00' TO ITAB1-FIELD3.
APPEND ITAB1.
DO 50 TIMES.
APPEND ITAB1.
ENDDO.
END-OF-SELECTION.
PERFORM BUILD.
PERFORM EVENTTAB_BUILD CHANGING GT_EVENTS.
PERFORM COMMENT_BUILD CHANGING GT_LIST_TOP_OF_PAGE.
PERFORM CALL_ALV.
FORM BUILD.
DATA FIELD CATALOG
Explain Field Description to ALV
DATA: FIELDCAT_IN TYPE SLIS_FIELDCAT_ALV.
CLEAR FIELDCAT_IN.
FIELDCAT_LN-FIELDNAME = 'FIELD1'.
FIELDCAT_LN-TABNAME = 'ITAB1'.
*FIELDCAT_LN-NO_OUT = 'X'. "FIELD NOT DISPLAY, CHOOSE FROM LAYOUT
FIELDCAT_LN-KEY = ' '. "SUBTOTAL KEY
FIELDCAT_LN-NO_OUT = ' '.
FIELDCAT_LN-SELTEXT_L = 'HEAD1'.
APPEND FIELDCAT_LN TO GT_FIELDCAT.
CLEAR FIELDCAT_IN.
FIELDCAT_LN-FIELDNAME = 'FIELD2'.
FIELDCAT_LN-TABNAME = 'ITAB1'.
FIELDCAT_LN-NO_OUT = 'X'.
FIELDCAT_LN-SELTEXT_L = 'HEAD2'.
APPEND FIELDCAT_LN TO GT_FIELDCAT.
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'. "SUM UPON DISPLAY
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'.
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.
HEADER FORM
FORM EVENTTAB_BUILD CHANGING LT_EVENTS TYPE SLIS_T_EVENT.
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'.
DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = LT_EVENTS.
READ TABLE LT_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 LT_EVENTS.
ENDIF.
define END_OF_PAGE event
READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_END_OF_PAGE
INTO LS_EVENT.
IF SY-SUBRC = 0.
MOVE GC_FORMNAME_END_OF_PAGE TO LS_EVENT-FORM.
APPEND LS_EVENT TO LT_EVENTS.
ENDIF.
ENDFORM.
FORM COMMENT_BUILD CHANGING GT_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.
DATA: GS_LINE TYPE SLIS_LISTHEADER.
CLEAR GS_LINE.
GS_LINE-TYP = 'H'.
GS_LINE-INFO = 'HEADER 1'.
APPEND GS_LINE TO GT_TOP_OF_PAGE.
CLEAR GS_LINE.
GS_LINE-TYP = 'S'.
GS_LINE-KEY = 'STATUS 1'.
GS_LINE-INFO = 'INFO 1'.
APPEND GS_LINE TO GT_TOP_OF_PAGE.
GS_LINE-KEY = 'STATUS 2'.
GS_LINE-INFO = 'INFO 2'.
APPEND GS_LINE TO GT_TOP_OF_PAGE.
CLEAR GS_LINE.
GS_LINE-TYP = 'A'.
GS_LINE-INFO = 'ACTION'.
APPEND GS_LINE TO GT_TOP_OF_PAGE.
ENDFORM.
FORM TOP_OF_PAGE.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = GT_LIST_TOP_OF_PAGE.
WRITE: SY-DATUM, 'Page No', SY-PAGNO LEFT-JUSTIFIED.
ENDFORM.
FORM END_OF_PAGE.
WRITE at (sy-linsz) sy-pagno CENTERED.
ENDFORM.
PRINT SETTINGS
FORM PRINT_BUILD USING LS_PRINT TYPE SLIS_PRINT_ALV.
LS_PRINT-PRINT = P_PRINT. "PRINT IMMEDIATE
LS_PRINT-NO_PRINT_SELINFOS = P_NOSINF. "NO SELECTION INFO
LS_PRINT-NO_COVERPAGE = P_NOCOVE. "NO COVER PAGE
LS_PRINT-NO_NEW_PAGE = P_NONEWP.
LS_PRINT-NO_PRINT_LISTINFOS = P_NOLINF. "NO PRINT LIST INFO
LS_PRINT-RESERVE_LINES = P_RESERV.
ENDFORM.
*END OF ZALV PROGRAM
Reward all helpfull answers.
Regards.
Jay -
How to get sub totals in alv list
Hi all,
i have a data in internal table which need to display by alv lis display, but i need to display
sub totals, like sub total by customer, subtotal by state, and complete total amount. In alv we have standard function
buttons , by i need by default it is displayed when i exe my report, hope to achieve that.
Please help me to know.
thanks,
rajeshhi Rajesh,
Check these threads out
http://www.sap-basis-abap.com/sapalv.htm
http://help.sap.com/saphelp_nw04/helpdata/en/ee/b99d37e188a049e10000009b38f8cf/content.htm
http://www.sapfans.com/forums/viewtopic.php?t=20386
http://www.sapfans.com/forums/viewtopic.php?t=85191
http://www.sapfans.com/forums/viewtopic.php?t=88401
http://www.sapfans.com/forums/viewtopic.php?t=17335
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'.
<b>GS_SORT-SUBTOT = 'X'.</b>
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'.
APPEND GS_SORT TO GT_SORT.
Regards,
Santosh -
Just the sub totals in ALV ... is it possible
Report RCATS_APPROVE_ACTIVITIES
transaction called cats_appr_lite that displays a ALV report output
This report displayes the employees entered times in CATS and can be used by HR admins or managers for approval.
When the manager executes the report shows the times for each day
like it will show
PERN Date Time Unit
1000 1st jan monday 8 hours
1000 2nd jan monday 8 hours
1000 3rd jan monday 8 hours
1000 4th jan monday 8 hours
1000 5th jan monday 8 hours
And after i set the totals / sub totals for PERNR it also shows me another line
1000 40 hours
In this ALV report I just want to see the totals line like
1000 40 hours
and not the line items.
Idela scenario is I want to see the line items when clicked on the Totals line
1000 40 hours
Like i double click on the totals and see
1000 1st jan monday 8 hours
1000 2nd jan monday 8 hours
1000 3rd jan monday 8 hours
1000 4th jan monday 8 hours
1000 5th jan monday 8 hours
and from there on I can further navigate as required and currently avialable.
IS this something thatsome has every worked on. IS it technicallyfeasible with ALV reporting to show just the sub totals on the first page ( that is by not modifying the program but by just changing the layouts).You can achieve this with the layouts:
First run your ALV.. now do the subtotal based on your employe... you will have
new line with * in front of it.
1000 1st jan monday 8 hours
1000 2nd jan monday 8 hours
1000 3rd jan monday 8 hours
1000 4th jan monday 8 hours
1000 5th jan monday 8 hours
*1000 40 hours
Click on this astrick ... it will collepse the line items...
Now, save you layout by pressing the "Save layout" button.
Next time run your report with this newly crated layout.
Regards,
Naimesh Patel -
Totals and Sub-Totals in ALV GRID
Could anyone advice, how to display sub-totals and totals in ALV Grid(using FM).
Ex: value1 value2
100 50
200 50
subtotal 300 100
total 400
Thanks in advance...Refer below demo code and see perform Sort_list..
it wil serve ur purpose.
REPORT ZGILL_ALV message-id rp .
type-pools slis.
tables: zgill_main,zgill_details.
data z_fieldcat type slis_t_fieldcat_alv.
data begin of itab occurs 0.
DATA ICON TYPE ICON-ID.
include structure zgill_main.
data salary like zgill_details-salary.
data end of itab.
*data itab1 like table of itab with header line.
data : WA_SORT TYPE SLIS_SORTINFO_ALV,
IT_SORT TYPE SLIS_T_SORTINFO_ALV,
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
IT_FIELDTAB TYPE SLIS_T_FIELDCAT_ALV,
WA_LAYOUT TYPE SLIS_LAYOUT_ALV.
PARAMETERS: p_list radiobutton group A1,
P_GRID RADIOBUTTON GROUP A1.
SELECT-OPTIONS: S_PERNR FOR ZGILL_MAIN-PERNR.
start-of-selection.
perform fill_itab.
perform sort_list.
**************Start of scenario without container******************************************
*********Method 1***********
perform fill_fieldcat. " Manuallly Preparing Fiedl Catalog
*********Method 2***********
*perform fill_fieldcat1 changing z_fieldcat. "Preparing field catalog with merge function
perform display_alv.
*****************end of scenario without container*****************************************
*& Form fill_itab
text
--> p1 text
<-- p2 text
form fill_itab .
*select * from zgill_main up to 20 rows INTO CORRESPONDING FIELDS OF TABLE itab.
*ITAB1[] = ITAB[].
select apernr aname aorg adob b~salary INTO CORRESPONDING FIELDS OF TABLE itab
from zgill_main as a join zgill_details as b on apernr = bpernr
WHERE A~PERNR IN S_PERNR.
LOOP AT ITAB.
IF ITAB-PERNR < 1111.
ITAB-ICON = '@08@'.
ELSEIF ITAB-PERNR > 1111 AND ITAB-PERNR < 11111111.
ITAB-ICON = '@09@'.
ELSEIF ITAB-PERNR GE 11111111.
ITAB-ICON = '@0A@'.
ENDIF.
MODIFY ITAB INDEX SY-TABIX.
ENDLOOP.
endform. " fill_itab
*& Form display_alv
text
--> p1 text
<-- p2 text
form display_alv .
data repid like sy-repid.
REPID = SY-REPID.
WA_LAYOUT-ZEBRA = 'X'.
WA_LAYOUT-WINDOW_TITLEBAR = 'GRID DISPLAY'.
WA_LAYOUT-SUBTOTALS_TEXT = 'SUBTOTAL'.
WA_LAYOUT-TOTALS_TEXT = 'TOTAL'.
IF P_GRID = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = repid
IT_FIELDCAT = IT_FIELDTAB
IT_SORT = IT_SORT
IS_LAYOUT = WA_LAYOUT
TABLES
t_outtab = itab[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF sy-subrc <> 0.
message e016 with 'Error in Display'.
ENDIF.
ELSEIF P_LIST = 'X'.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = repid
IT_FIELDCAT = IT_FIELDTAB
IT_SORT = IT_SORT
IS_LAYOUT = WA_LAYOUT
TABLES
t_outtab = itab[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF sy-subrc <> 0.
message e016 with 'Error in Display'.
ENDIF.
ENDIF.
endform. " display_alv
*& Form fill_fieldcat1
text
--> p1 text
<-- p2 text
form fill_fieldcat1 changing d_fcat type slis_t_fieldcat_alv.
data repid like sy-repid.
data d_fcat1 type slis_t_fieldcat_alv with header line.
REPID = SY-REPID.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = repid
I_INTERNAL_TABNAME = 'ITAB'
I_STRUCTURE_NAME = 'ZGILL_MAIN'
I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME =
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE =
CHANGING
ct_fieldcat = d_fcat[]
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
IF sy-subrc <> 0.
message e016 with 'Error in preparing fiedl catalog'.
ENDIF.
loop at d_fcat into d_fcat1.
case d_fcat1-fieldname.
when 'NAME'.
d_fcat1-reptext_ddic = 'Emp Name'.
MODIFY D_FCAT FROM D_FCAT1.
WHEN 'PERNR'.
d_fcat1-reptext_ddic = 'Emp Num'.
MODIFY D_FCAT FROM D_FCAT1.
WHEN 'ORG'.
d_fcat1-reptext_ddic = 'Org Unit'.
MODIFY D_FCAT FROM D_FCAT1.
endcase.
clear d_fcat1.
endloop.
endform. " fill_fieldcat1
*& Form sort_list
text
--> p1 text
<-- p2 text
form sort_list .
CLEAR WA_SORT.
WA_SORT-FIELDNAME = 'DOB'.
WA_SORT-SPOS = '1'.
WA_SORT-UP = 'X'.
WA_SORT-SUBTOT = 'X'.
APPEND WA_SORT TO IT_SORT.
CLEAR WA_SORT.
WA_SORT-FIELDNAME = 'NAME'.
WA_SORT-SPOS = '1'.
WA_SORT-UP = 'X'.
APPEND WA_SORT TO IT_SORT.
CLEAR WA_SORT.
endform. " sort_list
*& Form fill_fieldcat
text
--> p1 text
<-- p2 text
form fill_fieldcat .
CLEAR WA_FIELDCAT.
WA_FIELDCAT-TABNAME = 'ITAB'.
WA_FIELDCAT-FIELDNAME = 'ICON'.
WA_FIELDCAT-SELTEXT_L = 'TRAFFIC'.
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 = 'ITAB'.
WA_FIELDCAT-FIELDNAME = 'PERNR'.
WA_FIELDCAT-SELTEXT_L = 'EMP NUMBER'.
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 = 'ITAB'.
WA_FIELDCAT-FIELDNAME = 'NAME'.
WA_FIELDCAT-SELTEXT_L = 'EMP NAME'.
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 = 'ITAB'.
WA_FIELDCAT-FIELDNAME = 'ORG'.
WA_FIELDCAT-SELTEXT_L = 'ORG UNIT'.
WA_FIELDCAT-COL_POS = 4.
WA_FIELDCAT-OUTPUTLEN = 10.
APPEND WA_FIELDCAT TO IT_FIELDTAB.
CLEAR WA_FIELDCAT .
WA_FIELDCAT-TABNAME = 'ITAB'.
WA_FIELDCAT-FIELDNAME = 'DOB'.
WA_FIELDCAT-SELTEXT_L = 'BIRTH DATE'.
WA_FIELDCAT-COL_POS = 5.
WA_FIELDCAT-OUTPUTLEN = 12.
APPEND WA_FIELDCAT TO IT_FIELDTAB.
CLEAR WA_FIELDCAT .
WA_FIELDCAT-TABNAME = 'ITAB'.
WA_FIELDCAT-FIELDNAME = 'SALARY'.
WA_FIELDCAT-SELTEXT_L = 'SALARY'.
WA_FIELDCAT-COL_POS = 6.
WA_FIELDCAT-OUTPUTLEN = 25.
WA_FIELDCAT-do_sum = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDTAB.
endform. " fill_fieldcat -
Hi Folks,
Need your help.
I have designed a report to be displayed in ALV tree. The report contains one column (Amount) which can be totaled using the SUM function of the ALV. The report is a 3 level hierarchy - Proj number, Plant and Proj type. When I select the Amount column and click on SUM button, I get the total value of Amount for that particular proj number.
Now, what I want is, a functionality to get the sub total of Amount on the basis of Proj type. Please advice me to get the desired functionality done.
For more clarity please see the below scenario what I want -
Proj number 12345
____Plant XYZ
________Proj type CA 100
_______________ CA 100
________ subtotal 200
________ Proj type CE 150
________________CE 100
________subtotal 250After building fieldcatalog,use this
data: lt_sort TYPE lvc_t_sort ,
ls_sort-fieldname = 'PROJECT'--> ur fieldname .
ls_sort-spos = '1' .
ls_sort-subtot = 'X' .
ls_sort-up = 'X' .
APPEND ls_sort TO lt_sort . -
Hello Experts,
I am preparing a ALV report in that i want to display fields in a such a way that
under a heading i need to have two sub headings ie, for example under a material heading
i need to display material no and code as separate coloumn but both should look like
single coloumn under heading Material.Hi Dude,
For first header
wa_hader-type = 'H'.
wa_hader-info = 'Main Headding'.
append wa_heaer to it_header.
For Sub header
wa_hader-type = 'S'.
wa_hader-info = Sub Headding1.
append wa_heaer to it_header.
Finally call the function module
Reuse_Alv_commentray_write function module
then pass the parameter
exporting
it_list_commentary = it_header.
Try this
Hope it will work....
Thanks & Regards
Ramakrishna Pathi -
Regarding the 'TOTALS' in ALV's
Hi friends,
I have a doubt in ALV while displaying totals.
How can we display the "totals" immediately when the ALV output is displayed. I tried many ways but when im clicking on the 'Summation' symbol in the output of the ALV then only the 'Totals' or 'Subtotals' are being displayed.
Please give me some helpfull tips...
Regards
Pradeep Golihi,
take reference of this exp...
*FORM FOR DISPLAY DATA
FORM display_data.
PERFORM fill_layout_structure.
PERFORM fill_field_catalog_table.
PERFORM get_event USING it_event.
PERFORM fill_listheader USING it_listheader.
PERFORM call_alv_function.
ENDFORM. "display_data
*FORM FOR ALV LAYOUT STRUCTURE
FORM fill_layout_structure.
CLEAR st_layout.
st_layout-colwidth_optimize = 'X'.
st_layout-zebra = 'X'.
st_layout-f2code = '&ETA'.
st_layout-detail_popup = 'X'.
st_layout-colwidth_optimize = 'X'.
ENDFORM. "fill_layout_structure
*FORM FOR ALV FIELD CATALOG TABLE
FORM fill_field_catalog_table .
PERFORM fill_field_catalog USING :
'SAKNR' 'G/L Account No' 15 'IT_DATA' 'X' space,
'TXT50' 'A/C Description' 50 'IT_DATA' space space,
'BO' 'BO' 15 'IT_DATA' space 'X',
'FACT' 'Factories' 15 'IT_DATA' space 'X',
'TOTAL_BO' 'BO Total' 15 'IT_DATA' space 'X'.
ENDFORM. "fill_field_catalog_table
*FORM FOR FILLING FIELD CATALOG
FORM fill_field_catalog USING f d l t p s.
DATA: wa_fieldcat TYPE slis_fieldcat_alv.
STATICS v_pos TYPE i VALUE 1.
wa_fieldcat-row_pos = 1.
wa_fieldcat-col_pos = v_pos.
wa_fieldcat-fieldname = f.
wa_fieldcat-seltext_m = d.
wa_fieldcat-tabname = t.
wa_fieldcat-outputlen = l.
wa_fieldcat-fix_column = p.
wa_fieldcat-do_sum = s.
APPEND wa_fieldcat TO it_fieldcat.
v_pos = v_pos + 1.
ENDFORM. "fill_field_catalog
*FORM FOR ALV FUNCTIONS
FORM call_alv_function.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
i_callback_program = v_repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = '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 = st_layout
it_fieldcat = it_fieldcat[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'A'
IS_VARIANT =
it_events = it_event[]
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_data[]
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. "call_alv_function -
Sub total in ALV GRID using oops concept
Hi,
If Plant (VBAP-WERKS) is not the same for all items on a Sales Order (VBAK-VBELN is the same for al items) then create a separate line on the report for each different plant specified in the line items. Copy all fields from the original order line except for plant and Net Value. Net Value should be the total of item Net Values for all items with the same plant in the order.
Example:
Data:
Order---- Item- Plant- Net Value---
123---- 010- 3467- 100.00---
123---- 020- 7865- 50.00---
123---- 030- 3467- 80.50---
Report:
Order- Plant- Net Value---
123- 3467- 180.50---
123- 7865- 50.00----
I need to dispaly the Report format in ALV Grid using oops concept...
no need of calling any function modules.
Regards,
NithyaHi
Here is example code
This is the method to be called:
get_subtotals
Use
Returns the current subtotals of the ALV Grid Control. Having created totals for at least one column, users can calculate at most nine subtotals. The list is sorted by the values of one or several columns (called the subtotals column). If a value is changed in the subtotals column, the subtotal is displayed (this is also referred to as control level change).
Integration
Before you access the subtotals value, you use the method get_sort_criteria to get the sort table . One row of this table describes properties of a column in the output table.
If the field SUBTOT is set for a column in this table, the column is a subtotals column.
The field SPOS then indicates at which level (see below) the subtotal has been calculated.
The field FIELDNAME contains the name of the subtotals column in the output table.
Based on this information, you specifically access the values of the tables passed (using reference variables COLLECT01 to COLLECT09).
Features
CALL METHOD <ref. var. to CL_GUI_ALV_GRID>->get_subtotals
IMPORTING
EP_COLLECT00 = <reference variable of type REF TO DATA>
EP_COLLECT01 = <reference variable of type REF TO DATA>
EP_COLLECT02 = <reference variable of type REF TO DATA>
EP_COLLECT03 = <reference variable of type REF TO DATA>
EP_COLLECT04 = <reference variable of type REF TO DATA>
EP_COLLECT05 = <reference variable of type REF TO DATA>
EP_COLLECT06 = <reference variable of type REF TO DATA>
EP_COLLECT07 = <reference variable of type REF TO DATA>
EP_COLLECT08 = <reference variable of type REF TO DATA>
EP_COLLECT09 = <reference variable of type REF TO DATA>
ET_GROUPLEVELS = <ínternal table of type LVC_T_GRPL>.
In order to access the values of EP_COLLECT00 to EP_COLLECT09, you use ASSIGN to dereference the relevant reference variable in a field symbol of your output table type (see below).
Parameters
Meaning
EP_COLLECT00
Points to the totals line. Since there is only one totals line which, in addition, has a unique totalling area, no further information is available for this table in table ET_GROUPLEVELS.
get_subtotals
EP_COLLECT01 to EP_COLLECT09
Point to the subtotals line. For each subtotals level, there is one reference variable. Each of these variables points to an internal table that has the type of the output table. EP_COLLECT01 points to the subtotal at the hightest level, while EP_COLLECT02 points to the subtotal at the second highest level, and so on. The levels are derived from the sort priority (field SPOS in the sort table ). The column by which the data was sorted first, is the highest subtotals level.
ET_GROUPLEVELS
Manages all indexes for the individual control levels. The fields of the table have the following meaning:
INDEX_FROM, INDEX_TO: Rows of the output table for which the subtotal was created
LEVEL: Subtotals level (see above)
COUNTER: Number of rows for which the subtotal was created
COMPRESS: For this subtotals line, the user has hidden the associated rows.
COLLECT: Indicates the subtotals table (01-09) in which the values are stored
For an overview, see Methods of Class CL_GUI_ALV_GRID
Activities -
Sub total in ALV report.
hello everyone,
i am developing one ALV report and one problem is there.
i want Material Group wise total on 1.Quantity 2. Asssessable value 3. Basic duty 4. Edu cess.
Problem is all total are correct but when material group is different it repeat same total again. how to do total different material group wise?
i am using this code...............
*& Report ZHP_EXCISE_INVOICE
REPORT zhp_excise_invoice NO STANDARD PAGE HEADING LINE-SIZE 150 MESSAGE-ID 00.
TYPE-POOLS: slis.
TABLES: j_1iexchdr,vbrk,vbrp,t001w,t023t,konv.
DATA: BEGIN OF ithp_j_1iexchdr OCCURS 0,
docyr LIKE j_1iexchdr-docyr, "Year
bukrs LIKE j_1iexchdr-bukrs, "Company Code
werks LIKE j_1iexchdr-werks, "PLANT
exdat LIKE j_1iexchdr-exdat, "Excise Document Date
rdoc LIKE j_1iexchdr-rdoc, "Reference Document 1
preprn LIKE j_1iexchdr-preprn, "Preprinted Serial Number
kunag LIKE j_1iexchdr-kunag, "Sold-to party
kunwe LIKE j_1iexchdr-kunwe, "Ship-to party
exbed LIKE j_1iexchdr-exbed, "Basic Excise Duty
ecs LIKE j_1iexchdr-ecs, "Edu Cess amount
status LIKE j_1iexchdr-status, "Excise Document Status
censtat LIKE j_1iexchdr-censtat, "CENVAT Utilization status
exccd LIKE j_1iexchdr-exccd, "ECC Number
trntyp LIKE j_1iexchdr-trntyp, "Excise Transaction Type
vbeln LIKE vbrk-vbeln, "Billing Document
kzwi2 LIKE vbrp-kzwi2, "Assessable value
fkimg LIKE vbrp-fkimg, "Actual billed quantity
matkl LIKE vbrp-matkl, "Material group
netwr LIKE vbrp-netwr, "Net value
name1 LIKE t001w-name1, "Plant Name
wgbez LIKE t023t-wgbez, "Material Group Desc.
serial_no TYPE i,
subtot1 TYPE vbrp-fkimg,
price_per TYPE konv-kbetr,
cash_disc TYPE konv-kwert,
vol_disc TYPE konv-kwert,
***_value TYPE konv-kbetr,
***_value1 TYPE konv-kbetr,
BASIC_DUTY1 TYPE konv-kwert,
EDU_CESS1 TYPE konv-kwert,
END OF ithp_j_1iexchdr.
DATA : x TYPE i VALUE 0,
y TYPE i VALUE 0.
DATA: t_fillcat TYPE slis_t_fieldcat_alv,
w_fillcat TYPE slis_fieldcat_alv,
layout TYPE slis_layout_alv,
repid LIKE sy-repid.
TYPES: BEGIN OF ty_itab,
price_per TYPE konv-kbetr,
basic_prc TYPE konv-kbetr,
cash_disc TYPE konv-kwert,
vol_disc TYPE konv-kwert,
***_value TYPE konv-kbetr,
END OF ty_itab.
DATA:it_itab TYPE ty_itab OCCURS 0 WITH HEADER LINE,
wa_itab TYPE ty_itab.
TYPES: BEGIN OF ty_konv,
kschl TYPE konv-kschl,
kbetr TYPE konv-kbetr,
kwert TYPE konv-kwert,
mwsk1 TYPE konv-mwsk1,
knumv TYPE konv-knumv,
kposn TYPE konv-kposn,
END OF ty_konv.
DATA: it_konv TYPE ty_konv OCCURS 0 WITH HEADER LINE,
wa_konv TYPE ty_konv .
TYPES: BEGIN OF ty_vbrk,
fkdat TYPE vbrk-fkdat,
fkart TYPE vbrk-fkart,
knumv TYPE vbrk-knumv,
vbeln TYPE vbrk-vbeln,
vbtyp TYPE vbrk-vbtyp,
bukrs TYPE vbrk-bukrs,
kunrg TYPE vbrk-kunrg,
END OF ty_vbrk.
DATA: it_vbrk TYPE ty_vbrk OCCURS 0 WITH HEADER LINE,
wa_vbrk TYPE ty_vbrk .
TYPES : BEGIN OF ty_vbrp,
werks TYPE vbrp-werks,
spart TYPE vbrp-spart,
vkbur TYPE vbrp-vkbur,
matkl TYPE vbrp-matkl,
vbeln TYPE vbrp-vbeln,
posnr TYPE vbrp-posnr,
vgbel TYPE vbrp-vgbel,
matnr TYPE vbrp-matnr,
brgew TYPE vbrp-brgew,
fkimg TYPE vbrp-fkimg,
vrkme TYPE vbrp-vrkme,
netwr TYPE vbrp-netwr,
arktx TYPE vbrp-arktx,
aubel TYPE vbrp-aubel,
kzwi1 TYPE vbrp-kzwi1,
kzwi2 TYPE vbrp-kzwi2,
kzwi4 TYPE vbrp-kzwi4,
kzwi5 TYPE vbrp-kzwi5,
kzwi6 TYPE vbrp-kzwi6,
END OF ty_vbrp.
DATA: it_vbrp TYPE ty_vbrp OCCURS 0 WITH HEADER LINE,
wa_vbrp TYPE ty_vbrp.
DATA: events TYPE slis_t_event,
gt_list_top_of_page TYPE slis_t_listheader.
top_of_page type slis_formname value 'TOP_OF_PAGE'.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: p_bukrs FOR j_1iexchdr-bukrs.
SELECT-OPTIONS: p_exgrp FOR j_1iexchdr-exgrp.
SELECT-OPTIONS: p_werks FOR j_1iexchdr-werks.
SELECT-OPTIONS: p_matkl FOR vbrp-matkl.
SELECT-OPTIONS: p_trntyp FOR j_1iexchdr-trntyp DEFAULT 'DLFC' NO INTERVALS.
SELECT-OPTIONS: p_status FOR j_1iexchdr-status DEFAULT 'C' NO INTERVALS.
SELECT-OPTIONS: p_cnstat FOR j_1iexchdr-censtat DEFAULT 'P' NO INTERVALS.
SELECT-OPTIONS: p_exdat FOR j_1iexchdr-exdat OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
repid = sy-repid.
AT SELECTION-SCREEN ON p_bukrs.
SELECT SINGLE * FROM j_1iexchdr WHERE bukrs IN p_bukrs.
IF sy-subrc <> 0.
MESSAGE e001 WITH 'No Table Entries Found'.
EXIT.
ENDIF.
AT SELECTION-SCREEN ON p_werks.
SELECT SINGLE * FROM j_1iexchdr WHERE werks IN p_werks.
IF sy-subrc <> 0.
MESSAGE e001 WITH 'No Table Entries Found'.
EXIT.
ENDIF.
AT SELECTION-SCREEN ON p_matkl.
SELECT SINGLE * FROM vbrp WHERE matkl IN p_matkl.
IF sy-subrc <> 0.
MESSAGE e001 WITH 'No Table Entries Found'.
EXIT.
ENDIF.
AT SELECTION-SCREEN ON p_exdat.
SELECT SINGLE * FROM j_1iexchdr WHERE exdat IN p_exdat.
IF sy-subrc <> 0.
MESSAGE e001 WITH 'No Table Entries Found'.
EXIT.
ENDIF.
START-OF-SELECTION.
PERFORM select.
PERFORM fillcat.
PERFORM display.
END-OF-SELECTION.
*& Form SELECT
text
--> p1 text
<-- p2 text
FORM select .
SELECT DOCYR
BUKRS
WERKS
EXDAT
RDOC
PREPRN
KUNAG
KUNWE
EXBED
ECS
STATUS
CENSTAT
INTO CORRESPONDING FIELDS OF TABLE ITHP_J_1IEXCHDR
FROM J_1IEXCHDR
WHERE BUKRS IN P_BUKRS AND
EXGRP IN P_EXGRP AND
WERKS IN P_WERKS AND
EXDAT IN P_EXDAT.
SELECT VBELN
NETWR
INTO CORRESPONDING FIELDS OF TABLE ITHP_VBRK
FROM VBRK
FOR ALL ENTRIES IN ITHP_J_1IEXCHDR
WHERE VBELN EQ ITHP_J_1IEXCHDR-RDOC AND
BUKRS EQ ITHP_J_1IEXCHDR-BUKRS AND
KUNAG EQ ITHP_J_1IEXCHDR-KUNAG.
SORT ITHP_J_1IEXCHDR BY DOCYR BUKRS WERKS EXDAT RDOC.
SORT ITHP_VBRK BY VBELN.
SELECT a~docyr
a~bukrs
a~werks
a~exdat
a~rdoc
a~preprn
a~kunag
a~kunwe
a~exbed
a~ecs
a~status
a~censtat
a~exccd
a~trntyp
c~netwr
c~kzwi2
c~fkimg
c~matkl
d~name1
e~wgbez
INTO CORRESPONDING FIELDS OF TABLE ithp_j_1iexchdr
FROM j_1iexchdr AS a INNER JOIN vbrk AS b ON ardoc = bvbeln
INNER JOIN vbrp AS c ON bvbeln = cvbeln
INNER JOIN t001w AS d ON awerks = dwerks
INNER JOIN t023t AS e ON cmatkl = ematkl
WHERE a~bukrs IN p_bukrs AND
a~exgrp IN p_exgrp AND
a~werks IN p_werks AND
c~matkl IN p_matkl AND
a~trntyp IN p_trntyp AND
a~status IN p_status AND
a~censtat IN p_cnstat AND
a~exdat IN p_exdat.
SORT ithp_j_1iexchdr BY docyr bukrs werks exdat rdoc matkl.
ENDFORM. " SELECT
*& Form FILLCAT
text
--> p1 text
<-- p2 text
FORM fillcat .
DATA: subtot TYPE vbrp-fkimg.
DATA: BASIC_DUTY TYPE konv-kwert.
DATA: EDU_CESS TYPE konv-kwert.
REFRESH it_vbrk.
REFRESH it_konv.
REFRESH it_vbrp.
LOOP AT ithp_j_1iexchdr.
SELECT fkdat fkart knumv vbeln vbtyp bukrs kunrg
FROM vbrk INTO TABLE it_vbrk
WHERE vbeln EQ ithp_j_1iexchdr-rdoc.
SELECT kschl kbetr kwert mwsk1 knumv kposn FROM konv
INTO TABLE it_konv FOR ALL ENTRIES IN it_vbrk
WHERE knumv EQ it_vbrk-knumv.
SELECT werks spart vkbur matkl vbeln posnr
vgbel matnr brgew fkimg vrkme netwr
arktx aubel kzwi1 kzwi2 kzwi4 kzwi5
kzwi6 FROM vbrp INTO TABLE it_vbrp FOR ALL
ENTRIES IN it_vbrk
WHERE vbeln EQ it_vbrk-vbeln.
SORT it_vbrk BY vbeln knumv.
SORT it_konv BY KSCHL knumv.
SORT it_vbrp BY vbeln.
LOOP AT it_konv.
IF it_konv-kschl = 'ZASS'.
LOOP AT it_konv.
IF it_konv-kschl = 'ZPR0'.
it_itab-***_value = it_konv-kwert.
ithp_j_1iexchdr-***_value = it_itab-***_value.
ADD ithp_j_1iexchdr-***_value TO ithp_j_1iexchdr-***_value1.
ithp_j_1iexchdr-***_value1 = ithp_j_1iexchdr-***_value1 - ithp_j_1iexchdr-***_value.
MODIFY ithp_j_1iexchdr.
ENDIF.
IF it_konv-kschl = 'ZASS'.
it_itab-***_value = it_konv-kwert.
ithp_j_1iexchdr-***_value = it_itab-***_value.
ADD ithp_j_1iexchdr-***_value TO ithp_j_1iexchdr-***_value1.
MODIFY ithp_j_1iexchdr.
ENDIF.
ENDLOOP.
EXIT.
ENDIF.
IF it_konv-kschl = 'PR00'.
it_itab-***_value = it_konv-kwert.
ithp_j_1iexchdr-***_value = it_itab-***_value.
ADD ithp_j_1iexchdr-***_value TO ithp_j_1iexchdr-***_value1.
MODIFY ithp_j_1iexchdr.
ENDIF.
IF it_konv-kschl = 'ZPR0'.
LOOP AT it_konv.
IF it_konv-kschl = 'ZASS'.
EXIT.
ENDIF.
it_itab-***_value = it_konv-kwert.
ithp_j_1iexchdr-***_value = it_itab-***_value.
ADD ithp_j_1iexchdr-***_value TO ithp_j_1iexchdr-***_value1.
ithp_j_1iexchdr-***_value1 = ithp_j_1iexchdr-***_value1 - ithp_j_1iexchdr-***_value.
MODIFY ithp_j_1iexchdr.
ENDIF.
IF it_konv-kschl = 'ZPR0'.
it_itab-***_value = it_konv-kwert.
ithp_j_1iexchdr-***_value = it_itab-***_value.
ADD ithp_j_1iexchdr-***_value TO ithp_j_1iexchdr-***_value1.
MODIFY ithp_j_1iexchdr.
ENDIF.
ENDLOOP.
EXIT.
ENDIF.
IF it_konv-kschl = 'JEXP'.
BASIC_DUTY = it_konv-kwert.
ADD BASIC_DUTY TO ithp_j_1iexchdr-BASIC_DUTY1.
MODIFY ithp_j_1iexchdr.
ENDIF.
IF it_konv-kschl = 'JECS'.
EDU_CESS = it_konv-kwert.
ADD EDU_CESS TO ithp_j_1iexchdr-EDU_CESS1.
MODIFY ithp_j_1iexchdr.
ENDIF.
ENDLOOP.
ENDLOOP.
LOOP AT ithp_j_1iexchdr.
AT NEW rdoc.
SUM.
subtot = ithp_j_1iexchdr-fkimg.
ENDAT.
ithp_j_1iexchdr-subtot1 = subtot.
MODIFY ithp_j_1iexchdr.
AT NEW MATKL.
ENDAT.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM ithp_j_1iexchdr.
LOOP AT ithp_j_1iexchdr.
x = x + 1.
ithp_j_1iexchdr-serial_no = x.
MODIFY ithp_j_1iexchdr.
ENDLOOP.
repid = sy-repid.
DATA: col_pos TYPE i VALUE 0.
col_pos = col_pos + 1.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'SERIAL_NO'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Serial No'.
w_fillcat-seltext_m = 'Serial No'.
w_fillcat-seltext_l = 'Serial No'.
w_fillcat-outputlen = 8.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'DOCYR'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Year'.
w_fillcat-seltext_m = 'Year'.
w_fillcat-seltext_l = 'Year'.
w_fillcat-outputlen = 5.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'WERKS'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Plant'.
w_fillcat-seltext_m = 'Plant'.
w_fillcat-seltext_l = 'Plant'.
w_fillcat-outputlen = 5.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'EXDAT'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Doc. Date'.
w_fillcat-seltext_m = 'Doc. Date'.
w_fillcat-seltext_l = 'Doc. Date'.
w_fillcat-outputlen = 10.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'RDOC'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Ref. Document'.
w_fillcat-seltext_m = 'Ref. Document'.
w_fillcat-seltext_l = 'Ref. Document'.
w_fillcat-outputlen = 11.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'PREPRN'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Invoice No'.
w_fillcat-seltext_m = 'Invoice No'.
w_fillcat-seltext_l = 'Invoice No'.
w_fillcat-outputlen = 11.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'SUBTOT1'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-do_sum = 'X'.
w_fillcat-seltext_s = 'Quantity'.
w_fillcat-seltext_m = 'Quantity'.
w_fillcat-seltext_l = 'Quantity'.
w_fillcat-outputlen = 13.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = '***_VALUE1'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-do_sum = 'X'.
w_fillcat-seltext_s = 'Assessable value'.
w_fillcat-seltext_m = 'Assessable value'.
w_fillcat-seltext_l = 'Assessable value'.
w_fillcat-outputlen = 15.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'BASIC_DUTY1'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-do_sum = 'X'.
w_fillcat-seltext_s = 'Basic Duty'.
w_fillcat-seltext_m = 'Basic Duty'.
w_fillcat-seltext_l = 'Basic Duty'.
w_fillcat-outputlen = 13.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'EDU_CESS1'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-do_sum = 'X'.
w_fillcat-seltext_s = 'Edu Cess'.
w_fillcat-seltext_m = 'Edu Cess'.
w_fillcat-seltext_l = 'Edu Cess'.
w_fillcat-outputlen = 13.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'KUNAG'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Sold-to pt'.
w_fillcat-seltext_m = 'Sold-to pt'.
w_fillcat-seltext_l = 'Sold-to pt'.
w_fillcat-outputlen = 10.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'KUNWE'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Ship-to pt'.
w_fillcat-seltext_m = 'Ship-to pt'.
w_fillcat-seltext_l = 'Ship-to pt'.
w_fillcat-outputlen = 10.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'STATUS'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Doc. Status'.
w_fillcat-seltext_m = 'Doc. Status'.
w_fillcat-seltext_l = 'Doc. Status'.
w_fillcat-outputlen = 8.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'CENSTAT'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Cenvet status'.
w_fillcat-seltext_m = 'Cenvet status'.
w_fillcat-seltext_l = 'Cenvet status'.
w_fillcat-outputlen = 8.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'MATKL'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Mat. Grp'.
w_fillcat-seltext_m = 'Mat. Grp'.
w_fillcat-seltext_l = 'Mat. Grp'.
w_fillcat-outputlen = 9.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
col_pos = col_pos + 1.
w_fillcat-fieldname = 'WGBEZ'.
w_fillcat-tabname = 'ITHP_J_1IEXCHDR'.
w_fillcat-col_pos = col_pos.
w_fillcat-seltext_s = 'Mat. Grp Desc.'.
w_fillcat-seltext_m = 'Mat. Grp Desc.'.
w_fillcat-seltext_l = 'Mat. Grp Desc.'.
w_fillcat-outputlen = 20.
APPEND w_fillcat TO t_fillcat.
CLEAR w_fillcat.
ENDFORM. " FILLCAT
*& Form DISPLAY
text
--> p1 text
<-- p2 text
FORM display .
DATA : lv_grid_title TYPE lvc_title.
DATA: date1(10) TYPE c.
DATA: tperiod(500) TYPE c,
tperiod1(40) TYPE c,
tperiod2(30) TYPE c,
temp(25) TYPE c,
temp1(35) TYPE c,
temp2(25) TYPE c,
temp3(25) TYPE c,
temp4(60) TYPE c,
temp5(100) TYPE c.
CONCATENATE sy-datum6(2) sy-datum4(2) sy-datum+0(4)
INTO date1 SEPARATED BY '/'.
CONCATENATE p_exdat-low6(2) p_exdat-low4(2) p_exdat-low+0(4)
INTO temp1 SEPARATED BY '/'.
CONCATENATE p_exdat-high6(2) p_exdat-high4(2) p_exdat-high+0(4)
INTO temp2 SEPARATED BY '/'.
CONCATENATE 'DUTY DEBIT STMT:'
temp1 'TO' temp2
INTO tperiod
SEPARATED BY space.
IF ithp_j_1iexchdr-werks = '1000'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1101'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1102'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1103'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1104'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1201'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1202'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1203'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1204'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1205'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1261'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1301'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '1901'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '2000'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '2101'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '3000'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSEIF ithp_j_1iexchdr-werks = '3101'.
CONCATENATE tperiod 'Plant :' ithp_j_1iexchdr-name1 'Ecc No :' ithp_j_1iexchdr-exccd INTO lv_grid_title
SEPARATED BY space.
ELSE.
CONCATENATE tperiod ' ' INTO lv_grid_title
SEPARATED BY space.
ENDIF.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = 100
text = 'Generating Report ... '.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
i_callback_program = 'REPID'
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = 'TOP_OF_PAGE'
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
i_grid_title = lv_grid_title
I_GRID_SETTINGS =
is_layout = layout
it_fieldcat = t_fillcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
i_default = 'X'
i_save = 'X'
IS_VARIANT =
IT_EVENTS = 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
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = ithp_j_1iexchdr
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. " DISPLAY
Thanks in Advance.....Hi himanshu,
here i am sending some solution.
just create a internal table and wa for IT_SORT in grid display(just like for field cat).
Then u have to populate the internal table by fields for which u want subtotals.
just follow this code.
data: i_sort type SLIS_T_SORTINFO_ALV,
wa_sort type SLIS_SORTINFO_ALV.
wa_sort-fieldname = 'quantity'.
wa_sort-up = 'X'.
wa_sort-subtotal = 'X'.
append wa_sort to i_sort.
Do the same thing for all fields.
mention the internal table name in Grid display.
I think this some what useful to u,
Bye. -
How to sub-total in alv?
Hi,
I have an alv layout like following:
ZZZ 300100089 1050
ZZZ 300100089 1050
subtoal 2100
90256243 300100000 193410
90256242 300100000 173250
90256241 300100000 173250
90256240 300100000 173250
90256239 300100000 173250
90256238 300100000 173250
90256237 300100000 173250
subtotal 1232910
when the second numbers are the same,
I need to sum up as
300100089 2100
300100000 1232910
I write the coding as the following, but it did not work, Please
help and correct it!!
the coding:
data: it_sortcat type slis_sortinfo_alv occurs 1,
wa_sort like line of it_sortcat.
sort gt_outalv.
wa_sort-fieldname = 'wrbtr'.
wa_sort-SUBTOT = 'X'.
APPEND wa_sort TO it_sortcat.
In FM
it_sort = it_sortcat
I got dump and it did not work .
Please correct my coding !!
Thank you in advance,Check the Below Example program
the code below produces alv display with 2 columns: field1 & field2.
field1 is character based & the int. table passed to the alv is sorted on this field.
field2 is numeric, whose subtotals are desired.
so while populating the gt_sort table the option gs_sort-subtot is set for field1 bcoz the subtotals are to be based on the groups existing in this column.whereas the same option is NOT set for field2, even though the subtotal appears in that column.i have marked these 2 statements in the code for your convenience.
execute the code below & you will surely understand what i said above.
bye!!
report zalv10.
type-pools: slis.
data: g_repid like sy-repid,
gs_print type slis_print_alv,
gt_list_top_of_page type slis_t_listheader,
gt_events type slis_t_event,
gt_sort type slis_t_sortinfo_alv,
gs_layout type slis_layout_alv,
gt_fieldcat type slis_t_fieldcat_alv,
fieldcat_ln like line of gt_fieldcat,
col_pos type i.
data: begin of itab,
field1(5) type c,
field2(5) type c,
field3(5) type p decimals 2,
end of itab.
data: begin of itab1 occurs 0.
include structure itab.
data: end of itab1.
data: begin of itab_fieldcat occurs 0.
include structure itab.
data: end of itab_fieldcat.
Print Parameters
parameters:
p_print as checkbox default ' ', "PRINT IMMEDIATE
p_nosinf as checkbox default 'X', "NO SELECTION INFO
p_nocove as checkbox default ' ', "NO COVER PAGE
p_nonewp as checkbox default ' ', "NO NEW PAGE
p_nolinf as checkbox default 'X', "NO PRINT LIST INFO
p_reserv type i. "NO OF FOOTER LINE
initialization.
g_repid = sy-repid.
perform print_build using gs_print. "Print PARAMETERS
start-of-selection.
TEST DATA
move 'TEST1' to itab1-field1.
move 'TEST1' to itab1-field2.
move '10.00' to itab1-field3.
append itab1.
move 'TEST2' to itab1-field1.
move 'TEST2' to itab1-field2.
move '20.00' to itab1-field3.
append itab1.
do 50 times.
append itab1.
enddo.
end-of-selection.
perform build.
perform eventtab_build changing gt_events.
perform comment_build changing gt_list_top_of_page.
perform call_alv.
form build.
DATA FIELD CATALOG
Explain Field Description to ALV
data: fieldcat_in type slis_fieldcat_alv.
clear fieldcat_in.
fieldcat_ln-fieldname = 'FIELD1'.
fieldcat_ln-tabname = 'ITAB1'.
*FIELDCAT_LN-NO_OUT = 'X'. "FIELD NOT DISPLAY, CHOOSE FROM LAYOUT
fieldcat_ln-key = ' '. "SUBTOTAL KEY
fieldcat_ln-no_out = ' '.
fieldcat_ln-seltext_l = 'HEAD1'.
append fieldcat_ln to gt_fieldcat.
clear fieldcat_in.
fieldcat_ln-fieldname = 'FIELD2'.
fieldcat_ln-tabname = 'ITAB1'.
fieldcat_ln-no_out = 'X'.
fieldcat_ln-seltext_l = 'HEAD2'.
append fieldcat_ln to gt_fieldcat.
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'. "SUM UPON DISPLAY
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'. ***CRUCIAL STATEMENT******
*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'. **THIS SHOULD NOT BE UNCOMENTED**
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.
HEADER FORM
form eventtab_build changing lt_events type slis_t_event.
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'.
data: ls_event type slis_alv_event.
call function 'REUSE_ALV_EVENTS_GET'
exporting
i_list_type = 0
importing
et_events = lt_events.
read table lt_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 lt_events.
endif.
define END_OF_PAGE event
READ TABLE LT_EVENTS WITH KEY NAME = SLIS_EV_END_OF_PAGE
INTO LS_EVENT.
IF SY-SUBRC = 0.
MOVE GC_FORMNAME_END_OF_PAGE TO LS_EVENT-FORM.
APPEND LS_EVENT TO LT_EVENTS.
ENDIF.
endform.
form comment_build changing gt_top_of_page type slis_t_listheader.
data: gs_line type slis_listheader.
clear gs_line.
gs_line-typ = 'H'.
gs_line-info = 'HEADER 1'.
append gs_line to gt_top_of_page.
clear gs_line.
gs_line-typ = 'S'.
gs_line-key = 'STATUS 1'.
gs_line-info = 'INFO 1'.
append gs_line to gt_top_of_page.
gs_line-key = 'STATUS 2'.
gs_line-info = 'INFO 2'.
append gs_line to gt_top_of_page.
CLEAR GS_LINE.
GS_LINE-TYP = 'A'.
GS_LINE-INFO = 'ACTION'.
APPEND GS_LINE TO GT_TOP_OF_PAGE.
endform.
form top_of_page.
call function 'REUSE_ALV_COMMENTARY_WRITE'
exporting
it_list_commentary = gt_list_top_of_page.
write: sy-datum, 'Page No', sy-pagno left-justified.
endform.
form end_of_page.
write at (sy-linsz) sy-pagno centered.
endform.
PRINT SETTINGS
form print_build using ls_print type slis_print_alv.
ls_print-print = p_print. "PRINT IMMEDIATE
ls_print-no_print_selinfos = p_nosinf. "NO SELECTION INFO
ls_print-no_coverpage = p_nocove. "NO COVER PAGE
ls_print-no_new_page = p_nonewp.
ls_print-no_print_listinfos = p_nolinf. "NO PRINT LIST INFO
ls_print-reserve_lines = p_reserv.
endform.
Kanagaraja L -
The below code is giving the wrong result...how can i get SUBTOTALS LIFNR WISE AND THEN SUBTOTALS BUKRS WISE....................................
SELECT BUKRS LIFNR GJAHR BELNR BUDAT BLDAT WAERS DMBTR WRBTR SGTXT SHKZG BLART XBLNR HKONT PRCTR
FROM BSIK INTO TABLE GT_BSIK
WHERE BUDAT IN SO_BUDAT AND PRCTR IN SO_PRCTR.
SORT GT_BSIK BY PRCTR BUKRS LIFNR.
LOOP AT GT_BSIK INTO GS_BSIK.
AT END OF LIFNR.
sum .
MODIFY GT_BSIK FROM GS_BSIK.
AT END OF bukrs.
sum .
MODIFY GT_BSIK FROM GS_BSIK.
ENDAT.
ENDAT.
ENDLOOP.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = SY-CPROG
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 =
IT_FIELDCAT = T_FCAT
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
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 = GT_BSIK
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.REPORT zf14 NO STANDARD PAGE HEADING LINE-SIZE 138. .
TABLES: bkpf,bseg,lfa1,t001,rbkp.
TYPE-POOLS:slis.
TYPES : BEGIN OF x_bkpf,
bukrs TYPE bkpf-bukrs, " Company Code
belnr TYPE bkpf-belnr, " Document Number
gjahr TYPE bkpf-gjahr, " Fiscal year
awkey TYPE bkpf-awkey, " Object Key
bldat TYPE bkpf-bldat,
budat TYPE bkpf-budat,
END OF x_bkpf.
TYPES : BEGIN OF x_final,
lifnr TYPE lfa1-lifnr,
sl_no TYPE sy-tabix,
bukrs TYPE bkpf-bukrs, " Company Code
belnr TYPE bkpf-belnr, " Document Number
gjahr TYPE bkpf-gjahr, " Fiscal year
blart TYPE bkpf-blart, " Document Type
awkey TYPE bkpf-awkey, " Object Key
awkey1 TYPE bkpf-awkey,
bldat TYPE rbkp-bldat,
budat TYPE bkpf-budat,
witht TYPE with_item-witht,
wt_qsshh TYPE with_item-wt_qsshh,
wt_qbshh TYPE with_item-wt_qbshh,
wt_acco TYPE with_item-wt_acco,
name1 TYPE lfa1-name1, "vendor Name
ort01 TYPE lfa1-ort01, "City
j_1icstno TYPE j_1imovend-j_1icstno, "CST
j_1ilstno TYPE j_1imovend-j_1ilstno ,"LST
*Start of changes by Kiran.K dated 17072007.
j_1ipanno TYPE j_1imovend-j_1ipanno, "PAN No.
*End of changes by Kiran.K dated 17072007.
END OF x_final.
DATA : itbkpf TYPE x_bkpf OCCURS 0 WITH HEADER LINE.
DATA : itfinal TYPE x_final OCCURS 0 WITH HEADER LINE.
DATA : month_names LIKE t247 OCCURS 0 WITH HEADER LINE.
DATA :i(2), "month
y TYPE int4, "year
c(4),
v_bill LIKE bseg-dmbtr. " bill value
DATA : pos TYPE sy-tabix,
month(99),
month1(99).
DATA:sl_no(3) VALUE 0.
DATA:string1(100),
date1(10),
date2(10),
title(65).
*Declarations for ALV
DATA:itfieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
DATA:itrepid TYPE sy-repid.
itrepid = sy-repid.
DATA:itevent TYPE slis_t_event.
DATA:itlistheader TYPE slis_t_listheader.
DATA:walistheader LIKE LINE OF itlistheader.
DATA:itlayout TYPE slis_layout_alv.
DATA:top TYPE slis_formname.
DATA:itsort TYPE slis_t_sortinfo_alv WITH HEADER LINE.
DATA:itprintparams TYPE slis_print_alv.
DATA:itvariant TYPE disvariant.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : p_bukrs LIKE t001-bukrs OBLIGATORY. "Company code
SELECT-OPTIONS : s_lifnr FOR lfa1-lifnr, "Vendor name
s_budat FOR sy-datum OBLIGATORY,
s_gjahr FOR bseg-gjahr NO-DISPLAY.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS: r1 RADIOBUTTON GROUP g1,
r2 RADIOBUTTON GROUP g1.
SELECTION-SCREEN END OF BLOCK b2.
WRITE:S_BUDAT-LOW TO DATE1,
S_BUDAT-HIGH TO DATE2.
AT SELECTION-SCREEN.
SELECT SINGLE bukrs
INTO t001-bukrs
FROM t001
WHERE bukrs = p_bukrs.
IF sy-subrc <> 0.
MESSAGE e000(z_ma) WITH 'Invalid Company Code'.
ENDIF.
IF NOT s_lifnr[] IS INITIAL.
SELECT SINGLE lifnr
INTO lfa1-lifnr
FROM lfa1
WHERE lifnr IN s_lifnr.
IF sy-subrc <> 0.
MESSAGE e000(z_ma) WITH 'Invalid Vendor'.
ENDIF.
ENDIF.
START-OF-SELECTION.
IF s_budat IS NOT INITIAL.
IF s_budat-high IS NOT INITIAL.
WHILE s_budat-low LE s_budat-high.
i = s_budat+7(2).
IF i > 3.
s_gjahr = s_budat+3(4).
APPEND s_gjahr.
ELSE.
c = s_budat+3(4).
s_gjahr = c - 1.
APPEND s_gjahr.
ENDIF.
s_budat-low = s_budat-low + 1.
ENDWHILE.
ELSE.
i = s_budat+7(2).
IF i > 3.
s_gjahr = s_budat+3(4).
APPEND s_gjahr.
ELSE.
c = s_budat+3(4).
s_gjahr = c - 1.
APPEND s_gjahr.
ENDIF.
ENDIF.
ENDIF.
IF r1 = 'X'.
PERFORM getdata.
PERFORM alv.
ELSE.
PERFORM getdata.
PERFORM classical.
ENDIF.
*& Form getdata
text
FORM getdata.
SELECT bukrs
belnr
awkey
budat
gjahr
blart
FROM bkpf INTO CORRESPONDING FIELDS OF TABLE itbkpf
WHERE bukrs = p_bukrs
AND budat IN s_budat
AND bstat = space
AND gjahr = s_gjahr.
IF sy-subrc NE 0.
MESSAGE 'No Values exist for the Selection.' TYPE 'S'.
ENDIF.
*Tax details.
LOOP AT itbkpf.
MOVE-CORRESPONDING itbkpf TO itfinal.
SELECT SINGLE belnr
gjahr
witht
wt_qsshh
wt_qbshh
wt_acco "vendor
FROM with_item INTO CORRESPONDING FIELDS OF itfinal
WHERE bukrs = p_bukrs
AND gjahr = itbkpf-gjahr
AND belnr = itbkpf-belnr
AND witht = 'T1'.
APPEND itfinal.
CLEAR itfinal.
CLEAR itbkpf.
ENDLOOP.
LOOP AT itbkpf.
MOVE-CORRESPONDING itbkpf TO itfinal.
SELECT SINGLE belnr
gjahr
witht
wt_qsshh
wt_qbshh
wt_acco "vendor
FROM with_item INTO CORRESPONDING FIELDS OF itfinal
WHERE bukrs = p_bukrs
AND gjahr = itbkpf-gjahr
AND belnr = itbkpf-belnr
AND witht = 'T2'.
APPEND itfinal.
CLEAR itfinal.
CLEAR itbkpf.
ENDLOOP.
LOOP AT itfinal.
IF NOT ( itfinal-witht = 'T1' OR itfinal-witht = 'T2' ) OR ( itfinal-wt_qsshh = '0.00' ).
DELETE itfinal.
ENDIF.
ENDLOOP.
LOOP AT itfinal.
itfinal-awkey1 = itfinal-awkey+0(10).
SELECT SINGLE lifnr
name1
ort01
FROM lfa1 INTO CORRESPONDING FIELDS OF itfinal
WHERE lifnr = itfinal-wt_acco.
SELECT SINGLE j_1icstno
j_1ilstno
*Start of changes by Kiran.K dated 17072007.
j_1ipanno
*End of changes by Kiran.K dated 17072007.
FROM j_1imovend INTO CORRESPONDING FIELDS OF itfinal
WHERE lifnr = itfinal-wt_acco.
SELECT SINGLE bldat
from rbkp INTO CORRESPONDING FIELDS of itfinal
where belnr = itfinal-awkey1
and gjahr = itfinal-gjahr.
MODIFY itfinal.
ENDLOOP.
ENDFORM. "getdata
*& Form alv
Fieldcatalog for ALV Report
FORM alv.
DATA:NO_SUBTOTAL(1) TYPE C.
SORT ITFINAL BY LIFNR.
LOOP AT itfinal.
itfinal-awkey1 = itfinal-awkey+0(10).
itfinal-sl_no = sy-tabix.
MODIFY itfinal.
ENDLOOP.
IF itfinal[] IS INITIAL.
MESSAGE 'No Values exist for the Selection.' TYPE 'S'.
STOP.
ENDIF.
DEFINE m_fieldcat.
itfieldcat-fieldname = &1.
itfieldcat-col_pos = &2.
itfieldcat-seltext_l = &3.
itfieldcat-do_sum = &4.
itfieldcat-outputlen = &5.
append itfieldcat to itfieldcat.
clear itfieldcat.
END-OF-DEFINITION.
m_fieldcat 'SL_NO' '' 'SL. NO' '' 03 .
m_fieldcat 'BUKRS' '' 'COMPANY CODE' '' 12 .
Start of Changes made by Kiran.K dated 17072007.
m_fieldcat 'BELNR' '' 'FI Doc.No.' '' 12 .
End of changes made by Kiran.K dated 17072007
m_fieldcat 'GJAHR' '' 'FISCAL YEAR' '' 11.
m_fieldcat 'WT_QSSHH' '' 'TAX BASE AMT.' 'X' 13 .
m_fieldcat 'WT_QBSHH' '' 'TAX' 'X' 13 .
m_fieldcat 'AWKEY1' '' 'INVOICE No.' '' 13 .
m_fieldcat 'BLDAT' '' 'DOCUMENT DATE' '' 08 .
m_fieldcat 'BUDAT' '' 'POSTING DATE' '' 08 .
m_fieldcat 'LIFNR' '' 'VENDOR CODE' '' 10 .
m_fieldcat 'NAME1' '' 'VENDOR NAME' '' 35 .
m_fieldcat 'ORT01' '' 'CITY' '' 35 .
m_fieldcat 'J_1ICSTNO' '' 'CST No.' '' 40 .
Start of changes by Kiran.K dated 17072007.
m_fieldcat 'J_1ILSTNO' '' 'TIN NUMBER.' '' 40.
m_fieldcat 'J_1IPANNO' '' 'PERMANENT A/C No.' '' 40.
End of changes by Kiran.K dated 17072007.
itlayout-zebra = 'X'.
itlayout-colwidth_optimize = 'X'.
data : itsort TYPE slis_t_sortinfo_alv with header line.
DATA :itsort1 TYPE slis_sortinfo_alv.
CLEAR itsort.
itsort1-spos = 10."column position
itsort1-fieldname = 'LIFNR'."field name
itsort1-tabname = 'ITFINAL'."internal table
*itsort1-up = 'X'.
*itsort1-group = 'UL'.
*itsort1-subtot = 'X'.
APPEND itsort1 TO itsort.
CLEAR itsort.
itsort1-spos = 5."column position
itsort1-fieldname = 'WT_QSSHH'."field name
itsort1-tabname = 'ITFINAL'."internal table
*itsort1-up = 'X'.
*itsort1-group = 'UL'.
itsort1-subtot = 'X'.
APPEND itsort1 TO itsort.
*CLEAR itsort.
*itsort1-spos = 4. "column position
*itsort1-fieldname = 'WT_QBSHH'."field name
*itsort1-tabname = 'ITFINAL'."internal table
**itsort1-up = 'X'.
**itsort1-group = 'UL'.
*itsort1-subtot = 'X'.
*APPEND itsort1 TO itsort. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = itlayout
i_callback_user_command = 'LIST1'
i_callback_top_of_page = 'TOP'
it_fieldcat = itfieldcat[]
i_save = 'A'
is_variant = ITVARIANT
it_events = itevent[]
is_print = ITPRINTPARAMS
it_sort = itsort[]
TABLES
t_outtab = itfinal
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
*& Form list1
ALV Interactive-
-->R_UCOMM text
-->RS_SELFIELDtext
FORM list1 USING r_ucomm LIKE sy-ucomm rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
IF rs_selfield-fieldname = 'BELNR'.
READ TABLE itfinal INDEX rs_selfield-tabindex.
SET PARAMETER ID 'BLN' FIELD itfinal-belnr.
start of changes made by Kiran.K dated 18072007.
SET PARAMETER ID 'BUK' FIELD ITFINAL-BUKRS.
SET PARAMETER ID 'GJR' FIELD ITFINAL-GJAHR.
*End of changes made by Kiran.K dated 18072007.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM. "list1
*& Form TOP
Top of page for ALV Report
FORM top.
DATA : name1(60),
month_text(250),
string1(100),
date3(10),
date4(10),
title(65).
WRITE: DATE1 TO date3,
DATE2 TO date4.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = itevent
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.
string1 = 'TDS on Work Contracts for'.
CONCATENATE string1 itfinal-bukrs date3 'to' date4 INTO title SEPARATED BY space.
walistheader-typ = 'H'.
walistheader-info = title.
APPEND walistheader TO itlistheader.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = itlistheader
I_LOGO = ''.
I_END_OF_LIST_GRID =
ENDIF.
CLEAR itlistheader.
ENDIF.
ENDFORM. "TOP
*& Form classical
Form to display the values in Classical Report
FORM classical.
FORMAT RESET.
FORMAT COLOR COL_NORMAL.
sort itfinal by lifnr.
LOOP AT itfinal.
sl_no = sl_no + 1.
itfinal-awkey1 = itfinal-awkey+0(10).
WRITE:/ sy-vline,
2 sl_no,
7 sy-vline,
10 itfinal-bukrs,
21 sy-vline,
23 itfinal-belnr hotspot,
35 sy-vline,
38 itfinal-gjahr,
47 sy-vline,
48 itfinal-wt_qsshh,
69 sy-vline,
70 itfinal-wt_qbshh,
91 sy-vline,
94 itfinal-awkey1,
108 sy-vline,
110 itfinal-budat,
125 sy-vline,
*Start of changes made by Kiran.K dated 18072007.
127 itfinal-bldat,
138 sy-vline.
*End of changes made by Kiran.K dated 18072007.
hide itfinal-belnr.
at end of lifnr.
uline.
new-page.
clear: sl_no.
endat.
ENDLOOP.
write:/ sy-vline.
ENDFORM. "classical
at line-selection.
set parameter id 'BLN' field itfinal-belnr.
call transaction 'FB03' AND SKIP FIRST SCREEN.
TOP-OF-PAGE.
DATA : name1(60).
DATA : month_text(127),
string(99).
FORMAT RESET.
FORMAT COLOR COL_POSITIVE.
string1 = 'TDS on Work Contracts for'.
CONCATENATE string1 itfinal-bukrs date1 'to' date2 INTO title SEPARATED BY space.
WRITE :/ title.
SKIP 1.
CONCATENATE itfinal-name1 ',' itfinal-ort01
INTO name1 SEPARATED BY space.
WRITE :/ 'Vendor Code :', itfinal-lifnr.
WRITE :/ 'Vendor Name and City :', name1.
SKIP 1.
*Start of changes by Kiran.K dated 17072007.
*Changed TNGST as TIN and PAN No is added.
WRITE :/ 'TIN No :', itfinal-j_1ilstno,
/ 'CST Registration No :', itfinal-j_1icstno,
/ 'PERMANENT A/C No. :',itfinal-j_1ipanno.
*End of changes by Kiran.K dated 17072007.
SKIP 1.
Display the coloumn headings
FORMAT RESET.
FORMAT COLOR COL_HEADING.
WRITE :/ sy-uline.
WRITE:/ sy-vline,
2 'SI.No',
7 sy-vline,
10 'Comp.Code',
21 sy-vline,
22 'FI.Doc.No',
35 sy-vline,
37 'Fiscal Yr.',
47 sy-vline,
49 'Tax Base Amt.',
69 sy-vline,
71 'Tax Amt.',
91 sy-vline,
94 'Invoice No.' ,
108 sy-vline,
110 'Posting Date',
125 sy-vline,
127 'Doc.Date',
138 sy-vline,
***Solution
Just add SUBTOTAL in the fieldcatalog of the particular field.
I_FIELDCAT-DO_SUM = 'X'.
Or Tey This:
Data: I_SORT TYPE SLIS_T_SORTINFO_ALV,
WA_SORT TYPE SLIS_SORTINFO_ALV.
*---Sort
WA_SORT-SPOS = '1'.
WA_SORT-FIELDNAME = 'LINE'.
WA_SORT-UP = 'X'.
WA_SORT-SUBTOT = 'X'.
APPEND WA_SORT TO I_SORT.
CLEAR WA_SORT.
Pass this in FM,
IT_SORT = I_SORT
Or Tey This:
Use FM REUSE_ALV_EVENTS_GET to get all events in ur ALV report.then use event SUBTOTAL_TEXT to print subtotal.
following are the events that u can use in ALV :
CALLER_EXIT
USER_COMMAND
TOP_OF_PAGE
TOP_OF_COVERPAGE
END_OF_COVERPAGE
FOREIGN_TOP_OF_PAGE
FOREIGN_END_OF_PAGE
PF_STATUS_SET
LIST_MODIFY
TOP_OF_LIST
END_OF_PAGE
END_OF_LIST
AFTER_LINE_OUTPUT
BEFORE_LINE_OUTPUT
REPREP_SEL_MODIFY
SUBTOTAL_TEXT
GROUPLEVEL_CHANGE
Maybe you are looking for
-
How do I disable iMessage on my MacBook pro?
I have purchased a MacBook Pro for Christmas and whilst viewing different applications I couldn't close the message application unless I typed in my Apple id password. Now, I am recieving iMessages at not only my iPhone and iPod but my mac too. How c
-
IPod Nano won't turn on.
Good Morning - My Nano has been inactive for approx 6 weeks (left it in the in-laws house). Anyway I got it back today and I am trying to turn it on to update playlists, charge etc but when I connect it to my PC its not recognised by the PC and also
-
When I went to clean I went to turn on my iPod and it wouldn't turn on. I plugged it into every Plug In, in the house and it wont even recognize that it is there. so I am asking you. what should I do? I have tons of apps and songs on an 8GB, 3rd Gene
-
Airport Express works, but MacBook doesn't when connected directly to Modem
I have an interesting problem. I have Verizon DSL. Airport Express works, but Linksys and Netgear wifi routers don't work. Further more, if I disconnect the wifi router and directly connect a MacBook or a Windows notebook they don't work. These devic
-
HT2240 how do i unistall quicktime x??
how do I unistall Quicktime x? my new quicktime 7 pro will not install untill the X is unistalled