Hai,
Find the Sample Program,its working for me.
TABLES:eban.
TYPES:BEGIN OF ty_item,
chk(1) TYPE c,
icon TYPE string,
banfn TYPE eban-banfn,
bnfpo TYPE eban-bnfpo,
werks TYPE eban-werks,
menge TYPE eban-menge,
matnr TYPE eban-matnr,
meins TYPE eban-meins,
txz01 TYPE eban-txz01,
remark TYPE string,
techs TYPE string,
END OF ty_item.
DATA:it_item TYPE STANDARD TABLE OF ty_item WITH HEADER LINE,
it_item1 TYPE STANDARD TABLE OF zprim WITH HEADER LINE.
DATA:lf_name TYPE rs38l_fnam.
DATA:wa_event TYPE slis_alv_event,
it_events TYPE slis_t_event,
it_line TYPE TABLE OF tline WITH HEADER LINE.
DATA: it_fieldcat TYPE lvc_t_fcat.
DATA: ls_fieldcat TYPE lvc_s_fcat.
DATA: gt_drpdwn1 TYPE lvc_t_drop,
ls_drpdwn TYPE lvc_s_drop.
DATA: v_events TYPE slis_t_event.
* wa_event TYPE slis_alv_event.
DATA: control TYPE ssfctrlop, "Spool request control parameter
w_function_name TYPE rs38l_fnam,
department TYPE user_addr-department .
DATA: ref_grid TYPE REF TO cl_gui_alv_grid,
g_custom_container TYPE REF TO cl_gui_custom_container,
gt_fieldcat TYPE lvc_t_fcat,
gs_layout TYPE lvc_s_layo,
g_container TYPE scrfname VALUE 'BCALV_GRID_DEMO_0100_CONT1',
g_grid TYPE REF TO cl_gui_alv_grid,
gd_layout TYPE lvc_s_layo, "slis_layout_alv,
gd_repid LIKE sy-repid,
banfn TYPE eban-banfn.
DATA:lt_fcat TYPE lvc_t_fcat.
DATA ls_fcat TYPE lvc_s_fcat.
SELECTION-SCREEN BEGIN OF BLOCK input WITH FRAME TITLE text-t01.
SELECT-OPTIONS:s_banfn FOR eban-banfn OBLIGATORY.
SELECTION-SCREEN END OF BLOCK input.
PERFORM retrive_data.
ls_fieldcat-fieldname = 'CHK'.
ls_fieldcat-scrtext_m = 'SELECT'.
ls_fieldcat-col_pos = 0.
ls_fieldcat-outputlen = 6.
ls_fieldcat-emphasize = 'X'.
ls_fieldcat-key = 'X'.
ls_fieldcat-checkbox = 'X'.
ls_fieldcat-edit = 'X'.
APPEND ls_fieldcat TO it_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-fieldname = 'ICON'.
ls_fieldcat-scrtext_m = 'PRINT LABEL'.
ls_fieldcat-outputlen = 5.
ls_fieldcat-hotspot = 'X'. "X to declare the field as a hotspot
ls_fieldcat-icon = 'X'. "X to declare the field as an icon
ls_fieldcat-key = 'X'.
APPEND ls_fieldcat TO it_fieldcat.
CLEAR ls_fieldcat.
PERFORM display USING 'BANFN' 'Purchase Req No.' 10 ''.
PERFORM display USING 'WERKS' 'Plant.' 10 ''.
*&---------------------------------------------------------------------*
*& Form RETRIVE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM retrive_data.
SELECT banfn bnfpo matnr werks menge meins txz01 INTO CORRESPONDING FIELDS OF TABLE it_item FROM eban WHERE banfn IN s_banfn.
LOOP AT it_item.
it_item-icon = '@0X@'.
MODIFY it_item TRANSPORTING icon.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form user_command
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE rs_selfield-fieldname.
WHEN 'ICON'.
READ TABLE it_item INDEX rs_selfield-tabindex.
IF it_item-chk = 'X'.
* PERFORM open_spool.
PERFORM smartform_data.
PERFORM fill_data.
* PERFORM close_spool.
* SELECT SINGLE
ENDIF.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form display
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_FNAME text
* -->P_TXT text
* -->P_FJUST text
* -->P_OLEN text
*----------------------------------------------------------------------*
FORM display USING fname
ftext
leng
p_edit.
ls_fieldcat-fieldname = fname.
ls_fieldcat-coltext = ftext.
ls_fieldcat-outputlen = leng.
ls_fieldcat-edit = p_edit.
APPEND ls_fieldcat TO it_fieldcat.
CLEAR:ls_fieldcat.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_alv.
DATA: x_layout TYPE lvc_s_layo.
SORT it_item BY banfn.
DELETE ADJACENT DUPLICATES FROM it_item COMPARING banfn.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
* i_callback_top_of_page = 'TOP-OF-PAGE'
is_layout_lvc = gd_layout
i_callback_user_command = 'USER_COMMAND'
it_fieldcat_lvc = it_fieldcat[]
i_save = 'A'
TABLES
t_outtab = it_item[]
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_alv
*&---------------------------------------------------------------------*
*& Form CALL_FORM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM call_form USING it_item1-banfn.
* LOOP AT it_item1 WHERE banfn = it_item1-banfn.
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname = 'ZHMMSJ_PR_FORM'
IMPORTING
fm_name = lf_name.
CALL FUNCTION lf_name
EXPORTING
* control_parameters = control
department = department
banfn = banfn
TABLES
it_item1 = it_item1.
EXIT.
* ENDLOOP.
ENDFORM. " CALL_FORM
*&---------------------------------------------------------------------*
*& Form SMARTFORM_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM smartform_data.
SELECT banfn bnfpo matnr werks menge meins txz01 INTO CORRESPONDING FIELDS OF TABLE it_item1 FROM eban WHERE banfn = it_item-banfn."AND bnfpo = it_item-bnfpo.
LOOP AT it_item1.
SELECT SINGLE department INTO department FROM user_addr WHERE bname = sy-uname.
ENDLOOP.
ENDFORM. " SMARTFORM_DATA
*&---------------------------------------------------------------------*
*& Form FILL_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_data.
LOOP AT it_item1.
PERFORM call_form USING it_item1-banfn.
EXIT.
ENDLOOP.
ENDFORM. " F
After Executing the program,alv grid will display,click the check box,and the icon the form will display.