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

problems with ALV header

Former Member
0 Likes
713

Hi there,

i've got a little problem with my ALV header. every time when i run my program and want to go back to the selection screen with the BACK-button i see my header again. so i've got to push the BACK-button again to get to the selection screen.

here's my alv-code


FORM TOP_OF_PAGE.


  REFRESH header_itab[].
  CLEAR wa_header.
  wa_header-typ = 'H'.
*  wa_header-key = 'ausw1'.
  wa_header-info = text-001.

  APPEND wa_header TO header_itab.
  CLEAR wa_header.

  IF radio1 = 'X'.
    wa_header-typ = 'S'.
    wa_header-key = 'Radiobutton1'.
    wa_header-info = text-002.
    APPEND wa_header TO header_itab.
    CLEAR wa_header.

  ELSEIF radio2 = 'X'.
    wa_header-typ = 'S'.
    wa_header-key = 'Radiobutton2'.
    wa_header-info = text-003.
    APPEND wa_header TO header_itab.
    CLEAR wa_header.

  ELSEIF radio3 = 'X'.
    wa_header-typ = 'S'.
    wa_header-key = 'Radiobutton3'.
    wa_header-info = text-004.
    APPEND wa_header TO header_itab.
    CLEAR wa_header.

  ELSEIF radio4 = 'X'.
    wa_header-typ = 'S'.
    wa_header-key = 'Radiobutton4'.
    wa_header-info = text-005.
    APPEND wa_header TO header_itab.
    CLEAR wa_header.

  ELSE.
    wa_header-typ = 'S'.
    wa_header-key = 'Radiobutton5'.
    wa_header-info = text-006.
    APPEND wa_header TO header_itab.
    CLEAR wa_header.

  ENDIF.

  wa_header-typ = 'S'.
  wa_header-key = 'Benutzer:'.
  wa_header-info = sy-uname.
  APPEND wa_header TO header_itab.
  CLEAR wa_header.


  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
       EXPORTING
            it_list_commentary = header_itab.

ENDFORM.



*---------------------------------------------------------------------*
*       FORM alv_füllen                                               *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM alv_fuellen .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            i_callback_program     = my_repid
            i_callback_top_of_page = 'TOP_OF_PAGE'
*            i_grid_title           = my_title
            it_fieldcat            = feldkatalog_itab
            is_layout              = gs_layout
*            it_events              = event_itab
       TABLES
            t_outtab               = itab
       EXCEPTIONS
            program_error          = 1
            OTHERS                 = 2.
ENDFORM.


*---------------------------------------------------------------------*
*       FORM layout_allg_build                                        *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM layout_allg_build.

  	gs_layout-zebra  = 'X'.
  	gs_layout-colwidth_optimize = 'X'.

ENDFORM.
	

hope someone can help me.

regards tobias

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
699

hi

good

debug your report and check your field catalog header, i think you might have calling its twice.

thanks

mrutyun^

7 REPLIES 7
Read only

Former Member
0 Likes
699

In the code for BACK.. use LEAVE LIST-PROCESSING. or LEVAE TO SCREEN 0.

Read only

former_member386202
Active Contributor
0 Likes
699

Hi,

Try This.

*--This funcation module will display the top of the page

CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

EXPORTING

it_list_commentary = it_header.

*--Refresh

Refresh : it_header.

Regards,

Prashant

Read only

former_member404244
Active Contributor
0 Likes
699

Hi,

Try like this

after u press on back button ,now type /H in the command line and see where second time ur header is called..

also U can write som leogic.

WHEN 'BACK'.

Leave to screen 0.

reward if helpful.

Regards,

nagaraj

Read only

Former Member
0 Likes
700

hi

good

debug your report and check your field catalog header, i think you might have calling its twice.

thanks

mrutyun^

Read only

Former Member
0 Likes
699

Hi,

You need to have events when u clicked on the back button.

Try this in ALV display FM :

it_fieldcat = feldkatalog_itab[]

Thanks,

Sriram Ponna.

Read only

Former Member
0 Likes
699

Hi Tobias,

If you had written any SKIP statement in the declaration of the selection-screen, remove that

eg

SELECTION-SCREEN :.....

<b>SKIP 5</b> <----


remove this line

Read only

Former Member
0 Likes
699

hi,

i tried some of your ideas but none helped my.

so here's my complete code

maybe this is helpful.


*&---------------------------------------------------------------------*
*& Report  z_cd_tool_awdimaiob
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT z_cd_tool_awdimaiob.



*--------------------------------------------------------------------
* G L O B A L   I N T E R N  A L   T A B L E S
*--------------------------------------------------------------------

DATA: BEGIN OF itab OCCURS 100,
      status TYPE dimaiobpar-zstatus,
      rtyp TYPE  dimaiobpar-zrtyp,
      zahlweg TYPE dimaiobpar-ezawe_x,
      a_status TYPE i,
      a_rtyp TYPE i,
      a_partner TYPE i,
      a_vertraege TYPE i,


      END OF itab .



*--------------------------------------------------------------------
* G L O B A L   D A T A
*--------------------------------------------------------------------

DATA: ok_code LIKE sy-ucomm,
      wa_test_tab LIKE dimaiobpar,
      my_title TYPE lvc_title,
      my_repid LIKE sy-repid.

TYPE-POOLS: slis.

DATA:	feldkatalog_itab  TYPE   slis_t_fieldcat_alv,
	wa_feldkatalog    TYPE   slis_fieldcat_alv,
       event_itab        TYPE   slis_t_event,
       header_itab       TYPE   slis_t_listheader,
       gs_layout         TYPE   slis_layout_alv,
       alv_event         TYPE   slis_alv_event,
       wa_header         TYPE   slis_listheader.


DATA: t_tab LIKE dimaiobpar.

*selection-screen

SELECTION-SCREEN: SKIP, BEGIN OF BLOCK test WITH FRAME TITLE text-010.
SELECT-OPTIONS: partner FOR  t_tab-partner,
                astatus FOR  t_tab-zstatus.
SELECTION-SCREEN END OF BLOCK test.


*Radiobutton

SELECTION-SCREEN: SKIP, BEGIN OF BLOCK test2 WITH FRAME TITLE text-020.
PARAMETERS: radio1 RADIOBUTTON GROUP test DEFAULT 'X',
            radio2 RADIOBUTTON GROUP test,
            radio3 RADIOBUTTON GROUP test,
            radio4 RADIOBUTTON GROUP test,
            radio5 RADIOBUTTON GROUP test.
SELECTION-SCREEN END OF BLOCK test2.

*--------------------------------------------------------------------
* S T A R T - O F - S E L E C T I O N.
*--------------------------------------------------------------------
START-OF-SELECTION.

* Select-Abfrage
  PERFORM select_data.

*END-OF-SELECTION.

* Feldkatalog fuellen.
  PERFORM feldkatalog_fuellen .
* Feldkatalog übergeben
  PERFORM alv_feldkatalog.
* ALV-Event
  perform alv_event.
* Layout bestimmen.
  PERFORM layout_allg_build.
* header aufbau
  PERFORM top_of_page.

  SORT itab.

  my_title = 'Auswertung Dimaiobpar'.
  my_repid = sy-repid.

  PERFORM exit_program.
END-OF-SELECTION.
* ALV mit daten füllen
  PERFORM alv_fuellen.



*---------------------------------------------------------------------*
*       FORM alv_event                                                *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM alv_event.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
       EXPORTING
            i_list_type = 0
       IMPORTING
            et_events   = event_itab.
  READ TABLE event_itab
  WITH KEY name = 'TOP_OF_PAGE'
  INTO alv_event.
  IF sy-subrc EQ 0.
    MOVE 'TOP_OF_PAGE' TO alv_event-form.
    APPEND alv_event TO event_itab.
    ENDIF.

ENDFORM.



*---------------------------------------------------------------------*
*       FORM alv_feldkatalog                                          *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM alv_feldkatalog.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
            i_program_name     = my_repid
            i_internal_tabname = 'ITAB'
            i_inclname         = my_repid
*            i_bypassing_buffer = 'X'
       CHANGING
            ct_fieldcat        = feldkatalog_itab
       EXCEPTIONS
            program_error      = 1
            OTHERS             = 2.

ENDFORM.

*---------------------------------------------------------------------*
*       FORM header                                                   *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM top_of_page.


  CLEAR wa_header.
  wa_header-typ = 'H'.
*  wa_header-key = 'ausw1'.
  wa_header-info = text-001.

  APPEND wa_header TO header_itab.
  CLEAR wa_header.

  IF radio1 = 'X'.
    wa_header-typ = 'S'.
    wa_header-key = 'Radiobutton1'.
    wa_header-info = text-002.
    APPEND wa_header TO header_itab.
    CLEAR wa_header.

  ELSEIF radio2 = 'X'.
    wa_header-typ = 'S'.
    wa_header-key = 'Radiobutton2'.
    wa_header-info = text-003.
    APPEND wa_header TO header_itab.
    CLEAR wa_header.

  ELSEIF radio3 = 'X'.
    wa_header-typ = 'S'.
    wa_header-key = 'Radiobutton3'.
    wa_header-info = text-004.
    APPEND wa_header TO header_itab.
    CLEAR wa_header.

  ELSEIF radio4 = 'X'.
    wa_header-typ = 'S'.
    wa_header-key = 'Radiobutton4'.
    wa_header-info = text-005.
    APPEND wa_header TO header_itab.
    CLEAR wa_header.

  ELSE.
    wa_header-typ = 'S'.
    wa_header-key = 'Radiobutton5'.
    wa_header-info = text-006.
    APPEND wa_header TO header_itab.
    CLEAR wa_header.

  ENDIF.

  wa_header-typ = 'S'.
  wa_header-key = 'Benutzer:'.
  wa_header-info = sy-uname.
  APPEND wa_header TO header_itab.
  CLEAR wa_header.


  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
       EXPORTING
            it_list_commentary = header_itab.

  REFRESH header_itab.

ENDFORM.



*---------------------------------------------------------------------*
*       FORM alv_füllen                                               *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM alv_fuellen .

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            i_callback_program     = my_repid
            i_callback_top_of_page = 'TOP_OF_PAGE'
*            i_grid_title           = my_title
            it_fieldcat            = feldkatalog_itab[]
            is_layout              = gs_layout
*            it_events              = event_itab
       TABLES
            t_outtab               = itab
       EXCEPTIONS
            program_error          = 1
            OTHERS                 = 2.
 
ENDFORM.


*---------------------------------------------------------------------*
*       FORM layout_allg_build                                        *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM layout_allg_build.

  	gs_layout-zebra  = 'X'.
  	gs_layout-colwidth_optimize = 'X'.

ENDFORM.
	
*---------------------------------------------------------------------*
*       FORM feldkatalog_fuellen                                      *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM feldkatalog_fuellen.
*Feldkatalog erstellen/füllen mit hilfe der if-schleife anhand des
*gewählten Radiobuttons

IF radio1 = 'X'.

  CLEAR wa_feldkatalog.
  	wa_feldkatalog-fieldname	= 'STATUS'.
  	wa_feldkatalog-seltext_m	= 'Status'.
  APPEND wa_feldkatalog TO feldkatalog_itab.

  CLEAR wa_feldkatalog.
  	wa_feldkatalog-fieldname	= 'RTYP'.
  	wa_feldkatalog-seltext_m	= 'Rechungstyp'.
  APPEND wa_feldkatalog TO feldkatalog_itab.


  CLEAR wa_feldkatalog.
  	wa_feldkatalog-fieldname	= 'A_RTYP'.
  	wa_feldkatalog-seltext_m	= 'Anzahl Rechungstyp'.
  APPEND wa_feldkatalog TO feldkatalog_itab.


ELSEIF radio2 = 'X'.

  CLEAR wa_feldkatalog.
  	wa_feldkatalog-fieldname	= 'RTYP'.
  	wa_feldkatalog-seltext_m	= 'Rechungstyp'.
  APPEND wa_feldkatalog TO feldkatalog_itab.


  CLEAR wa_feldkatalog.
  	wa_feldkatalog-fieldname	= 'A_STATUS'.
  	wa_feldkatalog-seltext_m	= 'Anzahl Status'.
  APPEND wa_feldkatalog TO feldkatalog_itab.


ELSEIF radio3 = 'X'.

  CLEAR wa_feldkatalog.
  	wa_feldkatalog-fieldname	= 'STATUS'.
  	wa_feldkatalog-seltext_m	= 'Status'.
  APPEND wa_feldkatalog TO feldkatalog_itab.

  CLEAR wa_feldkatalog.
  	wa_feldkatalog-fieldname	= 'RTYP'.
  	wa_feldkatalog-seltext_m	= 'Rechungstyp'.
  APPEND wa_feldkatalog TO feldkatalog_itab.


  CLEAR wa_feldkatalog.
  	wa_feldkatalog-fieldname	= 'A_VERTRAEGE'.
  	wa_feldkatalog-seltext_m	= 'Anzahl Verträge'.
  APPEND wa_feldkatalog TO feldkatalog_itab.


ELSEIF radio4 = 'X'.

  CLEAR wa_feldkatalog.
  	wa_feldkatalog-fieldname	= 'STATUS'.
  	wa_feldkatalog-seltext_m	= 'Status'.
  APPEND wa_feldkatalog TO feldkatalog_itab.

  CLEAR wa_feldkatalog.
  	wa_feldkatalog-fieldname	= 'RTYP'.
  	wa_feldkatalog-seltext_m	= 'Rechungstyp'.
  APPEND wa_feldkatalog TO feldkatalog_itab.


  CLEAR wa_feldkatalog.
  	wa_feldkatalog-fieldname	= 'A_PARTNER'.
  	wa_feldkatalog-seltext_m	= 'Anzahl GPartner'.
  APPEND wa_feldkatalog TO feldkatalog_itab.


ELSE.

  CLEAR wa_feldkatalog.
  	wa_feldkatalog-fieldname	= 'STATUS'.
  	wa_feldkatalog-seltext_m	= 'Status'.
  APPEND wa_feldkatalog TO feldkatalog_itab.

  CLEAR wa_feldkatalog.
  	wa_feldkatalog-fieldname	= 'RTYP'.
  	wa_feldkatalog-seltext_m	= 'Rechungstyp'.
  APPEND wa_feldkatalog TO feldkatalog_itab.

  CLEAR wa_feldkatalog.
  	wa_feldkatalog-fieldname	= 'ZAHLWEG'.
  	wa_feldkatalog-seltext_m	= 'Zahlweg'.
  APPEND wa_feldkatalog TO feldkatalog_itab.

  CLEAR wa_feldkatalog.
  	wa_feldkatalog-fieldname	= 'A_PARTNER'.
  	wa_feldkatalog-seltext_m	= 'Anzahl GPartner'.
  APPEND wa_feldkatalog TO feldkatalog_itab.

ENDIF.


ENDFORM.

*---------------------------------------------------------------------*
*       FORM select_data                                              *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*

FORM select_data.
*select-abfrage mit hilfe der if-schleife, analog zum Feldkatalog


  IF radio1 = 'X'.

*   Radiobutton1: Rechungstypen je Satus

    SELECT
       zstatus AS status
       zrtyp AS rtyp
       COUNT( DISTINCT zrtyp ) AS a_rtyp
       INTO CORRESPONDING FIELDS OF itab
       FROM dimaiobpar
       WHERE
       insobject LIKE 'V%' AND
       partner IN partner AND
       zstatus IN astatus
       GROUP BY ZSTATUS zrtyp
       ORDER BY zstatus.

      APPEND itab.

    ENDSELECT.


  ELSEIF radio2 = 'X'.

* Radiobutton2: Status je Rechungstyp.


    SELECT
           zrtyp AS rtyp
           COUNT( DISTINCT zstatus ) AS a_status
           INTO CORRESPONDING FIELDS OF itab
           FROM dimaiobpar
           WHERE
           insobject LIKE 'V%' AND
           partner IN partner AND
           zstatus IN astatus
           GROUP BY  ZRTYP
           ORDER BY zrtyp.

      APPEND itab.

    ENDSELECT.

  ELSEIF radio3 = 'X'.

* Radiobutton3: Anzahl Verträge je Status und Rtyp.


    SELECT
         zstatus AS status
         zrtyp AS rtyp
         COUNT( DISTINCT insobject ) AS a_vertraege
         INTO CORRESPONDING FIELDS OF itab
         FROM dimaiobpar
         WHERE
         insobject LIKE 'V%' AND
         partner IN partner AND
         zstatus IN astatus
         GROUP BY ZSTATUS zrtyp
         ORDER BY zstatus.

      APPEND itab.

    ENDSELECT.

  ELSEIF radio4 ='X'.

*  Radiobutton4: Anzahl GPartner je Status und RTyp.


    SELECT
           zstatus AS status
           zrtyp AS rtyp
           COUNT( DISTINCT partner ) AS a_partner
           INTO CORRESPONDING FIELDS OF itab
           FROM dimaiobpar
           WHERE
           insobject LIKE 'V%' AND
           partner IN partner AND
           zstatus IN astatus
           GROUP BY ZSTATUS zrtyp
           ORDER BY zstatus zrtyp.

      APPEND itab.

    ENDSELECT.

  ELSE.

* Radiobutton5: Anzahl Kunden nach Zahlweg.


    SELECT
         zstatus AS status
         zrtyp AS rtyp
         ezawe_x AS zahlweg
         COUNT( DISTINCT partner ) AS a_partner
         INTO CORRESPONDING FIELDS OF itab
         FROM dimaiobpar
         WHERE
         insobject LIKE 'V%' AND
         partner IN partner AND
         zstatus IN astatus AND
         ezawe_x IN ('E', 'F', space)
         GROUP BY ZSTATUS zrtyp EZAWE_X
         ORDER BY zstatus zrtyp.

      APPEND itab.

    ENDSELECT.

  ENDIF.

ENDFORM.

*---------------------------------------------------------------------*
*       FORM EXIT_PROGRAM                                             *
*---------------------------------------------------------------------*
FORM exit_program.
IF sy-ucomm = 'BACK' OR
   sy-ucomm = 'EXIT' OR
   sy-ucomm = 'CANCEL'.
  LEAVE PROGRAM.
  endif.
ENDFORM.