Problem in Subtotal in ALV
Hi Experts,
I wanted to do the subtotal in ALV report. For subtotal which data type we need to take. Is it really affect with data type??
My problem is: I wanted to do the subtotal based on Purchase order number. I need to do the subtotal of field LV_VAR based on purchase order number. The field LV_VAR having TYPE packed decimal.
Do I need to change the data type of field LV_VAR for getting subtotal?
For implementing the Subtotal functionality in my alv report, I did following changes
1. Declared one sort catalog as
gs_sort-fieldname = 'EBELN'.
gs_sort-up = 'X'.
gs-sort-subtot = 'X'.
append gs_sort to gt_sort.
2. In fieldcatalog of field LV_VAR
i_fieldcatalog-fieldname = 'LV_VAR'.
i_fieldcatalog-tabname = 'ITAB'.
i_fieldcatalog-do_sum = 'X'.
append i_fieldcatalog.
Then in FM REUSE_ALV_GRID_DISPLAY, I had passed sort catalog as
it_sort = gt_sort[]
But I did not get the subtotal functionality.
Any suggestion pls?
Hi ,
I will give you one sample code which has a functionality of subtotal and grand total also .
And this code will help you in many aspects also.
*& Report ZSAND_SUBTOTAL *
REPORT ZSAND_SUBTOTAL LINE-COUNT 65 .
*& Report ZALV_LIST
TABLES : mseg.
TYPE-POOLS : slis.
DATA : BEGIN OF itab OCCURS 0,
mblnr LIKE mseg-mblnr,
matnr LIKE mseg-matnr,
werks LIKE mseg-werks,
menge LIKE mseg-menge,
line_color(4) TYPE c,
END OF itab.
DATA : BEGIN OF itab1 OCCURS 0,
mblnr LIKE mseg-mblnr,
matnr LIKE mseg-matnr,
werks LIKE mseg-werks,
menge LIKE mseg-menge,
line_color(4) TYPE c,
END OF itab1.
data: it_sortcat type slis_sortinfo_alv occurs 1,
wa_sort like line of it_sortcat.
DATA: it_header TYPE slis_t_listheader,
wa_header TYPE slis_listheader.
data: var1(1).
DATA var2.
data:mytabix like sy-tabix.
data:wtab1 like line of itab,
wtab2 like line of itab.
DATA : t_fcat TYPE slis_t_fieldcat_alv,
t_eve TYPE slis_t_event,
t_subtot TYPE slis_t_sortinfo_alv,
subtot LIKE LINE OF t_subtot,
wa_fcat LIKE LINE OF t_fcat,
gd_layout TYPE slis_layout_alv.
DATA : gt_menge LIKE mseg-menge,
st_menge LIKE mseg-menge.
data:it_extab type SLIS_t_EXTAB,
wa_extab like line of it_extab.
SELECTION-SCREEN : BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : doc FOR mseg-mblnr.
SELECTION-SCREEN : END OF BLOCK blk1.
START-OF-SELECTION.
PERFORM build_cat USING t_fcat.
PERFORM build_layout.
PERFORM build_eve.
perform fill_sort.
PERFORM get_data.
PERFORM display.
*& Form build_cat
*text
*-->TEMP_FCAT text
FORM build_cat USING temp_fcat TYPE slis_t_fieldcat_alv.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'MBLNR'.
wa_fcat-seltext_m = 'Material Doc.'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'MATNR'.
wa_fcat-seltext_m = 'Material'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'WERKS'.
wa_fcat-seltext_m = 'Plant'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'MENGE'.
wa_fcat-seltext_m = 'Quantity'.
wa_fcat-do_sum = 'Y'.
APPEND wa_fcat TO temp_fcat.
CLEAR wa_fcat.
ENDFORM. "build_cat
*& Form build_eve
*text
FORM build_eve.
DATA : wa_eve TYPE slis_alv_event.
data:mytabix type sy-tabix.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = t_eve
EXCEPTIONS
list_type_wrong = 1
OTHERS = 2.
IF sy-subrc <> 0.
*MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE t_eve into wa_eve WITH KEY name = slis_ev_top_of_page.
*INTO wa_eve.
IF sy-subrc = 0.
mytabix = sy-tabix.
MOVE 'TOP_OF_PAGE' TO wa_eve-form.
append wa_eve to t_eve.
*modify t_eve from wa_eve index mytabix transporting form.
ENDIF.
READ TABLE t_eve into wa_eve WITH KEY name = slis_ev_end_of_page.
*INTO wa_eve.
IF sy-subrc = 0.
mytabix = sy-tabix.
MOVE 'END_OF_PAGE' TO wa_eve-form.
append wa_eve to t_eve.
*modify t_eve from wa_eve index mytabix transporting form.
ENDIF.
ENDFORM. "build_eve
*& Form build_layout
*text
FORM build_layout.
*gd_layout-no_input = 'X'.
gd_layout-colwidth_optimize = 'X'.
gd_layout-info_fieldname = 'LINE_COLOR'.
gd_layout-subtotals_text = 'SUBTOTAL'.
*gd_layout-totals_text = 'TOTAL'.
gd_layout-EDIT = 'X'.
ENDFORM. " BUILD_LAYOUT
*& Form get_data
*text
FORM get_data.
SELECT mblnr matnr werks menge FROM mseg INTO CORRESPONDING FIELDS OF
TABLE itab
WHERE mblnr IN doc.
SORT itab BY mblnr.
sort itab by mblnr matnr.
read table itab into wtab1 index 1.
mytabix = 1.
loop at itab into wtab2 from 2.
if wtab1-mblnr = wtab2-mblnr and wtab1-matnr = wtab2-matnr.
wtab1-menge = wtab1-menge + wtab2-menge.
modify itab from wtab1 index mytabix.
else.
modify itab from wtab1 index mytabix.
clear wtab1.
mytabix = sy-tabix.
move wtab2 to wtab1.
endif.
clear wtab2.
endloop.
delete ADJACENT DUPLICATES from itab comparing mblnr matnr.
ENDFORM. "get_data
*& Form display
*text
FORM display.
wa_extab-fcode = '&ETA'.
append wa_extab to it_extab.
wa_header-typ = 'H'.
wa_header-info = 'SANDY is Great'.
append wa_header to it_header.
clear wa_header.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = 'ZSAND_SUBTOTAL'
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USERCOMMAND'
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 = gd_layout
IT_FIELDCAT = t_fcat
IT_EXCLUDING = it_extab
IT_SPECIAL_GROUPS =
IT_SORT = it_sortcat
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS = t_eve[]
IT_EVENT_EXIT = 'BUILD_EVE'
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 = itab
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM. "display
***& Form top_of_page
*text
FORM top_of_page.
if var1 is initial.
wa_header-typ = 'H'.
wa_header-info = 'SANDY is Great'.
append wa_header to it_header.
clear wa_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = it_header
I_LOGO = 'HR_LOGO'
I_END_OF_LIST_GRID =
var1 = 'X'.
endif.
ENDFORM. "top_of_page
FORM end_of_page.
if var2 is initial.
wa_header-typ = 'H'.
wa_header-info = 'SANDY is Great'.
append wa_header to it_header.
clear wa_header.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = it_header
I_LOGO = 'HR_LOGO'
I_END_OF_LIST_GRID =
var2 = 'X'.
endif.
ENDFORM. "top_of_page
*& Form fill_sort
text
--> p1 text
<-- p2 text
form fill_sort .
wa_sort-spos = 1.
wa_sort-fieldname = 'MBLNR'.
wa_sort-SUBTOT = 'X'. "subtotals any totals column by this field
gd_sortcat-tabname
APPEND wa_sort TO it_sortcat.
wa_sort-spos = 2.
wa_sort-fieldname = 'MATNR'.
gd_sortcat-tabname
APPEND wa_sort TO it_sortcat.
endform. " fill_sort
FORM status USING rt_extab TYPE slis_t_extab.
set pf-status 'ZSTANDARD'.
endform.
form USERCOMMAND USING R_UCOMM type sy-ucomm
rselfield type slis_selfield .
set parameter id 'MAT' field rselfield-value .
call transaction 'MM03' and skip first screen.
endform.
I hope this program will help you out.
Help children of U.N World Food Program by rewarding points and encourage others to answer your queries.
Similar Messages
-
hello freinds,
I am facing problem of subtotal in alv report.
I am explaining my problem.....................
In my report there are 8 columns...
in first colum there is <b>'Acount Number'</b> field. I have to sort out it.and I have done it succesfully. Now in my seventh and eighth column there are fields 'PAYMENT GROSS AMOUNT' and ' IVA AMOUNT' respectively.
Now I have to do subtotal of these two columns (7th & 8th) according to first column value i.e Acount Number.
Please send me solution.
Thanks in Advance........Hi,
try this code ,hope usefull to u, please reward point if usefull to u.
*& Report ZALV_SUBTOTAL
This program lists orders (VBAK) with sort and sub-total for *
'sold-to-party' (KUNNR) and 'Sales organization' (VKORG) *
REPORT ZALV_SUBTOTAL.
TABLES : vbak.
TYPE-POOLS: slis. " ALV Global types
SELECT-OPTIONS :
s_vkorg FOR vbak-vkorg, " Sales organization
s_kunnr FOR vbak-kunnr, " Sold-to party
s_vbeln FOR vbak-vbeln. " Sales document
SELECTION-SCREEN :
SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max.
PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.
SELECTION-SCREEN END OF LINE.
DATA:
BEGIN OF gt_vbak OCCURS 0,
vkorg LIKE vbak-vkorg, " Sales organization
kunnr LIKE vbak-kunnr, " Sold-to party
vbeln LIKE vbak-vbeln, " Sales document
netwr LIKE vbak-netwr, " Net Value of the Sales Order
waerk LIKE vbak-waerk, " Document currency
END OF gt_vbak.
INITIALIZATION.
v_1 = 'Maximum of records to read'.
START-OF-SELECTION.
PERFORM f_read_data.
PERFORM f_display_data.
Form f_read_data
FORM f_read_data.
SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_vbak
FROM vbak
UP TO p_max ROWS
WHERE kunnr IN s_kunnr
AND vbeln IN s_vbeln
AND vkorg IN s_vkorg.
ENDFORM. " F_READ_DATA
Form f_display_data
FORM f_display_data.
DEFINE m_fieldcat.
add 1 to ls_fieldcat-col_pos.
ls_fieldcat-fieldname = &1.
ls_fieldcat-ref_tabname = 'VBAK'.
ls_fieldcat-do_sum = &2.
ls_fieldcat-cfieldname = &3.
append ls_fieldcat to lt_fieldcat.
END-OF-DEFINITION.
DEFINE m_sort.
add 1 to ls_sort-spos.
ls_sort-fieldname = &1.
ls_sort-up = 'X'.
ls_sort-subtot = &2.
append ls_sort to lt_sort.
END-OF-DEFINITION.
DATA:
ls_fieldcat TYPE slis_fieldcat_alv,
lt_fieldcat TYPE slis_t_fieldcat_alv,
lt_sort TYPE slis_t_sortinfo_alv,
ls_sort TYPE slis_sortinfo_alv,
ls_layout TYPE slis_layout_alv.
m_fieldcat 'VKORG' '' ''.
m_fieldcat 'KUNNR' '' ''.
m_fieldcat 'VBELN' '' ''.
m_fieldcat 'NETWR' 'X' 'WAERK'.
m_fieldcat 'WAERK' '' ''.
m_sort 'VKORG' 'X'. " Sort by vkorg and subtotal
m_sort 'KUNNR' 'X'. " Sort by kunnr and subtotal
m_sort 'VBELN' ''. " Sort by vbeln
ls_layout-cell_merge = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
is_layout = ls_layout
it_fieldcat = lt_fieldcat
it_sort = lt_sort
TABLES
t_outtab = gt_vbak.
ENDFORM. " F_DISPLAY_DATA
END OF PROGRAM Z_DEMO_ALV_SORT **********************
Regards
fareedas -
Problem in Printing the ALV list
Hi,
I have one problem with printing the ALV list. While printing the ALV list(thro Print Icon on application Tool bar) ,Fist page of my print out contains some other inforamtion.
inforamtions included two tables
first table contains Sort Criteria, Ascdg, Descnd, Subtotal columns.
And second table contains Data statistics , number of
columns.
But from Second page onwards , my alv list printed correctly .
How can i avoid the First page inforamtion and
what is the Reason of coming like this?
Thanks,
Neptune.MI assume you are using function module Reuse_alv_grid_display or reuse_alv_list_display for ALV.
If this is the case, there is a parameter called IS_PRINT that you need to supply while calling the function module.
you can for exapmle declare
data:
printstruc type SLIS_PRINT_ALV.
printstruc-NO_PRINT_LISTINFOS = 'X'.
call function 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
IS_PRINT = printstruc
There are many other flags in is_print structures that you can use to manipulate the printing.
Cheers! -
How to do subtotal in alv?
Hi,
I have a problem to do the subtotal in alv.
The outlook of alv now is as following:
Specimen Adversary Amount
ZZZ 300100089 1050
ZZZ 300100089 -1050
90256243 300100000 193410
90256242 300100000 173250
90256241 300100000 173250
90256240 300100000 173250
90256239 300100000 173250
90256238 300100000 173250
90256237 300100000 173250
What I need to do it to sum up the amount for same "ADVERSARY"
The out-come image should be
Specimen Adversary Amount
ZZZ 300100089 1050
ZZZ 300100089 -1050
subtotal 0
90256243 300100000 193410
90256242 300100000 173250
90256241 300100000 173250
90256240 300100000 173250
90256239 300100000 173250
90256238 300100000 173250
90256237 300100000 173250
subtotal 1232910
Question:
How can I add the subtotal in alv?
Please help!!
The following is the original coding:
END-OF-SELECTION.
SORT t.
LOOP AT t.
AT NEW bukrs.
CLEAR anz_dl.
CLEAR htext-anzahl.
CLEAR htext-datei.
htext-text1 = ' records writen in file '.
CLEAR p_pfad.
CONCATENATE
i_pfad
'CU_CC'
t-bukrs
sy-datum+6(2)
sy-datum+4(2)
sy-datum(4)
sy-uzeit
'.txt'
INTO p_pfad.
CLEAR outtab.
REFRESH outtab.
REFRESH: gt_outalv. "INS MG020207
ENDAT.
IF t-shkzg = 'H'.
h_betrg = t-wrbtr * -1.
ELSE.
h_betrg = t-wrbtr.
h_dmbtr = t-dmbtr.
ENDIF.
s-filler1 = s-filler2 = s-filler3 = s-filler4 = s-filler5 = ';'.
s-filler6 = s-filler7 = s-filler8 = ';'.
s-filler9 = s-filler10 = s-filler11 = s-filler12 = s-filler13 = ';'.
s-filler14 = ';'.
s-belnr = t-belnr.
IF t-xblnr NE space. "WD041005a
s-xblnr = t-xblnr. "WD041005a
ELSE. "WD041005a
s-xblnr = t-belnr. "WD041005a
ENDIF. "WD041005a
WHILE s-xblnr(1) EQ '0'. "INS MG130606
SHIFT s-xblnr LEFT. "INS MG130606
ENDWHILE. "INS MG130606
WRITE t-kunnr TO s-kunnr NO-ZERO.
s-lifn2 = s-kunnr.
shift s-lifn2 RIGHT.
s-lifn2(1) = 'R'.
S-KUNNR = T-KUNNR+5(5).
s-bldat+2(1) = '/'.
s-bldat+5(1) = '/'.
s-bldat0(2) = t-bldat4(2).
s-bldat3(2) = t-bldat6(2).
s-bldat6(4) = t-bldat0(4).
s-budat+2(1) = '/'.
s-budat+5(1) = '/'.
s-budat0(2) = t-budat4(2).
s-budat3(2) = t-budat6(2).
s-budat6(4) = t-budat0(4).
s-netdt+2(1) = '/'.
s-netdt+5(1) = '/'.
s-netdt0(2) = t-netdt4(2).
s-netdt3(2) = t-netdt6(2).
s-netdt6(4) = t-netdt0(4).
s-waers = t-waers.
s-dmbtr = t-dmbtr.
s-sgtxt = t-sgtxt.
CLEAR s-twaer.
SELECT SINGLE waers INTO s-twaer
FROM t001
WHERE bukrs = t-bukrs.
IF h_betrg < 0.
hs_betrg+0(1) = '-'.
ELSE.
hs_betrg+0(1) = ' '.
ENDIF.
WRITE h_betrg CURRENCY t-waers TO hs_betrg+1 NO-GROUPING
NO-SIGN
LEFT-JUSTIFIED.
REPLACE ',' WITH '.' INTO hs_betrg.
WRITE hs_betrg TO s-betrg.
IF h_dmbtr < 0.
hs_betrg+0(1) = '-'.
ELSE.
hs_betrg+0(1) = ' '.
ENDIF.
WRITE h_dmbtr CURRENCY t-waers TO hs_betrg+1 NO-GROUPING
NO-SIGN
LEFT-JUSTIFIED.
REPLACE ',' WITH '.' INTO hs_betrg.
WRITE hs_betrg TO s-dmbtr.
s-compcode = t-bukrs. "fw070905
IF p_downl = 'X'.
MOVE s TO outtab-s.
APPEND outtab.
ADD 1 TO anz_dl.
ENDIF.
gs_outalv-belnr = s-belnr. "INS MG020207
*<<<< CR01 START ADD as_outalv-zuonr
gs_outalv-zuonr = s-zuonr. "CR01
*>>>> CR01 EDD ADD as_outalv-zuonr
gs_outalv-kunnr = s-kunnr. "INS MG020207
gs_outalv-bldat = s-bldat. "INS MG020207
gs_outalv-netdt = s-netdt. "INS MG020207
gs_outalv-betrg = s-betrg. "INS MG020207
gs_outalv-waers = s-waers. "INS MG020207
gs_outalv-compcode = s-compcode. "INS MG020207
gs_outalv-budat = s-budat. "INS MG020207
gs_outalv-sgtxt = s-sgtxt.
gs_outalv-kmmnt = s-kmmnt.
gs_outalv-vbeln = s-vbeln.
gs_outalv-xblnr = s-xblnr.
gs_outalv-lifn2 = s-lifn2.
gs_outalv-dmbtr = s-dmbtr.
gs_outalv-twaer = s-twaer.
APPEND gs_outalv TO gt_outalv. "INS MG020207
AT END OF bukrs.
WRITE anz_dl TO htext-anzahl.
WRITE p_pfad TO htext-datei.
CONDENSE htext.
IF p_downl = 'X'.
SKIP 2.
WRITE: / htext.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = p_pfad
filetype = 'ASC'
TABLES
data_tab = outtab
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.
IF sy-subrc 0.
write: / 'Error creating File:', P_Pfad, sy-subrc.
MESSAGE e405 WITH text-002 p_pfad.
ENDIF.
ENDIF.
*<<<<< INS MG020207
IF p_alvd EQ 'X'.
PERFORM build_layout_data.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_structure_name = 'GT_OUTALV'
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
i_callback_top_of_page = 'TOP-OF-PAGE'
TABLES
t_outtab = gt_outalv.
ENDIF.
*>>>>> INS MG020207
ENDAT.
ENDLOOP.Check this code....it will help you...reward if useful.
REPORT ZPP473_VEHICLE_REVERSAL_REP NO STANDARD PAGE HEADING
MESSAGE-ID ZPP.
TABLES:ZPP18_RT_CORR.
TYPE-POOLS:SLIS.
DATA:BEGIN OF WA_VEH_REV,
VEHNO TYPE ZPP18_RT_CORR-VEHNO,
MATNR TYPE ZPP18_RT_CORR-MATNR,
WERKS TYPE ZPP18_RT_CORR-WERKS,
MDV01 TYPE ZPP18_RT_CORR-MDV01,
ENGNO TYPE ZPP18_RT_CORR-ENGNO,
FRMNO TYPE ZPP18_RT_CORR-FRMNO,
ERFMG TYPE ZPP18_RT_CORR-ERFMG,
SHIFT TYPE ZPP18_RT_CORR-SHIFT,
ZUNAME TYPE ZPP18_RT_CORR-ZUNAME,
ZDATE TYPE ZPP18_RT_CORR-ZDATE,
MAKTX TYPE MAKT-MAKTX,
ZREASON_DES TYPE ZPP17_REASON_COD-ZREASON_DES,
*VTEXT TYPE T179T-VTEXT,
END OF WA_VEH_REV.
DATA:IT_VEH_REV LIKE STANDARD TABLE OF WA_VEH_REV.
DATA: ALVFLD TYPE SLIS_FIELDCAT_ALV,
FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: WK_LAYOUT TYPE SLIS_LAYOUT_ALV,
I_SORT TYPE SLIS_T_SORTINFO_ALV,
W_SORT LIKE LINE OF I_SORT.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:
SO_ZDATE FOR ZPP18_RT_CORR-ZDATE OBLIGATORY,
SO_WERKS FOR ZPP18_RT_CORR-WERKS,
SO_SHIFT FOR ZPP18_RT_CORR-SHIFT,
SO_MDV01 FOR ZPP18_RT_CORR-MDV01,
SO_MATNR FOR ZPP18_RT_CORR-MATNR,
SO_VEHNO FOR ZPP18_RT_CORR-VEHNO,
SO_ENGNO FOR ZPP18_RT_CORR-ENGNO,
SO_FRMNO FOR ZPP18_RT_CORR-FRMNO,
SO_UNAME FOR ZPP18_RT_CORR-ZUNAME.
SELECTION-SCREEN END OF BLOCK B1.
START-OF-SELECTION.
**GET REVERSAL,MATERIAL DESCRIPTIONS, REASON DESCRIPTIONS
SELECT ZPP18_RT_CORR~VEHNO
ZPP18_RT_CORR~MATNR
ZPP18_RT_CORR~WERKS
ZPP18_RT_CORR~MDV01
ZPP18_RT_CORR~ENGNO
ZPP18_RT_CORR~FRMNO
ZPP18_RT_CORR~ERFMG
ZPP18_RT_CORR~SHIFT
ZPP18_RT_CORR~ZUNAME
ZPP18_RT_CORR~ZDATE
MAKT~MAKTX
ZPP17_REASON_COD~ZREASON_DES
INTO TABLE IT_VEH_REV FROM
ZPP18_RT_CORR INNER JOIN MAKT
ON ( ZPP18_RT_CORRMANDT = MAKTMANDT AND
ZPP18_RT_CORRMATNR = MAKTMATNR )
INNER JOIN ZPP17_REASON_COD
ON ( ZPP18_RT_CORRMANDT = ZPP17_REASON_CODMANDT AND
ZPP18_RT_CORRZREASON = ZPP17_REASON_CODZREASON )
CLIENT SPECIFIED
WHERE ZPP18_RT_CORR~MANDT = SY-MANDT
AND ZPP18_RT_CORR~ZDATE IN SO_ZDATE
AND ZPP18_RT_CORR~WERKS IN SO_WERKS
AND ZPP18_RT_CORR~SHIFT IN SO_SHIFT
AND ZPP18_RT_CORR~MATNR IN SO_MATNR
AND ZPP18_RT_CORR~MDV01 IN SO_MDV01
AND ZPP18_RT_CORR~VEHNO IN SO_VEHNO
AND ZPP18_RT_CORR~ENGNO IN SO_ENGNO
AND ZPP18_RT_CORR~FRMNO IN SO_FRMNO
AND ZPP18_RT_CORR~ZUNAME IN SO_UNAME
AND MAKT~SPRAS = SY-LANGU.
IF SY-SUBRC = 0.
SORT IT_VEH_REV ASCENDING BY ZDATE SHIFT WERKS MDV01 MATNR.
ELSE.
MESSAGE I961 WITH 'No Data Found...Try Again !!!'.
STOP.
ENDIF.
**BUILD ALV DISPLAY.
DEFINE ALV_MACRO.
ALVFLD-FIELDNAME = &1.
ALVFLD-SELTEXT_M = &2.
ALVFLD-COL_POS = &3.
IF &1 = 'ERFMG'.
ALVFLD-DO_SUM = 'X'.
ENDIF.
APPEND ALVFLD TO FIELDCAT.
CLEAR ALVFLD.
END-OF-DEFINITION.
REFRESH FIELDCAT.
WK_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
ALV_MACRO 'ZDATE' 'Rev.Date' '1'.
ALV_MACRO 'SHIFT' 'Shift' '2'.
ALV_MACRO 'WERKS' 'Plant' '3'.
ALV_MACRO 'MDV01' 'Conveyor' '4'.
ALV_MACRO 'MATNR' 'Material.No' '5'.
ALV_MACRO 'MAKTX' 'Description' '6'.
ALV_MACRO 'VEHNO' 'Veh.No' '7'.
ALV_MACRO 'ENGNO' 'Eng.No' '8'.
ALV_MACRO 'FRMNO' 'Frame.No' '9'.
ALV_MACRO 'ERFMG' 'Qty' '10'. <----Do Sum Here
ALV_MACRO 'ZREASON_DES' 'Reason' '11'.
ALV_MACRO 'ZUNAME' 'User.Reversed' '12'.
REFRESH I_SORT.
W_SORT-SPOS = 1.
W_SORT-FIELDNAME = 'ZDATE'.
W_SORT-UP = 'X'.
APPEND W_SORT TO I_SORT.
CLEAR W_SORT.
W_SORT-SPOS = 6.
W_SORT-FIELDNAME = 'MAKTX'.
W_SORT-UP = 'X'.
W_SORT-SUBTOT = 'X'.
APPEND W_SORT TO I_SORT.
CLEAR W_SORT.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_GRID_TITLE = 'Vehicle Reversal Report'
IS_LAYOUT = WK_LAYOUT
IT_FIELDCAT = FIELDCAT[]
IT_SORT = I_SORT[]
TABLES
T_OUTTAB = IT_VEH_REV[]
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.
END-OF-SELECTION. -
How to find out the total, subtotal in alv report
hi dears,
how to find out the total, subtotal in alv report?
pls tell me logic ,
i will be waiting for eply
regards
eswarHi,
<b>ALV Grid List with sub-totals</b>
REPORT z_demo_alv_sort.
* This program lists orders (VBAK) with sort and sub-total for *
* 'sold-to-party' (KUNNR) and 'Sales organization' (VKORG) *
TABLES : vbak.
TYPE-POOLS: slis. " ALV Global types
SELECT-OPTIONS :
s_vkorg FOR vbak-vkorg, " Sales organization
s_kunnr FOR vbak-kunnr, " Sold-to party
s_vbeln FOR vbak-vbeln. " Sales document
SELECTION-SCREEN :
SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max.
PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.
SELECTION-SCREEN END OF LINE.
DATA:
BEGIN OF gt_vbak OCCURS 0,
vkorg LIKE vbak-vkorg, " Sales organization
kunnr LIKE vbak-kunnr, " Sold-to party
vbeln LIKE vbak-vbeln, " Sales document
netwr LIKE vbak-netwr, " Net Value of the Sales Order
waerk LIKE vbak-waerk, " Document currency
END OF gt_vbak.
INITIALIZATION.
v_1 = 'Maximum of records to read'.
START-OF-SELECTION.
PERFORM f_read_data.
PERFORM f_display_data.
* Form f_read_data
FORM f_read_data.
SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_vbak
FROM vbak
UP TO p_max ROWS
WHERE kunnr IN s_kunnr
AND vbeln IN s_vbeln
AND vkorg IN s_vkorg.
ENDFORM. " F_READ_DATA
* Form f_display_data
FORM f_display_data.
DEFINE m_fieldcat.
add 1 to ls_fieldcat-col_pos.
ls_fieldcat-fieldname = &1.
ls_fieldcat-ref_tabname = 'VBAK'.
ls_fieldcat-do_sum = &2.
ls_fieldcat-cfieldname = &3.
append ls_fieldcat to lt_fieldcat.
END-OF-DEFINITION.
DEFINE m_sort.
add 1 to ls_sort-spos.
ls_sort-fieldname = &1.
ls_sort-up = 'X'.
ls_sort-subtot = &2.
append ls_sort to lt_sort.
END-OF-DEFINITION.
DATA:
ls_fieldcat TYPE slis_fieldcat_alv,
lt_fieldcat TYPE slis_t_fieldcat_alv,
lt_sort TYPE slis_t_sortinfo_alv,
ls_sort TYPE slis_sortinfo_alv,
ls_layout TYPE slis_layout_alv.
m_fieldcat 'VKORG' '' ''.
m_fieldcat 'KUNNR' '' ''.
m_fieldcat 'VBELN' '' ''.
m_fieldcat 'NETWR' 'X' 'WAERK'.
m_fieldcat 'WAERK' '' ''.
m_sort 'VKORG' 'X'. " Sort by vkorg and subtotal
m_sort 'KUNNR' 'X'. " Sort by kunnr and subtotal
m_sort 'VBELN' ''. " Sort by vbeln
ls_layout-cell_merge = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
is_layout = ls_layout
it_fieldcat = lt_fieldcat
it_sort = lt_sort
TABLES
t_outtab = gt_vbak.
ENDFORM. " F_DISPLAY_DATA
***************** END OF PROGRAM Z_DEMO_ALV_SORT **********************
Regards
Sudheer -
Hi,
I want to display the Total and Subtotal in Alv in Webdynpro Abap, and i am getting this Error( Access via 'NULL' object reference not possible) and also i have checked the Cardinality also. Please get me a Good Solution.I think your node( the node which is binded to data node of alv interface controller ) having collection cardinality of 1:1, if yes, then change it to 0:N,
i hope this will solve the issue.
If you still get the error, go to st22, open your error, go down that page (keep pressing pagedown button ), then you will find your code and there find this arrow >>>>> then let me know that code line.
Regards
Srinivas -
Adding row after subtotal in ALV
Hi Guys,
can we add one row after the subtotal in ALV.
Like the below...
field1 field2 field3 field4
Sub total. 120 121 125 130
Test 150
can you help me about the above...
Thanks,
LingeshHi
If you use GROUPLEVEL_CHANGE you have to creare a form like this:
FORM GROUPLEVEL_CHANGE
USING P_LINEINFO TYPE SLIS_LINEINFO
LS_GROUPS TYPE KKBLO_GROUPLEVELS.
ENDFORM. "GROUPLEVEL_CHANGE
In the P_LINEINFO you have details of row and in the LS_GROUPS details of level of sorting.
For example I used it to re-write subtotal:
FORM GROUPLEVEL_CHANGE USING P_LINEINFO TYPE SLIS_LINEINFO
LS_GROUPS TYPE KKBLO_GROUPLEVELS.
PERFORM WRITE_SUB_TOTAL USING LS_GROUPS.
ENDFORM. "GROUPLEVEL_CHANGE
FORM WRITE_SUB_TOTAL USING P_GROUPS TYPE KKBLO_GROUPLEVELS.
DATA: TOT_SALDO_A LIKE BSID-DMBTR,
TOT_FATTURATO_A LIKE BSID-DMBTR,
TOT_DSO_A LIKE BSID-DMBTR.
DATA: WA_GROUP TYPE KKBLO_GROUPLEVELS.
DATA: RUN_LEVEL TYPE I.
DATA: BEGIN OF T_LEVEL OCCURS 1,
LEVEL TYPE I,
INDEX_FROM TYPE I,
INDEX_TO TYPE I,
END OF T_LEVEL.
T_LEVEL-LEVEL = P_GROUPS-LEVEL.
T_LEVEL-INDEX_FROM = P_GROUPS-INDEX_FROM.
T_LEVEL-INDEX_TO = P_GROUPS-INDEX_TO.
APPEND T_LEVEL.
Check livel:
CALL FUNCTION 'ALV_GROUPLEVELS_GET'
IMPORTING
ET_GROUPS = GT_GROUP
TABLES
T_OUTTAB = <FS_OUTPUT>.
RUN_LEVEL = P_GROUPS-LEVEL + 1.
IF RUN_LEVEL <= LEVEL.
DO.
LOOP AT GT_GROUP INTO WA_GROUP
WHERE INDEX_FROM => P_GROUPS-INDEX_FROM
AND INDEX_TO <= P_GROUPS-INDEX_TO
AND LEVEL = RUN_LEVEL.
T_LEVEL-LEVEL = RUN_LEVEL.
T_LEVEL-INDEX_FROM = WA_GROUP-INDEX_FROM.
T_LEVEL-INDEX_TO = WA_GROUP-INDEX_TO.
ENDLOOP.
IF SY-SUBRC = 0.
APPEND T_LEVEL.
ENDIF.
RUN_LEVEL = RUN_LEVEL + 1.
IF RUN_LEVEL > LEVEL. EXIT. ENDIF.
ENDDO.
ENDIF.
SORT T_LEVEL BY LEVEL DESCENDING.
LOOP AT T_LEVEL.
TOT_SALDO_A = TOT_FATTURATO_A = 0.
LOOP AT <FS_OUTPUT> INTO <FS_WA_OUT>
FROM T_LEVEL-INDEX_FROM
TO T_LEVEL-INDEX_TO.
ASSIGN COMPONENT 'ZSALDO'
OF STRUCTURE <FS_WA_OUT> TO <FS_SALDO>.
ASSIGN COMPONENT 'ZFATTURATO'
OF STRUCTURE <FS_WA_OUT> TO <FS_FATTURATO>.
TOT_SALDO_A = TOT_SALDO_A + <FS_SALDO>.
TOT_FATTURATO_A = TOT_FATTURATO_A + <FS_FATTURATO>.
ENDLOOP.
TOT_SALDO = TOT_SALDO + TOT_SALDO_A .
TOT_FATTURATO = TOT_FATTURATO + TOT_FATTURATO_A.
PERFORM CALCULATE_DSO USING TOT_FATTURATO_A
TOT_SALDO_A TOT_DSO_A.
PERFORM WRITE_TOT_DSO
USING TOT_SALDO_A
TOT_FATTURATO_A TOT_DSO_A
T_LEVEL-LEVEL T_LEVEL-INDEX_FROM.
ENDLOOP.
ENDFORM. " WRITE_SUB_TOTAL
Max -
Need help in getting subtotal in ALV
Hi Experts
I've done subtotal in ALV. I'm getting below output. But i want net value subtotal should come by adding to its previous subtotal.
Ex : 4969 02.01.1997 CURA 5.500
4970 03.01.1997 CURA 38.338 (32.838 + 5.500)
My code :
type-pools slis.
data : BEGIN OF ty_vbak OCCURS 0,
VBELN like vbak-vbeln,
erdat like vbak-erdat,
ernam like vbak-ernam,
netwr like vbak-netwr,
END OF ty_vbak.
DATA : it_fcat type SLIS_T_FIELDCAT_ALV,
WA_FCAT TYPE SLIS_FIELDCAT_ALV,
IT_SORT TYPE SLIS_T_SORTINFO_ALV,
WA_SORT TYPE SLIS_SORTINFO_ALV,
G_VBELN TYPE VBAK-VBELN.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-REPID
I_INTERNAL_TABNAME = 'TY_VBAK'
* I_STRUCTURE_NAME =
* I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = SY-REPID
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE =
CHANGING
CT_FIELDCAT = it_fcat.
SELECT-OPTIONS S_VBELN FOR G_VBELN.
SELECT VBELN ERDAT ernam NETWR
FROM VBAK INTO TABLE ty_vbak WHERE VBELN IN S_VBELN.
* WA_FCAT-FIELDNAME = 'VBELN'.
* WA_FCAT-SELTEXT_M = 'Sales Document'.
* WA_FCAT-OUTPUTLEN = 20.
* APPEND WA_FCAT TO IT_FCAT.
* WA_FCAT-FIELDNAME = 'ERDAT'.
* WA_FCAT-SELTEXT_M = 'DATE'.
* APPEND WA_FCAT TO IT_FCAT.
* WA_FCAT-FIELDNAME = 'NETWR'.
* WA_FCAT-SELTEXT_M = 'NET PRICE'.
* WA_FCAT-DO_SUM = 'X'.
* WA_FCAT-OUTPUTLEN = 40.
* APPEND WA_FCAT TO IT_FCAT.
* CLEAR WA_FCAT.
READ TABLE IT_FCAT INTO WA_FCAT WITH KEY FIELDNAME = 'NETWR'.
WA_SORT-FIELDNAME = 'ERDAT'.
WA_SORT-UP = 'X'.
WA_SORT-SUBTOT = 'X'.
APPEND WA_SORT TO IT_SORT.
WA_FCAT-FIELDNAME = ' '.
WA_FCAT-DO_SUM = 'X'.
MODIFY IT_FCAT FROM WA_FCAT TRANSPORTING
DO_SUM KEY WHERE FIELDNAME = 'NETWR'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
* I_CALLBACK_PROGRAM = ' '
* 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 = IT_FCAT
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
IT_SORT = IT_SORT
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* 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 = ty_vbak
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.Hi,
Please try the below Sample code once.
TYPE-POOLS : SLIS.
types : begin of ty_final,
vbeln type vbak-vbeln,
posnr type vbap-posnr,
ernam type vbak-ernam,
erdat type vbak-erdat,
netwr type vbak-netwr,
COL(4) TYPE C,
end of ty_final.
data : lt_vbak type table of vbak,
lt_vbap type table of vbap,
wa_vbap type vbap,
wa_vbak type vbak,
lt_final type table of ty_final,
wa_final type ty_final,
LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_LAYOUT TYPE SLIS_LAYOUT_ALV,
WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
L_NETWR TYPE VBAK-NETWR,
INDEX TYPE SY-INDEX.
select * from vbak into table lt_vbak up to 100 rows.
if lt_vbap is not initial.
select * from vbap into table lt_vbap for all entries in lt_vbak where vbeln = lt_vbak-vbeln.
endif.
LOOP AT LT_VBAP INTO WA_VBAP.
INDEX = INDEX + 1.
READ TABLE LT_VBAK INTO WA_VBAK WITH KEY VBELN = WA_VBAP-VBELN.
WA_FINAL-VBELN = WA_VBAK-VBELN.
WA_FINAL-POSNR = WA_VBAP-POSNR .
WA_FINAL-ERNAM = WA_VBAK-ERNAM.
WA_FINAL-ERDAT = WA_VBAK-ERDAT.
WA_FINAL-NETWR = WA_VBAP-NETWR.
APPEND WA_FINAL TO LT_FINAL.
L_NETWR = L_NETWR + WA_FINAL-NETWR.
AT END OF VBELN.
WA_FINAL-VBELN = ' '.
WA_FINAL-POSNR = ' ' .
WA_FINAL-ERNAM = 'Sub Total'.
WA_FINAL-ERDAT = ' '.
WA_FINAL-NETWR = L_NETWR.
WA_FINAL-COL = 'C310'.
INDEX = INDEX + 1.
INSERT WA_FINAL INTO LT_FINAL INDEX INDEX.
CLEAR : WA_FINAL, WA_VBAK, WA_VBAP.
ENDAT.
ENDLOOP.
*Build fieldcat
PERFORM BUILDFIELDCAT USING : '1' 'VBELN' 'LT_FINAL' 'VBELN' ,
'2' 'POSNR' 'LT_FINAL' 'POSNR' ,
'3' 'ERNAM' 'LT_FINAL' 'ERNAM' ,
'4' 'ERDAT' 'LT_FINAL' 'ERDAT' ,
'5' 'NETWR' 'LT_FINAL' 'NETWR'.
* Layout Design
WA_LAYOUT-ZEBRA = 'X'.
WA_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
WA_LAYOUT-INFO_FIELDNAME = 'COL'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = SY-CPROG
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
IS_LAYOUT = WA_LAYOUT
IT_FIELDCAT = LT_FIELDCAT
I_SAVE = 'A'
TABLES
T_OUTTAB = LT_FINAL.
*& Form BUILDFIELDCAT
FORM BUILDFIELDCAT USING P_COL_POS
P_FIELDNAME
P_REF_TAB
P_SEL_TXT. "#EC *
WA_FIELDCAT-COL_POS = P_COL_POS.
WA_FIELDCAT-FIELDNAME = P_FIELDNAME.
WA_FIELDCAT-SELTEXT_L = P_SEL_TXT .
APPEND WA_FIELDCAT TO LT_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. " BUILDFIELDCAT
Regards,
Srikanth -
Multiple level of subtotal in alv
Hi Experts,
Can any one tell me how to get multiple level of subtotal in alv?
I am using function module to get the output.Hi Surajit
can you explain ur requirement
Regards
Prabumanoharan -
Subtotaling in ALV(urgent)
Hi experts,
can anyone tell how to achieve the subtotaling in ALV'S.any pseudo code .points will be awarded.
Regards,
nagarajHello Nagaraj,
In the sort table use:
REFRESH IT_SORT.
CLEAR: G_S_SORT,G_S_SORT.
G_S_SORT-SPOS = 1.
G_S_SORT-FIELDNAME = 'EBELN'.
G_S_SORT-UP = 'X'.
G_S_SORT-DOWN = ' '.
<b> G_S_SORT-SUBTOT = 'X'.</b>
G_S_SORT-EXPA = ' '.
APPEND G_S_SORT TO IT_SORT.
If useful reward.
Vasanth -
Problem with subtotal calculation in ALV reports
Hi All,
I am doing one program for calculating subtoals in ALV . For this i want to display subtotal text at each envey subtotal 's row.
For that i have created one form 'SUB_SUBTOT_TEXT' and it has given to IT_EVENTS-FORM. But SUB_SUBTOT_TEXT Form is not called by IT_EVENTS event.
what are all the mandatories for displaying subtotal text.
Can any one please help me.
Thanks in Advance.Hi Sree,
*& Table declaration
&----TABLES: ekko.&----
*& Type pool declaration
TYPE-POOLS: slis. " Type pool for ALV&----
*& Selection screen
SELECT-OPTIONS: s_ebeln FOR ekko-ebeln.&----
*& Type declaration
&----* Type declaration for internal table to store EKPO data
TYPES: BEGIN OF x_data,
ebeln TYPE char30, " Document no.
ebelp TYPE ebelp, " Item no
matnr TYPE matnr, " Material no
matnr1 TYPE matnr, " Material no
werks TYPE werks_d, " Plant
werks1 TYPE werks_d, " Plant
ntgew TYPE entge, " Net weight
gewe TYPE egewe, " Unit of weight
END OF x_data.&----
*& Internal table declaration
DATA:* Internal table to store EKPO data
i_ekpo TYPE STANDARD TABLE OF x_data INITIAL SIZE 0,
Internal table for storing field catalog information
i_fieldcat TYPE slis_t_fieldcat_alv,
Internal table for Top of Page info. in ALV Display
i_alv_top_of_page TYPE slis_t_listheader,
Internal table for ALV Display events
i_events TYPE slis_t_event,
Internal table for storing ALV sort information
i_sort TYPE slis_t_sortinfo_alv,
i_event TYPE slis_t_event.&----
*& Work area declaration
&----DATA:
wa_ekko TYPE x_data,
wa_layout TYPE slis_layout_alv,
wa_events TYPE slis_alv_event,
wa_sort TYPE slis_sortinfo_alv.&----
*& Constant declaration
&----CONSTANTS:
c_header TYPE char1
VALUE 'H', "Header in ALV
c_item TYPE char1
VALUE 'S'.&----
*& Start-of-selection event
&----START-OF-SELECTION.* Select data from ekpo
SELECT ebeln " Doc no
ebelp " Item
matnr " Material
matnr " Material
werks " Plant
werks " Plant
ntgew " Quantity
gewei " Unit
FROM ekpo
INTO TABLE i_ekpo
WHERE ebeln IN s_ebeln
AND ntgew NE '0.00'. IF sy-subrc = 0.
SORT i_ekpo BY ebeln ebelp matnr .
ENDIF.* To build the Page header
PERFORM sub_build_header.* To prepare field catalog
PERFORM sub_field_catalog.* Perform to populate the layout structure
PERFORM sub_populate_layout.* Perform to populate the sort table.
PERFORM sub_populate_sort.* Perform to populate ALV event
PERFORM sub_get_event.END-OF-SELECTION.* Perform to display ALV report
PERFORM sub_alv_report_display.
*& Form sub_build_header
To build the header
No Parameter
FORM sub_build_header .* Local data declaration
DATA: l_system TYPE char10 , "System id
l_r_line TYPE slis_listheader, "Hold list header
l_date TYPE char10, "Date
l_time TYPE char10, "Time
l_success_records TYPE i, "No of success records
l_title(300) TYPE c. " Title
Title Display
l_r_line-typ = c_header. " header
l_title = 'Test report'(001).
l_r_line-info = l_title.
APPEND l_r_line TO i_alv_top_of_page.
CLEAR l_r_line.* Run date Display
CLEAR l_date.
l_r_line-typ = c_item. " Item
WRITE: sy-datum TO l_date MM/DD/YYYY.
l_r_line-key = 'Run Date :'(002).
l_r_line-info = l_date.
APPEND l_r_line TO i_alv_top_of_page.
CLEAR: l_r_line,
l_date.ENDFORM. " sub_build_header
*& Form sub_field_catalog
Build Field Catalog
No Parameter
FORM sub_field_catalog .* Build Field Catalog
PERFORM sub_fill_alv_field_catalog USING: '01' '01' 'EBELN' 'I_EKPO' 'L'
'Doc No'(003) ' ' ' ' ' ' ' ', '01' '02' 'EBELP' 'I_EKPO' 'L'
'Item No'(004) 'X' 'X' ' ' ' ', '01' '03' 'MATNR' 'I_EKPO' 'L'
'Material No'(005) 'X' 'X' ' ' ' ', '01' '03' 'MATNR1' 'I_EKPO' 'L'
'Material No'(005) ' ' ' ' ' ' ' ',
'01' '04' 'WERKS' 'I_EKPO' 'L'
'Plant'(006) 'X' 'X' ' ' ' ', '01' '04' 'WERKS1' 'I_EKPO' 'L'
'Plant'(006) ' ' ' ' ' ' ' ', '01' '05' 'NTGEW' 'I_EKPO' 'R'
'Net Weight'(007) ' ' ' ' 'GEWE' 'I_EKPO'.ENDFORM. " sub_field_catalog&----
*& Form sub_fill_alv_field_catalog
*& For building Field Catalog
*& p_rowpos Row position
*& p_colpos Col position
*& p_fldnam Fldname
*& p_tabnam Tabname
*& p_justif Justification
*& p_seltext Seltext
*& p_out no out
*& p_tech Technical field
*& p_qfield Quantity field
*& p_qtab Quantity table
FORM sub_fill_alv_field_catalog USING p_rowpos TYPE sycurow
p_colpos TYPE sycucol
p_fldnam TYPE fieldname
p_tabnam TYPE tabname
p_justif TYPE char1
p_seltext TYPE dd03p-scrtext_l
p_out TYPE char1
p_tech TYPE char1
p_qfield TYPE slis_fieldname
p_qtab TYPE slis_tabname.* Local declaration for field catalog
DATA: wa_lfl_fcat TYPE slis_fieldcat_alv. wa_lfl_fcat-row_pos = p_rowpos. "Row
wa_lfl_fcat-col_pos = p_colpos. "Column
wa_lfl_fcat-fieldname = p_fldnam. "Field Name
wa_lfl_fcat-tabname = p_tabnam. "Internal Table Name
wa_lfl_fcat-just = p_justif. "Screen Justified
wa_lfl_fcat-seltext_l = p_seltext. "Field Text
wa_lfl_fcat-no_out = p_out. "No output
wa_lfl_fcat-tech = p_tech. "Technical field
wa_lfl_fcat-qfieldname = p_qfield. "Quantity unit
wa_lfl_fcat-qtabname = p_qtab . "Quantity table IF p_fldnam = 'NTGEW'.
wa_lfl_fcat-do_sum = 'X'.
ENDIF.
APPEND wa_lfl_fcat TO i_fieldcat.
CLEAR wa_lfl_fcat.
ENDFORM. " sub_fill_alv_field_catalog&----
*& Form sub_populate_layout
Populate ALV layout
No Parameter
FORM sub_populate_layout . CLEAR wa_layout.
wa_layout-colwidth_optimize = 'X'." Optimization of Col widthENDFORM. " sub_populate_layout&----
*& Form sub_populate_sort
Populate ALV sort table
No Parameter
FORM sub_populate_sort .* Sort on material
wa_sort-spos = '01' .
wa_sort-fieldname = 'MATNR'.
wa_sort-tabname = 'I_EKPO'.
wa_sort-up = 'X'.
wa_sort-subtot = 'X'.
APPEND wa_sort TO i_sort .
CLEAR wa_sort.* Sort on plant
wa_sort-spos = '02'.
wa_sort-fieldname = 'WERKS'.
wa_sort-tabname = 'I_EKPO'.
wa_sort-up = 'X'.
wa_sort-subtot = 'X'.
APPEND wa_sort TO i_sort .
CLEAR wa_sort.
ENDFORM. " sub_populate_sort&----
*& Form sub_get_event
Get ALV grid event and pass the form name to subtotal_text
event
No Parameter
FORM sub_get_event .
CONSTANTS : c_formname_subtotal_text TYPE slis_formname VALUE
'SUBTOTAL_TEXT'. DATA: l_s_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 4
IMPORTING
et_events = i_event
EXCEPTIONS
list_type_wrong = 0
OTHERS = 0.* Subtotal
READ TABLE i_event INTO l_s_event
WITH KEY name = slis_ev_subtotal_text.
IF sy-subrc = 0.
MOVE c_formname_subtotal_text TO l_s_event-form.
MODIFY i_event FROM l_s_event INDEX sy-tabix.
ENDIF.ENDFORM. " sub_get_event&----
*& Form sub_alv_report_display
For ALV Report Display
No Parameter
FORM sub_alv_report_display .
DATA: l_repid TYPE syrepid .
l_repid = sy-repid .* This function module for displaying the ALV report
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = l_repid
i_callback_top_of_page = 'SUB_ALV_TOP_OF_PAGE'
is_layout = wa_layout
it_fieldcat = i_fieldcat
it_sort = i_sort
it_events = i_event
i_default = 'X'
i_save = 'A'
TABLES
t_outtab = i_ekpo
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE i000 WITH 'Error in ALV report display'(055).
ENDIF.ENDFORM. " sub_alv_report_display&----
FORM sub_alv_top_of_page
Call ALV top of page
No parameter
----FORM sub_alv_top_of_page. "#EC CALLED* To write header for the ALV
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = i_alv_top_of_page.
ENDFORM. "alv_top_of_page&----
*& Form subtotal_text
Build subtotal text
P_total Total
p_subtot_text Subtotal text info
FORM subtotal_text CHANGING
p_total TYPE any
p_subtot_text TYPE slis_subtot_text.
Material level sub total
IF p_subtot_text-criteria = 'MATNR'.
p_subtot_text-display_text_for_subtotal
= 'Material level total'(009).
ENDIF.* Plant level sub total
IF p_subtot_text-criteria = 'WERKS'.
p_subtot_text-display_text_for_subtotal = 'Plant level total'(010).
ENDIF.
ENDFORM. "subtotal_text
Hopes its helpful.
Regards,
Raj. -
Percentage Total/Subtotal in ALV Grid
Dear All,
I have to display an ALV report with percentage feilds. Everything is fine but the problem arises when the standard ALV sum functionality is used. It simply adds up all the percentage columns. Making do_sum = 'C' wont help either as it would simple give an average of all the percentage. My requirement is to show them through calculation. I have searched the web and saw some solutions with SUBTOTAL_TEXT nad some with OOP programming but i am not able to get this. Can anybody please help.
<REMOVED BY MODERATOR>
Thanks
MV
Edited by: Alvaro Tejada Galindo on Apr 21, 2008 4:24 PMhi manish,
try this program.
ALV Grid List with sub-totals
REPORT z_demo_alv_sort.
* This program lists orders (VBAK) with sort and sub-total for *
* 'sold-to-party' (KUNNR) and 'Sales organization' (VKORG) *
TABLES : vbak.
TYPE-POOLS: slis. " ALV Global types
SELECT-OPTIONS :
s_vkorg FOR vbak-vkorg, " Sales organization
s_kunnr FOR vbak-kunnr, " Sold-to party
s_vbeln FOR vbak-vbeln. " Sales document
SELECTION-SCREEN :
SKIP, BEGIN OF LINE,COMMENT 5(27) v_1 FOR FIELD p_max.
PARAMETERS p_max(2) TYPE n DEFAULT '20' OBLIGATORY.
SELECTION-SCREEN END OF LINE.
DATA:
BEGIN OF gt_vbak OCCURS 0,
vkorg LIKE vbak-vkorg, " Sales organization
kunnr LIKE vbak-kunnr, " Sold-to party
vbeln LIKE vbak-vbeln, " Sales document
netwr LIKE vbak-netwr, " Net Value of the Sales Order
waerk LIKE vbak-waerk, " Document currency
END OF gt_vbak.
INITIALIZATION.
v_1 = 'Maximum of records to read'.
START-OF-SELECTION.
PERFORM f_read_data.
PERFORM f_display_data.
* Form f_read_data
FORM f_read_data.
SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_vbak
FROM vbak
UP TO p_max ROWS
WHERE kunnr IN s_kunnr
AND vbeln IN s_vbeln
AND vkorg IN s_vkorg.
ENDFORM. " F_READ_DATA
* Form f_display_data
FORM f_display_data.
DEFINE m_fieldcat.
add 1 to ls_fieldcat-col_pos.
ls_fieldcat-fieldname = &1.
ls_fieldcat-ref_tabname = 'VBAK'.
ls_fieldcat-do_sum = &2.
ls_fieldcat-cfieldname = &3.
append ls_fieldcat to lt_fieldcat.
END-OF-DEFINITION.
DEFINE m_sort.
add 1 to ls_sort-spos.
ls_sort-fieldname = &1.
ls_sort-up = 'X'.
ls_sort-subtot = &2.
append ls_sort to lt_sort.
END-OF-DEFINITION.
DATA:
ls_fieldcat TYPE slis_fieldcat_alv,
lt_fieldcat TYPE slis_t_fieldcat_alv,
lt_sort TYPE slis_t_sortinfo_alv,
ls_sort TYPE slis_sortinfo_alv,
ls_layout TYPE slis_layout_alv.
m_fieldcat 'VKORG' '' ''.
m_fieldcat 'KUNNR' '' ''.
m_fieldcat 'VBELN' '' ''.
m_fieldcat 'NETWR' 'X' 'WAERK'.
m_fieldcat 'WAERK' '' ''.
m_sort 'VKORG' 'X'. " Sort by vkorg and subtotal
m_sort 'KUNNR' 'X'. " Sort by kunnr and subtotal
m_sort 'VBELN' ''. " Sort by vbeln
ls_layout-cell_merge = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
is_layout = ls_layout
it_fieldcat = lt_fieldcat
it_sort = lt_sort
TABLES
t_outtab = gt_vbak.
ENDFORM. " F_DISPLAY_DATA
***************** END OF PROGRAM Z_DEMO_ALV_SORT **********************
thanks
karthik
<REMOVED BY MODERATOR>
Edited by: Alvaro Tejada Galindo on Apr 21, 2008 4:50 PM -
Generating subtotal in ALV...
Hi,
I am using Function modules to display my data in ALV. I also want to perform a subtotal on a field named dmbtr.
I am not sure what is wrong but when I try to execute my code I get the error, "Field Catalog not found". Is my logic wrong or call to the function "REUSE_ALV_GRID_DISPLAY".
I had this error previously and was suggested by one of the forum members to use the itab name in CAPITAL letters and it worked.
But now, I still get it. Find below my code. What could be the problem ?? Please help.
thanks
*& Report Z_MIGO_TXJCD_REPORT
REPORT Z_MIGO_TXJCD_REPORT.
TYPE-POOLS: slis.
TABLES: makt,mseg,zmigo_extend,ttxj,mkpf.
DATA: BEGIN OF migo_data OCCURS 0,
txjcd LIKE zmigo_extend-txjcd,
matnr LIKE mseg-matnr,
werks LIKE mseg-werks,
lgort LIKE mseg-lgort,
bwart LIKE mseg-bwart,
menge LIKE mseg-menge,
dmbtr LIKE mseg-dmbtr,
budat LIKE mkpf-budat,
END OF migo_data.
DATA migo_data_alv LIKE migo_data occurs 0 with header line.
DATA: it_cat TYPE slis_t_fieldcat_alv,
wa_lay TYPE slis_layout_alv.
FIELD-SYMBOLS: <fs_cat> LIKE LINE OF it_cat.
SELECT-OPTIONS: so_matnr FOR makt-matnr,
so_budat FOR mkpf-budat,
so_werks FOR mseg-werks,
so_lgort FOR mseg-lgort,
so_bwart FOR mseg-bwart,
so_txjcd FOR ttxj-txjcd.
START-OF-SELECTION.
SELECT ctxjcd amatnr awerks algort a~bwart
amenge admbtr b~budat INTO TABLE
migo_data
FROM mseg AS a INNER JOIN mkpf AS b ON amblnr = bmblnr INNER JOIN
zmigo_extend AS c ON amblnr = cmblnr
WHERE a~matnr IN so_matnr
AND b~budat IN so_budat
AND a~werks IN so_werks
AND a~lgort IN so_lgort
AND a~bwart IN so_bwart
AND c~txjcd IN so_txjcd
ORDER BY c~txjcd.
loop at migo_data.
move-corresponding migo_data to migo_data_alv.
at end of txjcd.
sum.
append migo_data_alv.
migo_data_alv-dmbtr = migo_data-dmbtr.
endat.
at last.
sum.
append migo_data_alv.
migo_data_alv-dmbtr = migo_data-dmbtr.
endat.
endloop.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-cprog
i_internal_tabname = 'migo_data_alv'
i_inclname = sy-cprog
CHANGING
ct_fieldcat = it_cat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
LOOP AT it_cat ASSIGNING <fs_cat>.
CLEAR <fs_cat>-key.
ENDLOOP.
wa_lay-zebra = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_grid_title = 'MIGO report with Tax Jurisdiction Code'
is_layout = wa_lay
it_fieldcat = it_cat
TABLES
t_outtab = MIGO_DATA_ALV
EXCEPTIONS
program_error = 1
OTHERS = 2.Try building your field catalog like this.
* call function 'REUSE_ALV_FIELDCATALOG_MERGE'
* exporting
* i_program_name = sy-cprog
* i_internal_tabname = 'MIGO_DATA_ALV'
* i_inclname = sy-cprog
* changing
* ct_fieldcat = it_cat
* exceptions
* inconsistent_interface = 1
* program_error = 2
* others = 3.
wa_lay-zebra = 'X'.
<b>
data: tmp_fc type slis_fieldcat_alv .
tmp_fc-reptext_ddic = 'Material Number'.
tmp_fc-fieldname = 'MATNR'.
tmp_fc-tabname = 'MIGO_DATA_ALV'.
tmp_fc-outputlen = 18.
tmp_fc-do_sum = space.
append tmp_fc to it_cat.
tmp_fc-reptext_ddic = 'Plant'.
tmp_fc-fieldname = 'WERKS'.
tmp_fc-tabname = 'MIGO_DATA_ALV'.
tmp_fc-outputlen = 4.
tmp_fc-do_sum = space.
append tmp_fc to it_cat.
tmp_fc-reptext_ddic = 'Dmbtr'.
tmp_fc-fieldname = 'DMBTR'.
tmp_fc-tabname = 'MIGO_DATA_ALV'.
tmp_fc-outputlen = 15.
tmp_fc-do_sum = 'X'.
append tmp_fc to it_cat.</b>
loop at it_cat assigning <fs_cat>.
clear <fs_cat>-key.
endloop.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_grid_title = 'MIGO report with Tax Jurisdiction Code'
is_layout = wa_lay
it_fieldcat = it_cat
tables
t_outtab = migo_data_alv
exceptions
program_error = 1
others = 2.
Regards,
Rich Heilman -
hi friends..
how to maintain subtotal (group of fields) in alv gird display. we have two fields in our report. filed2 is editable mode. see the below the example..
eg:
field1 field2
abc 100.00
abc 200.00
abc 300.00
bcd 100.00
bcd 250.00
cde 250.00
cde 100.00
here we want sub total1.
pqr 100.00
pqr 200.00
qrs 250.00
rsu 210.00
here we want subtotal2
xyz 100.00
xyz 200.00
yza 100.00
here we want subtotal3.
angin we want subtotal1 + subtotal2
angin we want subtotal2 + subtotal3
angin we want subtotal1 + subtotal3
finally we wnat grand total.
whenever enduser edit the field2 value to effected all subtotal & grand totals.
in our report have this type of calcucation is there.
plese help me ..
thanks & regrads....DATA: struct_gridsort TYPE lvc_t_sort WITH HEADER LINE,
i_sort_fcat TYPE lvc_t_sort.
IN PBO,
PERFORM sort_outtable CHANGING i_sort_fcat.
FORM sort_outtable CHANGING p_i_sort_fcat.
struct_gridsort-fieldname = 'YEAR'.
<b>struct_gridsort-up = 'X'.</b> (for sorting)
APPEND struct_gridsort TO i_sort_fcat.
CLEAR struct_gridsort.
struct_gridsort-fieldname = 'MONTH'.
struct_gridsort-up = 'X'.
<b> struct_gridsort-subtot = 'X'</b>.(SubTotal)
APPEND struct_gridsort TO i_sort_fcat.
CLEAR struct_gridsort.
ENDFORM. " sort_outtable
Hope this helps.
Kindly reward points and close the thread if ur problem got solved or kindly get back. -
Problem with sub totals ALV Grid
Hi experts,
I got one requirement, I am using ALV GRID function modules technique. My requirement is, I want to display one value at subtotal line(i.e. like header value). How to display the table values in the subtotal line.
Please give any solution for this.
Thanks in advance.
Sandya.Hi Sandhya,
i will send a sample code for ur problem.And also i will send a entire program about subtotals.Check it once ok..Copy the below prog and execute it and debug it..
*SubTotal on the Field NETWR
wa_fieldcat-tabname = 'IT_SALESORDER'. "Internal
wa_fieldcat-fieldname = 'NETWR'. "Field Name
wa_fieldcat-do_sum = 'X'. "Sum
APPEND wa_fieldcat TO gt_fieldcat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
i_callback_program = sy-repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT =
it_fieldcat = gt_fieldcat
SAMPLE PROGRAM:
*& Report YSALESORDER_ALV_SUBTOTALS *
*& DEVELOPER : KIRAN KUMAR.G *
*& PURPOSE : DISPLAYING SUBTOTALS FOR A PARTICULAR SALES DOC NO *
*& CREATION DT: 26/11/2007 *
*& REQUEST : ERPK900035 *
REPORT ysalesorder_alv_subtotals.
Type Pools
TYPE-POOLS:slis.
Tables
TABLES: vbak, "Sales Document: Header Data
vbap. "Sales Document: Item Data
Global Structures
DATA:gt_fieldcat TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv,
gt_sortcat TYPE slis_t_sortinfo_alv,
wa_sortcat LIKE LINE OF gt_sortcat.
Internal Table
DATA: BEGIN OF gt_salesorder OCCURS 0,
vbeln LIKE vbak-vbeln, " Sales Document Number
posnr LIKE vbap-posnr, " Sales Doc Item
netwr LIKE vbap-netwr, " Net Value
END OF gt_salesorder.
SELECT OPTIONS
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln. " Sales Document Number.
SELECTION-SCREEN END OF BLOCK b1.
Initialization
INITIALIZATION.
PERFORM initialization.
Start Of Selection
START-OF-SELECTION.
PERFORM field_catalog. "For Structure Creation
PERFORM fetch_data. "Get the Data From DB Table
PERFORM sorting USING gt_sortcat.
End Of Selection
END-OF-SELECTION.
PERFORM display_data.
*& Form initialization
text
--> p1 text
<-- p2 text
FORM initialization .
s_vbeln-sign = 'I'.
s_vbeln-option = 'BT'.
s_vbeln-low = '4969'.
s_vbeln-high = '5000'.
APPEND s_vbeln.
ENDFORM. " initialization
*& Form field_catalog
text
--> p1 text
<-- p2 text
FORM field_catalog .
REFRESH : gt_fieldcat.
CLEAR : wa_fieldcat.
wa_fieldcat-col_pos = '1'. "Column Position
wa_fieldcat-tabname = 'IT_SALESORDER'. "Internal Table
wa_fieldcat-fieldname = 'VBELN'. "Field Name
wa_fieldcat-key = 'X'. "Blue Color
wa_fieldcat-seltext_m = 'Sales Doc No'. "Display Text In Screen
APPEND wa_fieldcat TO gt_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-col_pos = '2'. "Column Position
wa_fieldcat-tabname = 'IT_SALESORDER'. "Internal Table Name
wa_fieldcat-fieldname = 'POSNR'. "Field Name
wa_fieldcat-seltext_m = 'Sales Doc Item'."Display Text In Screen
APPEND wa_fieldcat TO gt_fieldcat.
CLEAR wa_fieldcat.
*SubTotal on the Field NETWR
wa_fieldcat-col_pos = '3'. "Column Position
wa_fieldcat-tabname = 'IT_SALESORDER'. "Internal Table
wa_fieldcat-fieldname = 'NETWR'. "Field Name
wa_fieldcat-do_sum = 'X'. "Sum
wa_fieldcat-seltext_m = 'Net Value'. "Display Text In Screen
APPEND wa_fieldcat TO gt_fieldcat.
CLEAR wa_fieldcat.
ENDFORM. " field_catalog
*& Form sorting
text
-->P_IT_SORTCAT text
FORM sorting USING p_it_sortcat TYPE slis_t_sortinfo_alv.
CLEAR wa_sortcat.
wa_sortcat-fieldname = 'VBELN'.
wa_sortcat-up ='X'.
wa_sortcat-subtot = 'X'.
APPEND wa_sortcat TO p_it_sortcat.
ENDFORM. " sorting
*& Form display_data
text
--> p1 text
<-- p2 text
FORM display_data .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
i_callback_program = sy-repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
IS_LAYOUT =
it_fieldcat = gt_fieldcat
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
it_sort = gt_sortcat
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_salesorder
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_data
*& Form fetch_data
text
--> p1 text
<-- p2 text
FORM fetch_data .
REFRESH : gt_salesorder.
CLEAR : gt_salesorder.
SELECT a~vbeln
posnr
b~netwr
FROM vbak AS a
INNER JOIN vbap AS b ON avbeln = bvbeln
INTO TABLE gt_salesorder
WHERE a~vbeln IN s_vbeln.
ENDFORM. " fetch_data
Reward points if helpful.
Kiran Kumar.G.A
Have a Nice Day..
Maybe you are looking for
-
How to view backed up iPhone 3G Data on a Mac Laptop
I've backed up data from a damaged iPhone and now want to view it on my Mac Book. I'm told by Apple that there are some third party software solutions to this. Can any one help? Thanks in advance!
-
Report Generation: linebreak text in Word table row
Hello everybody. Im trying to add some pretty tables to my Word report created with the Report Generation Toolkit. I build my 2d string array with the table data and that works fine. But if I add a text to the array cell that has a linebreak constant
-
Yahoo Sign-in Seal keeps disappearing
When BT Yahoo introduced a sign-in seal, I saw it as another good move to improve security - after all, some banks have a similar stage. But over the past week or so, I have found that whenever I log on, my seal has been replaced by the blasted red '
-
I have setup 2 email recipients in the dac to receive notifications for ETL success or failure, level 5. Both addresses receive the test email when sent, but no etl notifications are received by either. Has anyone seen this problem before, or have an
-
Timeout script not working quite right.
I'm doing a kiosk project that has 11 scenes that house about 70 videos for playback. I need to include a timeout function that needs to revert back to screen #1 if there is no mouse activity for around 8 minutes. There is another timeout script in s