‎2009 May 07 7:46 AM
Hi All,
i am creating a simple report with grid alv display in that i am using fm 'REUSE_ALV_COMMENTARY_WRITE' for header display it is working properly but when i download it in excel i am getting header twice in printpreview also i am getting header twice.
if list is bigger then header is displayed 4 times .
pls Suggest
Thanks in Advanc,
Regards,
Paresh G.
‎2009 May 07 7:59 AM
Hi ,
Make sure you are refreshing the internal table you are using of type SLIS_T_LISTHEADER at the end of the FM.
Regards,
Deepthi
‎2009 May 07 7:48 AM
‎2009 May 07 7:59 AM
*-------------------------------------------------------------*
*& Report ZIRPT_HR_EMPLST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zirpt_hr_emplst.
TABLES : pa0000,pa0001,pa0008,hrp1000,hrp1001.
TYPE-POOLS : slis.
DATA : ipa0000 TYPE STANDARD TABLE OF pa0000 WITH HEADER LINE,
ipa0001 TYPE STANDARD TABLE OF pa0001 WITH HEADER LINE,
ipa0008 TYPE STANDARD TABLE OF pa0008 WITH HEADER LINE,
wa_pa0000 TYPE pa0000.
DATA : BEGIN OF iout OCCURS 0,
srno TYPE sy-tabix,
pernr TYPE pa0001-pernr,
ename TYPE pa0001-ename,
location TYPE pa0001-location,
desig TYPE hrp1000-stext,
dept TYPE pa0001-department,
persk TYPE pa0001-persk,
begda TYPE pa0000-begda,
zz_mth(15) TYPE c,
zz_ctc(15) TYPE c,
END OF iout.
DATA : zz_mth TYPE pbwla-betrg,
zz_ctc TYPE pbwla-betrg,
zz_mth1(15) TYPE c,
zz_ctc1(15) TYPE c,
flag TYPE c,
count TYPE sy-tabix,
begda TYPE pa0000-begda,
line(5) TYPE c,
text(30) TYPE c.
*----------------------------------------------------------------------*
* ALV DATA DECLARATIONS *
*----------------------------------------------------------------------*
DATA : fieldtab TYPE slis_t_fieldcat_alv,
heading TYPE slis_t_listheader,
layout TYPE slis_layout_alv,
events TYPE slis_t_event,
repname LIKE sy-repid,
f2code LIKE sy-ucomm VALUE '&ETA',
g_save(1) TYPE c,
g_variant LIKE disvariant,
gx_variant LIKE disvariant,
g_exit(1) TYPE c.
CONSTANTS : formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.
DATA : keyinfo TYPE slis_keyinfo_alv,
alv_print TYPE slis_print_alv,
alv_detail_func(30).
DATA: itab_sort TYPE slis_t_sortinfo_alv,
wa_sort TYPE slis_sortinfo_alv.
DATA: l_commentary TYPE slis_t_listheader,
ls_line TYPE slis_listheader,
initialization .
repname = sy-repid.
*
*PERFORM build_eventtab USING events[].
PERFORM build_layout.
* PERFORM initialize_variant.
PERFORM create_sortinfo .
PERFORM initialize_fieldcat.
*--------------------------------------------------------------------*
* SELECTION-SCREEN
*--------------------------------------------------------------------*
SELECTION-SCREEN : BEGIN OF BLOCK blk WITH FRAME TITLE text-001.
SELECT-OPTIONS : p_pernr FOR pa0001-pernr,
p_bukrs FOR pa0001-bukrs,
p_werks FOR pa0001-werks,
p_btrtl FOR pa0001-btrtl,
p_locat FOR pa0001-location,
p_depmt FOR pa0001-department," NO INTERVALS.
p_persg FOR pa0001-persg ,"NO INTERVALS,
p_persk FOR pa0001-persk ."NO INTERVALS,
SELECTION-SCREEN : END OF BLOCK blk.
*--------------------------------------------------------------------*
*--------------------------------------------------------------------*
* START-OF-SELECTION
*--------------------------------------------------------------------*
START-OF-SELECTION.
SELECT * FROM pa0001 CLIENT SPECIFIED INTO
CORRESPONDING FIELDS OF TABLE ipa0001
WHERE mandt = sy-mandt
AND pernr IN p_pernr
AND persg IN p_persg
AND persk IN p_persk
AND bukrs IN p_bukrs
AND werks IN p_werks
AND btrtl IN p_btrtl
AND location IN p_locat
AND department IN p_depmt.
SORT ipa0001 BY department.
LOOP AT ipa0001.
SELECT SINGLE MAX( begda ) FROM pa0000
CLIENT SPECIFIED INTO begda
WHERE mandt = sy-mandt
AND pernr = ipa0001-pernr.
IF ipa0001-begda NE begda.
DELETE ipa0001 INDEX sy-tabix.
ENDIF.
ENDLOOP.
LOOP AT ipa0001.
* ON CHANGE OF ipa0001-department.
* flag = 'X'.
* ENDON.
*
*
*
* IF flag = 'X'.
* iout-srno = ''.
* iout-ename = space.
* iout-location = space.
* iout-desig = ipa0001-department.
* iout-persk = space.
* iout-begda = space.
* iout-zz_mth = zz_mth1.
* iout-zz_ctc = zz_ctc1.
* iout-dept = space."ipa0001-department.
* APPEND iout.
** CLEAR IOUT.
* ENDIF.
MOVE-CORRESPONDING ipa0001 TO iout.
count = count + 1.
iout-srno = count .
SELECT SINGLE stext FROM hrp1000 CLIENT SPECIFIED INTO iout-desig
WHERE mandt = sy-mandt
AND plvar = '01'
AND istat = '1'
AND objid = ipa0001-plans.
iout-dept = ipa0001-department.
SELECT SINGLE * FROM pa0008 CLIENT SPECIFIED
WHERE mandt = sy-mandt
AND pernr = ipa0001-pernr
AND begda = ipa0001-begda.
zz_mth = pa0008-zz_mth.
zz_ctc = pa0008-zz_ctc.
WRITE zz_mth TO zz_mth1 DECIMALS 0.
WRITE zz_ctc TO zz_ctc1 DECIMALS 0.
iout-zz_mth = zz_mth1.
iout-zz_ctc = zz_ctc1.
APPEND iout.
CLEAR flag.
CLEAR : iout.
ENDLOOP.
CLEAR : iout.
DESCRIBE TABLE iout LINES line.
*--------------------------------------------------------------------*
PERFORM display.
*--------------------------------------------------------------------*
* FORM TOP-OF-PAGE
*--------------------------------------------------------------------*
FORM top_of_page.
ls_line-typ = 'H'.
*ls_line-key = 'EMPLOYEE CTC'.
ls_line-info = 'EMPLOYEE CTC'.
APPEND ls_line TO l_commentary.
DATA : date(30) TYPE c.
CONCATENATE sy-datum+6(2) '.' sy-datum+4(2) '.' sy-datum+0(4) INTO date.
CONCATENATE 'As on Date :' date INTO date SEPARATED BY space.
ls_line-typ = 'S'.
ls_line-info = date.
APPEND ls_line TO l_commentary.
CONCATENATE 'Total no. of Records :' line INTO text SEPARATED BY space.
ls_line-typ = 'S'.
ls_line-info = text.
APPEND ls_line TO l_commentary.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = l_commentary
* I_LOGO =
* I_END_OF_LIST_GRID =
* I_ALV_FORM =
.
ENDFORM. "TOP_OF_PAGE
*--------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form build_eventtab
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_EVENTS[] text
*----------------------------------------------------------------------*
FORM build_eventtab USING p_events TYPE slis_t_event.
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = p_events.
READ TABLE events WITH KEY name = 'TOP_OF_PAGE'
INTO ls_event.
IF sy-subrc = 0.
MOVE formname_top_of_page TO ls_event-form.
APPEND ls_event TO p_events.
ENDIF.
CLEAR: ls_event.
READ TABLE p_events WITH KEY name = 'TOP_OF_LIST'
INTO ls_event.
IF sy-subrc = 0.
MOVE 'TOP_OF_LIST' TO ls_event-form.
APPEND ls_event TO p_events.
ENDIF.
CLEAR: ls_event.
READ TABLE p_events WITH KEY name = 'END_OF_PAGE'
INTO ls_event.
IF sy-subrc = 0.
MOVE 'END_OF_PAGE' TO ls_event-form.
APPEND ls_event TO p_events.
ENDIF.
CLEAR: ls_event.
READ TABLE p_events WITH KEY name = 'END_OF_LIST'
INTO ls_event.
IF sy-subrc = 0.
MOVE 'END_OF_LIST' TO ls_event-form.
APPEND ls_event TO p_events.
ENDIF.
ENDFORM. " build_eventtab
*&---------------------------------------------------------------------*
*& Form build_layout
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_layout .
layout-zebra = 'X'.
layout-colwidth_optimize = 'X'.
layout-allow_switch_to_list = 'X'.
ENDFORM. " build_layout
*&---------------------------------------------------------------------*
*& Form initialize_fieldcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM initialize_fieldcat.
DATA : cnt TYPE sy-tabix.
DATA fieldcat TYPE slis_fieldcat_alv.
cnt = cnt + 1.
fieldcat-tabname = 'IOUT'.
fieldcat-fieldname = 'SRNO'.
* fieldcat-ref_tabname = 'KNA1'.
* fieldcat-ref_fieldname = 'NAME1'.
fieldcat-seltext_m = 'SR.NO.'.
fieldcat-col_pos = cnt.
fieldcat-outputlen = 6.
APPEND fieldcat TO fieldtab.
CLEAR fieldcat.
cnt = cnt + 1.
fieldcat-tabname = 'IOUT'.
fieldcat-fieldname = 'ENAME'.
* fieldcat-ref_tabname = 'KNA1'.
* fieldcat-ref_fieldname = 'NAME1'.
fieldcat-seltext_m = 'NAME OF THE EMPLOYEES'.
fieldcat-col_pos = cnt.
fieldcat-outputlen = 40.
APPEND fieldcat TO fieldtab.
CLEAR fieldcat.
cnt = cnt + 1.
fieldcat-tabname = 'IOUT'.
fieldcat-fieldname = 'LOCATION'.
* fieldcat-ref_tabname = 'KNA1'.
* fieldcat-ref_fieldname = 'NAME1'.
fieldcat-seltext_m = 'LOCATION'.
fieldcat-col_pos = cnt.
fieldcat-outputlen = 10.
APPEND fieldcat TO fieldtab.
CLEAR fieldcat.
cnt = cnt + 1.
fieldcat-tabname = 'IOUT'.
fieldcat-fieldname = 'DESIG'.
* fieldcat-ref_tabname = 'KNA1'.
* fieldcat-ref_fieldname = 'NAME1'.
fieldcat-seltext_m = 'DESIGNATION'.
fieldcat-col_pos = cnt.
fieldcat-outputlen = 10.
APPEND fieldcat TO fieldtab.
CLEAR fieldcat.
cnt = cnt + 1.
fieldcat-tabname = 'IOUT'.
fieldcat-fieldname = 'DEPT'.
* fieldcat-ref_tabname = 'KNA1'.
* fieldcat-ref_fieldname = 'NAME1'.
fieldcat-seltext_m = 'DEPARTMENT'.
fieldcat-col_pos = cnt.
fieldcat-outputlen = 10.
APPEND fieldcat TO fieldtab.
CLEAR fieldcat.
cnt = cnt + 1.
fieldcat-tabname = 'IOUT'.
fieldcat-fieldname = 'PERSK'.
* fieldcat-ref_tabname = 'KNA1'.
* fieldcat-ref_fieldname = 'NAME1'.
fieldcat-seltext_m = 'GRADE'.
fieldcat-col_pos = cnt.
fieldcat-outputlen = 5.
APPEND fieldcat TO fieldtab.
CLEAR fieldcat.
cnt = cnt + 1.
fieldcat-tabname = 'IOUT'.
fieldcat-fieldname = 'BEGDA'.
* fieldcat-ref_tabname = 'KNA1'.
* fieldcat-ref_fieldname = 'NAME1'.
fieldcat-seltext_m = 'DOJ'.
fieldcat-col_pos = cnt.
fieldcat-outputlen = 6.
APPEND fieldcat TO fieldtab.
CLEAR fieldcat.
cnt = cnt + 1.
fieldcat-tabname = 'IOUT'.
fieldcat-fieldname = 'ZZ_MTH'.
* fieldcat-ref_tabname = 'KNA1'.
* fieldcat-ref_fieldname = 'NAME1'.
fieldcat-seltext_m = 'GROSS P.M'.
fieldcat-col_pos = cnt.
fieldcat-outputlen = 15.
APPEND fieldcat TO fieldtab.
CLEAR fieldcat.
cnt = cnt + 1.
fieldcat-tabname = 'IOUT'.
fieldcat-fieldname = 'ZZ_CTC'.
* fieldcat-ref_tabname = 'KNA1'.
* fieldcat-ref_fieldname = 'NAME1'.
fieldcat-seltext_m = 'GROSS P.M.'.
fieldcat-col_pos = cnt.
fieldcat-outputlen = 15.
APPEND fieldcat TO fieldtab.
CLEAR fieldcat.
ENDFORM. " initialize_fieldcat
*&---------------------------------------------------------------------*
*& Form DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = repname
* i_callback_user_command = 'USER_COMMAND'
* i_callback_user_command = 'STANDARD'
i_callback_top_of_page = 'TOP_OF_PAGE'
is_layout = layout
it_fieldcat = fieldtab
* it_sort = itab_sort
* i_save = g_save
* is_variant = gx_variant
* it_events = events
* is_print = alv_print
TABLES
t_outtab = iout
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " DISPLAY
*&---------------------------------------------------------------------*
*& Form create_sortinfo
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_sortinfo .
wa_sort-spos = 1.
wa_sort-fieldname = 'DEPARTMENT'.
wa_sort-tabname = 'IOUT'.
wa_sort-up = 'X'.
* wa_sort-subtot = 'X'.
APPEND wa_sort TO itab_sort.
CLEAR wa_sort.
ENDFORM. " create_sortinfo And also when i am coming back from printpreview or after downloading two header is displayed in alv
‎2009 May 07 7:59 AM
Hi ,
Make sure you are refreshing the internal table you are using of type SLIS_T_LISTHEADER at the end of the FM.
Regards,
Deepthi
‎2009 May 07 8:02 AM
Thanks Deepthi for answer,
i forgot to refresh table
i got the right answer
‎2009 May 07 8:07 AM
If you are using user command for downloading the report output make sure referesh and clear is done before filling your download internal table.
Eg:
REFRESH t_down.
CLEAR t_down.
LOOP AT T_OUTPUT INTO WA_OUTPUT.
MOVE-CORRESPONDING WA_OUTPUT TO T_DOWN.
APPEND T_DOWN.
ENDLOOP.
PERFORM insert_download_heading.
CALL METHOD cl_gui_frontend_services=>file_save_dialog
Regards,
Malathi.