2008 Jan 23 11:32 AM
Hi,
How to get the functionality of at line selection command in ALV reports. Please let me know.
Thanks,
Mallika
2008 Jan 23 11:35 AM
hi,
try this
&----
*& Report ZINT_ALV
*&
&----
*&
*&
&----
REPORT zint_alv.
TYPE-POOLS:slis.
TABLES:mara,
makt,
mseg.
DATA:BEGIN OF itab OCCURS 0,
matnr LIKE mara-matnr,
maktx LIKE makt-maktx,
END OF itab.
DATA:BEGIN OF itab1 OCCURS 0,
mblnr LIKE mseg-mblnr,
menge LIKE mseg-menge,
meins LIKE mseg-meins,
werks LIKE mseg-werks,
END OF itab1.
DATA:BEGIN OF itab2 OCCURS 0,
mblnr LIKE mseg-mblnr,
budat LIKE mkpf-budat,
END OF itab2.
DATA:fcat TYPE slis_t_fieldcat_alv,
fcat1 TYPE slis_t_fieldcat_alv,
fcat2 TYPE slis_t_fieldcat_alv,
eve TYPE slis_t_event,
eve1 TYPE slis_t_event.
DATA:t_mat LIKE mara-matnr,
t_doc LIKE mseg-mblnr,
s_mat LIKE mara-matnr,
g_repid LIKE sy-repid,
subtot TYPE slis_t_sortinfo_alv,
g_subtot LIKE LINE OF subtot.
SELECTION-SCREEN:BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:mat FOR mara-matnr OBLIGATORY.
SELECTION-SCREEN:END OF BLOCK blk1.
INITIALIZATION.
PERFORM build_fcat USING fcat.
PERFORM build_eve.
START-OF-SELECTION.
PERFORM get_data.
PERFORM dis_data.
&----
*& Form build_fcat
&----
text
----
-->T_FCAT text
----
FORM build_fcat USING t_fcat TYPE slis_t_fieldcat_alv.
DATA:wa_fcat TYPE slis_fieldcat_alv.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'MATNR'.
wa_fcat-seltext_m = 'Material'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'MAKTX'.
wa_fcat-seltext_m = 'Description'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
ENDFORM. "build_fcat
&----
*& Form build_eve
&----
text
----
FORM build_eve.
DATA:t_eve TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = eve
EXCEPTIONS
LIST_TYPE_WRONG = 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. "build_eve
&----
*& Form get_data
&----
text
----
FORM get_data.
SELECT maramatnr maktmaktx INTO CORRESPONDING FIELDS OF TABLE itab
FROM mara INNER JOIN makt
ON maramatnr = maktmatnr
WHERE mara~matnr IN mat.
ENDFORM. "get_data
&----
*& Form dis_data
&----
text
----
FORM dis_data.
g_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid "'ZINT_ALV'
i_callback_user_command = 'USER_COMMAND'
i_grid_title = 'Interactive ALV'
it_fieldcat = fcat
it_events = eve
TABLES
t_outtab = itab
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. "dis_data
&----
*& Form user_command
&----
text
----
-->U_COM text
----
FORM user_command USING u_com LIKE sy-ucomm sel_field TYPE slis_selfield.
CLEAR fcat1.
CASE u_com.
WHEN '&IC1'.
READ TABLE itab INDEX sel_field-tabindex.
IF sel_field-fieldname = 'MATNR'.
IF sy-subrc = 0.
t_mat = itab-matnr.
PERFORM build_cat1 USING fcat1.
PERFORM build_eve1.
PERFORM get_data1.
PERFORM dis_data1.
ENDIF.
ENDIF.
SET PARAMETER ID 'MAT' FIELD t_mat.*
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.*
ENDCASE.
ENDFORM. "user_command
&----
*& Form build_fcat1
&----
text
----
-->T_FCAT1 text
----
FORM build_cat1 USING t_fcat1 TYPE slis_t_fieldcat_alv.
DATA:wa_fcat1 TYPE slis_fieldcat_alv.
wa_fcat1-tabname = 'ITAB1'.
wa_fcat1-fieldname = 'MBLNR'.
wa_fcat1-seltext_m = 'Material Doc.'.
APPEND wa_fcat1 TO t_fcat1.
CLEAR wa_fcat1.
wa_fcat1-tabname = 'ITAB1'.
wa_fcat1-fieldname = 'MENGE'.
wa_fcat1-seltext_m = 'Quantity'.
wa_fcat1-do_sum = 'X'.
APPEND wa_fcat1 TO t_fcat1.
CLEAR wa_fcat1.
wa_fcat1-tabname = 'ITAB1'.
wa_fcat1-fieldname = 'MEINS'.
wa_fcat1-seltext_m = 'UOM'.
APPEND wa_fcat1 TO t_fcat1.
CLEAR wa_fcat1.
wa_fcat1-tabname = 'ITAB1'.
wa_fcat1-fieldname = 'WERKS'.
wa_fcat1-seltext_m = 'Plant'.
APPEND wa_fcat1 TO t_fcat1.
CLEAR wa_fcat1.
ENDFORM. "build_fcat1
&----
*& Form build_eve1
&----
text
----
FORM build_eve1.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = eve1
EXCEPTIONS
list_type_wrong = 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. "build_eve1
&----
*& Form get_data1
&----
text
----
FORM get_data1.
SELECT mblnr menge meins werks FROM mseg
INTO CORRESPONDING FIELDS OF TABLE itab1
WHERE matnr = t_mat.
ENDFORM. "get_data1
&----
*& Form dis_data1
&----
text
----
FORM dis_data1.
g_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid "'ZINT_ALV'
i_callback_user_command = 'USER_COMMAND1'
it_fieldcat = fcat1
it_events = eve1
i_save = 'A'
it_sort = subtot
TABLES
t_outtab = itab1
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. "dis_data1
&----
*& Form user_command1
&----
text
----
-->U_COM1 text
-->SEL_FIELD text
----
FORM user_command1 USING u_com1 LIKE sy-ucomm sel_field TYPE slis_selfield.
CASE u_com1.
WHEN '&IC1'.
READ TABLE itab1 INDEX sel_field-tabindex.
IF sy-subrc = 0.
t_doc = itab1-mblnr.
PERFORM build_cat2 USING fcat2.
PERFORM get_data2.
PERFORM dis_data2.
ENDIF.
ENDCASE.
ENDFORM. "user_command
&----
*& Form build_cat2
&----
text
----
-->P_FCAT1 text
----
FORM build_cat2 USING t_fcat2 TYPE slis_t_fieldcat_alv.
DATA:wa_fcat2 TYPE slis_fieldcat_alv.
wa_fcat2-tabname = 'ITAB2'.
wa_fcat2-fieldname = 'MBLNR'.
wa_fcat2-seltext_m = 'Material Doc.'.
APPEND wa_fcat2 TO t_fcat2.
CLEAR wa_fcat2.
wa_fcat2-tabname = 'ITAB2'.
wa_fcat2-fieldname = 'BUDAT'.
wa_fcat2-seltext_m = 'Material Date'.
APPEND wa_fcat2 TO t_fcat2.
CLEAR wa_fcat2.
ENDFORM. " build_cat2
&----
*& Form get_data2
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_data2 .
SELECT mblnr budat FROM mkpf
INTO CORRESPONDING FIELDS OF TABLE itab2
WHERE mblnr = t_doc.
ENDFORM. " get_data2
&----
*& Form dis_data2
&----
text
----
--> p1 text
<-- p2 text
----
FORM dis_data2 .
g_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid "'ZINT_ALV'
it_fieldcat = fcat2
i_save = 'A'
TABLES
t_outtab = itab2
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. " dis_data2
here u have to double click..
then it will go to form specify in i_callback_user_command and sy-ucomm for double click is &IC1
reward if usefull....
Hi,
How to get the functionality of at line selection command in ALV reports. Please let me know.
Thanks,
Mallika
2008 Jan 23 11:35 AM
hi,
try this
&----
*& Report ZINT_ALV
*&
&----
*&
*&
&----
REPORT zint_alv.
TYPE-POOLS:slis.
TABLES:mara,
makt,
mseg.
DATA:BEGIN OF itab OCCURS 0,
matnr LIKE mara-matnr,
maktx LIKE makt-maktx,
END OF itab.
DATA:BEGIN OF itab1 OCCURS 0,
mblnr LIKE mseg-mblnr,
menge LIKE mseg-menge,
meins LIKE mseg-meins,
werks LIKE mseg-werks,
END OF itab1.
DATA:BEGIN OF itab2 OCCURS 0,
mblnr LIKE mseg-mblnr,
budat LIKE mkpf-budat,
END OF itab2.
DATA:fcat TYPE slis_t_fieldcat_alv,
fcat1 TYPE slis_t_fieldcat_alv,
fcat2 TYPE slis_t_fieldcat_alv,
eve TYPE slis_t_event,
eve1 TYPE slis_t_event.
DATA:t_mat LIKE mara-matnr,
t_doc LIKE mseg-mblnr,
s_mat LIKE mara-matnr,
g_repid LIKE sy-repid,
subtot TYPE slis_t_sortinfo_alv,
g_subtot LIKE LINE OF subtot.
SELECTION-SCREEN:BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:mat FOR mara-matnr OBLIGATORY.
SELECTION-SCREEN:END OF BLOCK blk1.
INITIALIZATION.
PERFORM build_fcat USING fcat.
PERFORM build_eve.
START-OF-SELECTION.
PERFORM get_data.
PERFORM dis_data.
&----
*& Form build_fcat
&----
text
----
-->T_FCAT text
----
FORM build_fcat USING t_fcat TYPE slis_t_fieldcat_alv.
DATA:wa_fcat TYPE slis_fieldcat_alv.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'MATNR'.
wa_fcat-seltext_m = 'Material'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
wa_fcat-tabname = 'ITAB'.
wa_fcat-fieldname = 'MAKTX'.
wa_fcat-seltext_m = 'Description'.
APPEND wa_fcat TO t_fcat.
CLEAR wa_fcat.
ENDFORM. "build_fcat
&----
*& Form build_eve
&----
text
----
FORM build_eve.
DATA:t_eve TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = eve
EXCEPTIONS
LIST_TYPE_WRONG = 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. "build_eve
&----
*& Form get_data
&----
text
----
FORM get_data.
SELECT maramatnr maktmaktx INTO CORRESPONDING FIELDS OF TABLE itab
FROM mara INNER JOIN makt
ON maramatnr = maktmatnr
WHERE mara~matnr IN mat.
ENDFORM. "get_data
&----
*& Form dis_data
&----
text
----
FORM dis_data.
g_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid "'ZINT_ALV'
i_callback_user_command = 'USER_COMMAND'
i_grid_title = 'Interactive ALV'
it_fieldcat = fcat
it_events = eve
TABLES
t_outtab = itab
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. "dis_data
&----
*& Form user_command
&----
text
----
-->U_COM text
----
FORM user_command USING u_com LIKE sy-ucomm sel_field TYPE slis_selfield.
CLEAR fcat1.
CASE u_com.
WHEN '&IC1'.
READ TABLE itab INDEX sel_field-tabindex.
IF sel_field-fieldname = 'MATNR'.
IF sy-subrc = 0.
t_mat = itab-matnr.
PERFORM build_cat1 USING fcat1.
PERFORM build_eve1.
PERFORM get_data1.
PERFORM dis_data1.
ENDIF.
ENDIF.
SET PARAMETER ID 'MAT' FIELD t_mat.*
CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.*
ENDCASE.
ENDFORM. "user_command
&----
*& Form build_fcat1
&----
text
----
-->T_FCAT1 text
----
FORM build_cat1 USING t_fcat1 TYPE slis_t_fieldcat_alv.
DATA:wa_fcat1 TYPE slis_fieldcat_alv.
wa_fcat1-tabname = 'ITAB1'.
wa_fcat1-fieldname = 'MBLNR'.
wa_fcat1-seltext_m = 'Material Doc.'.
APPEND wa_fcat1 TO t_fcat1.
CLEAR wa_fcat1.
wa_fcat1-tabname = 'ITAB1'.
wa_fcat1-fieldname = 'MENGE'.
wa_fcat1-seltext_m = 'Quantity'.
wa_fcat1-do_sum = 'X'.
APPEND wa_fcat1 TO t_fcat1.
CLEAR wa_fcat1.
wa_fcat1-tabname = 'ITAB1'.
wa_fcat1-fieldname = 'MEINS'.
wa_fcat1-seltext_m = 'UOM'.
APPEND wa_fcat1 TO t_fcat1.
CLEAR wa_fcat1.
wa_fcat1-tabname = 'ITAB1'.
wa_fcat1-fieldname = 'WERKS'.
wa_fcat1-seltext_m = 'Plant'.
APPEND wa_fcat1 TO t_fcat1.
CLEAR wa_fcat1.
ENDFORM. "build_fcat1
&----
*& Form build_eve1
&----
text
----
FORM build_eve1.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = eve1
EXCEPTIONS
list_type_wrong = 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. "build_eve1
&----
*& Form get_data1
&----
text
----
FORM get_data1.
SELECT mblnr menge meins werks FROM mseg
INTO CORRESPONDING FIELDS OF TABLE itab1
WHERE matnr = t_mat.
ENDFORM. "get_data1
&----
*& Form dis_data1
&----
text
----
FORM dis_data1.
g_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid "'ZINT_ALV'
i_callback_user_command = 'USER_COMMAND1'
it_fieldcat = fcat1
it_events = eve1
i_save = 'A'
it_sort = subtot
TABLES
t_outtab = itab1
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. "dis_data1
&----
*& Form user_command1
&----
text
----
-->U_COM1 text
-->SEL_FIELD text
----
FORM user_command1 USING u_com1 LIKE sy-ucomm sel_field TYPE slis_selfield.
CASE u_com1.
WHEN '&IC1'.
READ TABLE itab1 INDEX sel_field-tabindex.
IF sy-subrc = 0.
t_doc = itab1-mblnr.
PERFORM build_cat2 USING fcat2.
PERFORM get_data2.
PERFORM dis_data2.
ENDIF.
ENDCASE.
ENDFORM. "user_command
&----
*& Form build_cat2
&----
text
----
-->P_FCAT1 text
----
FORM build_cat2 USING t_fcat2 TYPE slis_t_fieldcat_alv.
DATA:wa_fcat2 TYPE slis_fieldcat_alv.
wa_fcat2-tabname = 'ITAB2'.
wa_fcat2-fieldname = 'MBLNR'.
wa_fcat2-seltext_m = 'Material Doc.'.
APPEND wa_fcat2 TO t_fcat2.
CLEAR wa_fcat2.
wa_fcat2-tabname = 'ITAB2'.
wa_fcat2-fieldname = 'BUDAT'.
wa_fcat2-seltext_m = 'Material Date'.
APPEND wa_fcat2 TO t_fcat2.
CLEAR wa_fcat2.
ENDFORM. " build_cat2
&----
*& Form get_data2
&----
text
----
--> p1 text
<-- p2 text
----
FORM get_data2 .
SELECT mblnr budat FROM mkpf
INTO CORRESPONDING FIELDS OF TABLE itab2
WHERE mblnr = t_doc.
ENDFORM. " get_data2
&----
*& Form dis_data2
&----
text
----
--> p1 text
<-- p2 text
----
FORM dis_data2 .
g_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid "'ZINT_ALV'
it_fieldcat = fcat2
i_save = 'A'
TABLES
t_outtab = itab2
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. " dis_data2
here u have to double click..
then it will go to form specify in i_callback_user_command and sy-ucomm for double click is &IC1
reward if usefull....
2008 Jan 23 11:36 AM
2008 Jan 23 11:37 AM
Hi,
check out this code.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER =
I_BUFFER_ACTIVE = ' '
I_CALLBACK_PROGRAM = PRG
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = 'USER_COMMAND1' " user_command is the subroutine name which will get triggered when u do any action on the alv output.
I_STRUCTURE_NAME =
IS_LAYOUT = LAYOUT
IT_FIELDCAT = FIELDCAT[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = 'A'
IS_VARIANT = G_VARIANT
IT_EVENTS = GT_EVENTS[]
IT_EVENT_EXIT =
IS_PRINT =
IS_REPREP_ID =
I_SCREEN_START_COLUMN = 0
I_SCREEN_START_LINE = 0
I_SCREEN_END_COLUMN = 0
I_SCREEN_END_LINE = 0
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
T_OUTTAB = ITAB_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.
and in the subroutine.
FORM USER_COMMAND1 USING R_UCOMM TYPE SY-UCOMM
SELECTED_FIELD TYPE SLIS_SELFIELD.
IF R_UCOMM = '&IC1'. "double click on the line.
READ TABLE ITAB_FINAL INDEX SELECTED_FIELD-TABINDEX.
IF SY-SUBRC = 0.
GUID = ITAB_FINAL-GUID.
SET PARAMETER ID 'GUID' FIELD GUID.
CALL TRANSACTION 'ZDISP_TEST' AND SKIP FIRST SCREEN.
ENDIF.
ENDIF.
ENDFORM. "USER_COMMAND
regards,
Santosh Thorat
2008 Jan 23 12:08 PM
Hi,
Please refer to the link below :
http://www.sapdev.co.uk/reporting/alv/alvgrid_ucomm.htm
Thanks,
Sriram Ponna.
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |