Hi Preetam,
I've used references (pointers) instead of normal parameters with predefined types.
REPORT ztesla.
"----------------------------------------
DATA: gt_tm1 TYPESTANDARDTABLEOF mara,
gv_ref TYPEREFTOdata.
"----------------------------------------
START-OF-SELECTION.
SELECT * INTOTABLE gt_tm1 FROM mara UPTO7ROWS.
GET REFERENCE OF gt_tm1 INTO gv_ref.
PERFORM f_doit USING gv_ref '7'.
*&------------------------------------------*
*& Form f_doit
*&------------------------------------------*
FORM f_doit USING p_ref TYPEREFTOdata
p_option TYPE char02.
"········································
DATA: lv_ref TYPEREFTOdata,
lt_mara TYPESTANDARDTABLEOF mara.
"········································
FIELD-SYMBOLS: <lfs_tmara>TYPEANYTABLE.
ASSIGN p_ref->* TO<lfs_tmara>.
"········································
CASE p_option.
WHEN'7'.
REFRESH lt_mara.SELECT * INTOTABLE lt_mara FROM mara UPTO10ROWS.
GET REFERENCE OF lt_mara INTO lv_ref.
PERFORM f_doit USING lv_ref '99'.
WHEN'99'.
PERFORM f_show_alv USING p_ref.
WHENOTHERS.
ENDCASE.
"········································
" You may use the next sentence to get/modify the data: (*)
" assign component of + field-symbols (*)
ENDFORM. "f_doit
*&------------------------------------------*
*& Form f_show_alv
*&------------------------------------------*
FORM f_show_alv USING p_table_ref TYPEany.
DATA: lo_alv TYPEREFTO cl_salv_table.
FIELD-SYMBOLS: <lfs_table>TYPEANYTABLE.
ASSIGN p_table_ref->* TO<lfs_table>.
TRY.
CALLMETHOD cl_salv_table=>factory
IMPORTING
r_salv_table = lo_alv
CHANGING
t_table = <lfs_table>.
CATCH cx_salv_msg.
ENDTRY.
lo_alv->display().
ENDFORM. "f_show_alv
(*)
FIELD-SYMBOLS: <lfs_field>typeany,
<lfs_struct>typeany.
* assign ... to <lfs_struct>
ASSIGN COMPONENT 'MATNR'ofSTRUCTURE<lfs_struct>to<lfs_field>.
<lfs_field> = ...
Regards,
Luis