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

alv grid

Former Member
0 Likes
598

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.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
564

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

3 REPLIES 3
Read only

Former Member
0 Likes
565

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

Read only

Former Member
0 Likes
564

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.

Read only

former_member386202
Active Contributor
0 Likes
564

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