Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

problem in alv header

Former Member
0 Likes
610

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.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
584

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

5 REPLIES 5
Read only

Former Member
0 Likes
584

Can you please post your ALV Code and also fieldcatalog code?

Read only

0 Likes
584
*-------------------------------------------------------------*
*& 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

Read only

Former Member
0 Likes
585

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

Read only

0 Likes
584

Thanks Deepthi for answer,

i forgot to refresh table

i got the right answer

Read only

Former Member
0 Likes
584

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.