2008 Apr 09 10:33 AM
How do i go to the next page on double clicking on any of the fields of the output of alv grid display list
I have to click on a particular column not on the whole of the row.
2008 Apr 09 10:42 AM
Hi,
in the event callback user command of alv,
check for sy-ucomm = '&IC1'
and if selfield-fieldname is equal to 'field name'.
perform .............
endif.
Reward if useful
Regards,
Talwinder
Hi,
in the event callback user command of alv,
check for sy-ucomm = '&IC1'
and if selfield-fieldname is equal to 'field name'.
perform .............
endif.
Reward if useful
Regards,
Talwinder
2008 Apr 09 10:42 AM
Hi,
in the event callback user command of alv,
check for sy-ucomm = '&IC1'
and if selfield-fieldname is equal to 'field name'.
perform .............
endif.
Reward if useful
Regards,
Talwinder
2008 Apr 09 10:46 AM
Try my sample program. It creates new ALV window by clicking on the first field.
----
REPORT ZHRALVFERDZ *
*
----
Created by: Ferdino Bueno *
Creation Date: 9th day of June 2006 *
Program Title: *
Description: *
----
REPORT ZALVFERDZ MESSAGE-ID ZE.
----
DECLARATIONS *
----
TYPE-POOLS: SLIS. " Required for alv
TABLES: USR02.
--
Required declarations for ALV function--
DATA: EVENTS TYPE SLIS_T_EVENT WITH HEADER LINE,
GT_SORT TYPE SLIS_T_SORTINFO_ALV,
IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
WA_FIELDCAT LIKE LINE OF IT_FIELDCAT,
LAYOUT TYPE SLIS_LAYOUT_ALV,
GSET TYPE LVC_S_GLAY,
IS_PRINT TYPE SLIS_PRINT_ALV.
----
DATA: WHAT_NAME(60),
COUNTER TYPE I.
DATA: BEGIN OF IT_TAB OCCURS 30,
BNAME LIKE USR02-BNAME, "User ID
GLTGV LIKE USR02-GLTGV, "Start Date
GLTGB LIKE USR02-GLTGB, "End Date
ERDAT LIKE USR02-ERDAT, "Creation Date
TRDAT LIKE USR02-TRDAT, "Last Log-on Date
LTIME LIKE USR02-LTIME, "Last Log-on Time
UNAME(60),
END OF IT_TAB.
DATA: BEGIN OF TAB_USR02 OCCURS 10,
BNAME LIKE USR02-BNAME,
BCODE LIKE USR02-BCODE,
USTYP LIKE USR02-USTYP,
END OF TAB_USR02.
DATA: GV_VAR TYPE SLIS_SELFIELD.
----
INITIALIZATION *
----
INITIALIZATION.
SELECTION-SCREEN BEGIN OF BLOCK PARAM WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: P_USERID FOR USR02-BNAME.
SELECT-OPTIONS: G_VALF FOR SY-DATUM,
G_VALT FOR SY-DATUM,
G_LLDATE FOR SY-DATUM.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK BLKOPT WITH FRAME TITLE TEXT-002.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: USRID RADIOBUTTON GROUP GRP.
SELECTION-SCREEN COMMENT (14) TEXT-005.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: LGNDATE RADIOBUTTON GROUP GRP.
SELECTION-SCREEN COMMENT (14) TEXT-003.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: STRTDATE RADIOBUTTON GROUP GRP.
SELECTION-SCREEN COMMENT (14) TEXT-004.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK BLKOPT.
SELECTION-SCREEN END OF BLOCK PARAM.
----
START-OF-SELECTION *
----
START-OF-SELECTION.
PERFORM GET_DATA.
PERFORM PROCESS_DATA.
----
END-OF-SELECTION *
----
END-OF-SELECTION.
PERFORM WRITE_DATA.
----
Form get_data *
----
FORM GET_DATA .
SELECT BNAME GLTGV GLTGB ERDAT TRDAT LTIME
FROM USR02 INTO TABLE IT_TAB
WHERE BNAME IN P_USERID
AND GLTGV IN G_VALF
AND GLTGB IN G_VALT
AND TRDAT IN G_LLDATE.
IF IT_TAB[] IS INITIAL.
MESSAGE I037 WITH 'No Records Found.'.
STOP.
ENDIF.
ENDFORM. " get_data
----
Form PROCESS_DATA *
----
FORM PROCESS_DATA.
LOOP AT IT_TAB.
PERFORM GET_UNAME USING IT_TAB-BNAME CHANGING WHAT_NAME.
SHIFT WHAT_NAME LEFT DELETING LEADING SPACE.
IT_TAB-UNAME = WHAT_NAME.
MODIFY IT_TAB.
ENDLOOP.
ENDFORM.
----
Form write_data *
----
FORM WRITE_DATA .
PERFORM FILL_FIELDCAT.
PERFORM SORT_BUILD USING GT_SORT[].
PERFORM CALL_ALV_GRID_DISPLAY.
ENDFORM. " write_data
----
Form fill_fieldcat *
----
FORM FILL_FIELDCAT .
REFRESH: IT_FIELDCAT.
CLEAR: WA_FIELDCAT, IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'BNAME'.
WA_FIELDCAT-REPTEXT_DDIC = 'User Id'.
WA_FIELDCAT-HOTSPOT = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'UNAME'.
WA_FIELDCAT-REPTEXT_DDIC = 'Name'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'GLTGV'.
WA_FIELDCAT-REPTEXT_DDIC = 'Start Date'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'GLTGB'.
WA_FIELDCAT-REPTEXT_DDIC = 'End Date'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'ERDAT'.
WA_FIELDCAT-FIELDNAME = 'ERDAT'.
WA_FIELDCAT-TABNAME = 'USR02'.
WA_FIELDCAT-EMPHASIZE = 'X'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'TRDAT'.
WA_FIELDCAT-REF_FIELDNAME = 'TRDAT'.
WA_FIELDCAT-REF_TABNAME = 'USR02'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'LTIME'.
WA_FIELDCAT-REF_FIELDNAME = 'LTIME'.
WA_FIELDCAT-REF_TABNAME = 'USR02'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. " fill_fieldcat
----
Form sort_build
----
FORM SORT_BUILD USING LT_SORT TYPE SLIS_T_SORTINFO_ALV.
DATA: LS_SORT TYPE SLIS_SORTINFO_ALV.
LS_SORT-FIELDNAME = 'BNAME'.
LS_SORT-UP = 'X'.
LS_SORT-SUBTOT = 'X'.
APPEND LS_SORT TO LT_SORT.
ENDFORM. " sort_build
----
Form call_alv_grid_display
----
FORM CALL_ALV_GRID_DISPLAY .
DATA: REPID LIKE SY-REPID.
REPID = SY-REPID.
----
EVENTS -
CLEAR EVENTS.
EVENTS-NAME = 'TOP_OF_LIST'.
EVENTS-FORM = 'LIST_BEGIN'.
APPEND EVENTS.
MOVE 'USER_COMMAND' TO EVENTS-NAME.
MOVE 'USER_COMMAND' TO EVENTS-FORM.
APPEND EVENTS.
CLEAR EVENTS.
GSET-NO_COLWOPT = 'X'.
------- LAYOUT ---------*
LAYOUT-KEY_HOTSPOT = 'X'.
LAYOUT-NO_KEYFIX = ' '.
LAYOUT-COLWIDTH_OPTIMIZE = 'X'.
ALV GRID OUTPUT
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = REPID
I_CALLBACK_TOP_OF_PAGE = 'LIST_BEGIN'
I_BACKGROUND_ID = 'BACKGROUND1'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_GRID_SETTINGS = GSET
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
IS_LAYOUT = LAYOUT
IS_PRINT = IS_PRINT
IT_FIELDCAT = IT_FIELDCAT[]
IT_EVENTS = EVENTS[]
IT_SORT = GT_SORT
I_SAVE = 'A'
TABLES
T_OUTTAB = IT_TAB[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
ENDFORM. " call_alv_grid_display
----
FORM SET_PF_STATUS *
----
FORM SET_PF_STATUS USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'WHOLE_TOOLBAR'.
ENDFORM. "SET_PF_STATUS
----
FORM LIST_BEGIN *
----
FORM LIST_BEGIN.
DATA: IT_LIST TYPE SLIS_T_LISTHEADER WITH HEADER LINE.
CLEAR IT_LIST.
IT_LIST-TYP = 'H'.
IT_LIST-INFO = 'San Miguel'.
APPEND IT_LIST.
CLEAR IT_LIST.
IT_LIST-TYP = 'H'.
IT_LIST-INFO = 'Authorization Report On Usergroup'.
APPEND IT_LIST.
CLEAR IT_LIST.
IT_LIST-TYP = 'S'.
IT_LIST-KEY = ''.
APPEND IT_LIST.
CLEAR IT_LIST.
IT_LIST-TYP = 'S'.
IT_LIST-KEY = ''.
APPEND IT_LIST.
CLEAR IT_LIST.
IT_LIST-TYP = 'S'.
IT_LIST-KEY = 'Report Date:'.
WRITE SY-DATUM TO IT_LIST-INFO.
APPEND IT_LIST.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
I_LOGO = 'ZTEST2'
IT_LIST_COMMENTARY = IT_LIST[].
ENDFORM. "list_begin
----
FORM GET_UNAME *
----
FORM GET_UNAME USING WHAT_UNAME CHANGING WHAT_NAME.
DATA: TEMP_PERSNUMBER TYPE AD_PERSNUM.
DATA: NAME1(60) TYPE C.
DATA: NAME2(60) TYPE C.
SELECT SINGLE PERSNUMBER FROM USR21 INTO TEMP_PERSNUMBER
WHERE BNAME = WHAT_UNAME.
IF SY-SUBRC EQ 0.
SELECT SINGLE NAME_FIRST NAME_LAST INTO (NAME1, NAME2)
FROM ADRP
WHERE PERSNUMBER = TEMP_PERSNUMBER.
IF SY-SUBRC EQ 0.
CONCATENATE NAME1 NAME2 INTO WHAT_NAME SEPARATED BY SPACE.
TRANSLATE WHAT_NAME TO UPPER CASE.
ELSE.
WHAT_NAME = WHAT_UNAME.
ENDIF.
ELSE.
WHAT_NAME = WHAT_UNAME.
ENDIF.
ENDFORM.
----
FORM user_command *
----
FORM USER_COMMAND USING RF_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD. "#EC CALLED
REFRESH: TAB_USR02.
GV_VAR = RS_SELFIELD.
CASE RF_UCOMM.
WHEN '&IC1'.
SELECT BNAME BCODE USTYP FROM USR02 INTO TABLE TAB_USR02
WHERE BNAME = RS_SELFIELD-VALUE.
PERFORM DISP_FLD.
ENDCASE.
ENDFORM.
----
Form DISP_FLD
----
FORM DISP_FLD.
PERFORM FILL_FIELDCAT2.
PERFORM CALL_ALV_GRID_DISPLAY2.
ENDFORM. " DISP_FLD
----
Form fill_fieldcat2 *
----
FORM FILL_FIELDCAT2.
REFRESH: IT_FIELDCAT.
CLEAR: WA_FIELDCAT, IT_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'BNAME'.
WA_FIELDCAT-REPTEXT_DDIC = 'User Id'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'BCODE'.
WA_FIELDCAT-REPTEXT_DDIC = 'Password'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-FIELDNAME = 'USTYP'.
WA_FIELDCAT-REPTEXT_DDIC = 'Usertype'.
APPEND WA_FIELDCAT TO IT_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. " fill_fieldcat2
----
Form call_alv_grid_display2 *
----
FORM CALL_ALV_GRID_DISPLAY2 .
DATA: REPID LIKE SY-REPID.
REPID = SY-REPID.
REFRESH: EVENTS.
CLEAR EVENTS.
EVENTS-NAME = 'TOP_OF_LIST'.
EVENTS-FORM = 'LIST_BEGIN2'.
APPEND EVENTS.
ALV GRID OUTPUT
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = REPID
I_CALLBACK_TOP_OF_PAGE = 'LIST_BEGIN'
I_BACKGROUND_ID = 'BACKGROUND1'
I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
I_GRID_SETTINGS = GSET
I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
IS_LAYOUT = LAYOUT
IS_PRINT = IS_PRINT
IT_FIELDCAT = IT_FIELDCAT[]
IT_EVENTS = EVENTS[]
IT_SORT = GT_SORT
I_SAVE = 'A'
TABLES
T_OUTTAB = TAB_USR02[]
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
ENDFORM. " call_alv_grid_display
----
FORM LIST_BEGIN2 *
----
FORM LIST_BEGIN2.
DATA: IT_LIST TYPE SLIS_T_LISTHEADER WITH HEADER LINE.
REFRESH: IT_LIST.
CLEAR IT_LIST.
IT_LIST-TYP = 'H'.
IT_LIST-INFO = 'Detailed Information'.
APPEND IT_LIST.
CLEAR IT_LIST.
IT_LIST-TYP = 'H'.
IT_LIST-INFO = GV_VAR-VALUE.
APPEND IT_LIST.
CLEAR IT_LIST.
IT_LIST-TYP = 'S'.
IT_LIST-KEY = ''.
APPEND IT_LIST.
CLEAR IT_LIST.
IT_LIST-TYP = 'S'.
IT_LIST-KEY = ''.
APPEND IT_LIST.
CLEAR IT_LIST.
IT_LIST-TYP = 'S'.
IT_LIST-KEY = 'Report Date:'.
WRITE SY-DATUM TO IT_LIST-INFO.
APPEND IT_LIST.
ENDFORM. "list_begin2
*----
The key their is its subroutine named "USER_COMMAND". It generates another ALV window depending on the value of the field you clicked.
If you want to try this code, kindly arrange it a little bit because it's quite distorted with text formatting here in SDN forum..
Sample Code of that subroutine:
----
FORM user_command *
----
FORM USER_COMMAND USING RF_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
REFRESH: TAB_USR02.
GV_VAR = RS_SELFIELD.
CASE RF_UCOMM.
WHEN '&IC1'.
SELECT BNAME BCODE USTYP FROM USR02 INTO TABLE TAB_USR02
WHERE BNAME = RS_SELFIELD-VALUE.
PERFORM DISP_FLD.
ENDCASE.
ENDFORM.
*----
Hope this will help.
2008 Apr 09 10:46 AM
Hi,
Refer below code
&----
*& Form sub_display_data
&----
text
----
FORM sub_display_data .
*--Local Variables
DATA : lv_repid LIKE sy-repid.
*--Pass the Report name
lv_repid = sy-repid.
wa_layout-colwidth_optimize = 'X'.
IF NOT it_final[] IS INITIAL.
*--Call the function module to display the ALV report
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = lv_repid
is_layout = wa_layout
it_fieldcat = it_fieldcat[]
i_default = 'X'
i_save = 'A'
i_callback_user_command = 'USER_COMMAND'
is_variant = wa_variant
it_events = it_events
is_print = wa_print
it_sort = li_sort
TABLES
t_outtab = it_final
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.
ELSE.
*--No data found for the given selection criteria.
MESSAGE text-016 TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " sub_display_data.
&----
*& Form user_command
&----
text
----
-->U_COM text
----
FORM user_command USING u_com LIKE sy-ucomm
sel_field TYPE slis_selfield.
*--Local Variables
DATA : lv_belnr TYPE belnr_d,
lv_bukrs TYPE bukrs,
lv_gjahr TYPE gjahr.
IF sel_field-fieldname EQ 'BELNR'.
READ TABLE it_bsis INTO wa_bsis WITH KEY belnr = sel_field-value.
IF sy-subrc EQ 0.
lv_belnr = wa_bsis-belnr.
lv_bukrs = wa_bsis-bukrs.
lv_gjahr = wa_bsis-gjahr.
ENDIF.
CASE u_com.
WHEN '&IC1'.
SELECT SINGLE belnr
bukrs
gjahr
FROM bsis
INTO (lv_belnr,lv_bukrs,lv_gjahr)
WHERE belnr EQ lv_belnr
AND bukrs EQ lv_bukrs
AND gjahr EQ lv_gjahr.
IF sy-subrc EQ 0.
SET PARAMETER ID : 'BLN' FIELD lv_belnr,
'BUK' FIELD lv_bukrs,
'GJR' FIELD lv_gjahr.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDIF.
ENDFORM. "user_command
Regards,
Prashant
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |