06-10-2008 6:51 AM
Hi all
In ALV report when I click on a particular field for ex if I click on material number It should display description of that martial number in another screen (like at selection screen operation) . How to do this? Please Help me.
Regards
Prajwal K.
06-10-2008 6:58 AM
hi!
Have a look on this sample report.
You have to assign the Events to it and populate it
REPORT YINTERACTIVE_ALV .
tables: vbrk.
type-pools slis.
data: it_vbrk like vbrk occurs 0 with header line,
it_vbrp like vbrp occurs 0 with header line,
wk_vbeln like vbrk-vbeln,
wk_vbrk like it_vbrk.
selection-screen begin of block block1.
select-options: so_vbeln for vbrk-vbeln,
so_fkdat for vbrk-fkdat obligatory,
so_kunag for vbrk-kunag.
selection-screen end of block block1.
*VARIABLES FOR ALV.
DATA:
AFIELD TYPE SLIS_FIELDCAT_ALV ,
FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
V_REPID LIKE SY-REPID ,
IT_EVENTS TYPE SLIS_T_EVENT,
WK_EVENTS LIKE LINE OF IT_EVENTS,
wk_layout TYPE slis_layout_alv,
wa_color TYPE lvc_s_scol,
IT_LIST_COMMENTS TYPE SLIS_T_LISTHEADER,
WK_LIST_COMMENTS LIKE LINE OF IT_LIST_COMMENTS,
i_sort TYPE slis_t_sortinfo_alv,
w_sort LIKE LINE OF i_sort.
CONSTANTS: C_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME
VALUE 'F_TOP_OF_PAGE'.
start-of-selection.
perform get_maindata.
perform it_events.
perform populate_events.
perform display_maindata.
&----
*& Form GET_MAINDATA
&----
text
----
--> p1 text
<-- p2 text
----
form GET_MAINDATA .
SELECT * FROM vbrk into table it_vbrk
WHERE vbeln in so_vbeln
AND fkdat in so_fkdat
AND kunag in so_kunag.
endform. " GET_MAINDATA
&----
*& Form DISPLAY_MAINDATA
&----
text
----
--> p1 text
<-- p2 text
----
form DISPLAY_MAINDATA .
sort it_vbrk by vbeln.
AFIELD-COL_POS = 1 .
AFIELD-FIELDNAME = 'VBELN'.
AFIELD-FIX_COLUMN = 'X'.
AFIELD-SELTEXT_M = 'Bill Docu No'.
afield-emphasize = 'C700'.
afield-hotspot = 'X'.
APPEND AFIELD TO FIELDCAT.
CLEAR AFIELD.
AFIELD-COL_POS = 2 .
AFIELD-FIELDNAME = 'FKDAT'.
AFIELD-SELTEXT_M = 'Bill Date'.
APPEND AFIELD TO FIELDCAT.
CLEAR AFIELD.
AFIELD-COL_POS = 3.
AFIELD-FIELDNAME = 'VBTYP'.
AFIELD-SELTEXT_M = 'Docu Category'.
APPEND AFIELD TO FIELDCAT.
CLEAR AFIELD.
AFIELD-COL_POS = 6 .
AFIELD-FIELDNAME = 'LAND1'.
AFIELD-SELTEXT_M = 'Desti Country'.
APPEND AFIELD TO FIELDCAT.
CLEAR AFIELD.
AFIELD-COL_POS = 7.
AFIELD-FIELDNAME = 'REGIO'.
AFIELD-SELTEXT_M = 'Region'.
APPEND AFIELD TO FIELDCAT.
CLEAR AFIELD.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_user_command = 'USER_COMMAND'
i_save = 'A'
it_fieldcat = fieldcat[]
it_events = it_events
is_layout = wk_layout
it_sort = i_sort[]
TABLES
t_outtab = it_vbrk
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.
endform. " DISPLAY_MAINDATA
&----
*& Form F_TOP_OF_PAGE
&----
FORM F_TOP_OF_PAGE.
DATA: WK_FRMDATE(10), WK_TODATE(10).
DATA: wk_fyear(4), wk_fmonth(2), wk_fday(2), wk_tyear(4),
wk_tmonth(2), wk_tday(2).
CLEAR: IT_LIST_COMMENTS[].
WK_LIST_COMMENTS-TYP = 'H'. "H=Header, S=Selection, A=Action
WK_LIST_COMMENTS-KEY = ''.
WK_LIST_COMMENTS-INFO = 'INTERACTIVE ALV'.
APPEND WK_LIST_COMMENTS TO IT_LIST_COMMENTS.
CLEAR WK_LIST_COMMENTS.
WK_LIST_COMMENTS-TYP = 'S'. " H = Header, S = Selection, A = Action
WK_LIST_COMMENTS-KEY = ''.
if so_fkdat-high <> '00000000'.
wk_fyear = so_fkdat-low+0(4).
wk_fmonth = so_fkdat-low+4(2).
wk_fday = so_fkdat-low+6(2).
wk_tyear = so_fkdat-high+0(4).
wk_tmonth = so_fkdat-high+4(2).
wk_tday = so_fkdat-high+6(2).
concatenate wk_fday '.' wk_fmonth '.' wk_fyear into wk_frmdate.
concatenate wk_tday '.' wk_tmonth '.' wk_tyear into wk_todate.
else.
wk_fyear = so_fkdat-low+0(4).
wk_fmonth = so_fkdat-low+4(2).
wk_fday = so_fkdat-low+6(2).
concatenate wk_fday '.' wk_fmonth '.' wk_fyear into wk_frmdate.
endif.
if so_fkdat-high <> '00000000'.
CONCATENATE 'FROM:' WK_FRMDATE 'TO:' WK_TODATE INTO
WK_LIST_COMMENTS-INFO SEPARATED BY SPACE.
APPEND WK_LIST_COMMENTS TO IT_LIST_COMMENTS.
elseif so_fkdat-high = '00000000'.
CONCATENATE 'FROM:' WK_FRMDATE INTO
WK_LIST_COMMENTS-INFO SEPARATED BY SPACE.
APPEND WK_LIST_COMMENTS TO IT_LIST_COMMENTS.
endif.
*FOR LOGO.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
I_LOGO = 'ENJOYSAP_LOGO'
IT_LIST_COMMENTARY = IT_LIST_COMMENTS.
ENDFORM. "F_TOP_OF_PAGE
&----
*& Form IT_EVENTS
&----
form IT_EVENTS .
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = IT_EVENTS.
READ TABLE IT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
INTO WK_EVENTS.
IF SY-SUBRC = 0.
MOVE C_FORMNAME_TOP_OF_PAGE TO WK_EVENTS-FORM.
MODIFY IT_EVENTS FROM WK_EVENTS INDEX SY-TABIX.
ENDIF.
endform. " IT_EVENTS
&----
*& Form POPULATE_EVENTS
&----
text
----
--> p1 text
<-- p2 text
----
form POPULATE_EVENTS .
READ TABLE it_events INTO WK_EVENTS WITH KEY NAME = 'TOP_OF_PAGE'.
IF SY-SUBRC EQ 0.
WK_EVENTS-FORM = 'TOP_OF_PAGE'.
MODIFY it_EVENTS FROM WK_EVENTS TRANSPORTING FORM WHERE NAME =
WK_EVENTS-FORM.
ENDIF.
READ TABLE it_EVENTS INTO WK_EVENTS WITH KEY NAME = 'USER_COMMAND'.
IF SY-SUBRC EQ 0.
WK_EVENTS-FORM = 'USER_COMMAND'.
MODIFY it_EVENTS FROM WK_EVENTS TRANSPORTING FORM WHERE NAME =
WK_EVENTS-NAME.
ENDIF.
endform. " POPULATE_EVENTS
*&----
**& Form USER_COMMAND
*&----
text
*----
-->R_UCOMM text
-->, text
-->RS_SLEFIELDtext
*----
FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CASE R_UCOMM.
WHEN '&IC1'.
READ TABLE IT_vbrk INTO Wk_vbrk INDEX RS_SELFIELD-TABINDEX.
wk_vbeln = wk_vbrk-vbeln.
PERFORM BUILD_FIELDCATLOG_vbrp.
PERFORM EVENT_CALL_vbrp.
PERFORM POPULATE_EVENT_vbrp.
perform get_nextdata.
PERFORM DISPLAY_ALV_vbrp.
ENDCASE.
ENDFORM. "user_command
&----
*& Form GET_NEXTDATA
&----
text
----
--> p1 text
<-- p2 text
----
form GET_NEXTDATA .
clear: it_vbrp, it_vbrp[].
SELECT * FROM vbrp into table it_vbrp
WHERE vbeln = wk_vbeln.
endform. " GET_NEXTDATA
Reward me if its useful.
Regards,
Nagulan
06-10-2008 11:54 AM