‎2007 Oct 29 11:49 AM
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
‎2007 Oct 29 12:02 PM
hi
good
debug your report and check your field catalog header, i think you might have calling its twice.
thanks
mrutyun^
‎2007 Oct 29 11:57 AM
In the code for BACK.. use LEAVE LIST-PROCESSING. or LEVAE TO SCREEN 0.
‎2007 Oct 29 11:58 AM
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
‎2007 Oct 29 12:00 PM
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
‎2007 Oct 29 12:02 PM
hi
good
debug your report and check your field catalog header, i think you might have calling its twice.
thanks
mrutyun^
‎2007 Oct 29 12:02 PM
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.
‎2007 Oct 29 12:06 PM
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
‎2007 Oct 29 12:28 PM
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.