Hello Parag,
You have added a new button for download in the ALV display, right ?
Can you please tell me in which routine you have coded the action for that new ALV download button.
Refer to the below program for the same.
REPORT zbmm_zar4021.
*---------------------------------------------------------------------
* System Name : SAP R/3
* Category : MM
*---------------------------------------------------------------------
* Program Name : ZBMM_ZAR4021
*
* Outline : Deletion of Info records
*
* Transaction name : ZBMM_0462 - Deletion of Info records
*
*---------------------------------------------------------------------
* History :
* Date Developer Description
* 18.09.2013 Nikita Magoo P130186 - Deletion of Info records
*---------------------------------------------------------------------
* Type Pools
TYPE-POOLS: slis.
* Constant Declaration used as a flag
CONSTANTS: ct_gc_flag TYPE c VALUE'X'.
* Global tables
DATA: itab_gt_data TYPESTANDARDTABLEOF zbmm_s0324,
itab_gt_eina TYPESTANDARDTABLEOF eina,
itab_gt_eine TYPESTANDARDTABLEOF eine,
itab_gt_fieldcat TYPE slis_t_fieldcat_alv.
* Workarea
DATA: str_gs_eina TYPE eina,
str_gs_eine TYPE eine,
str_gs_layout TYPE slis_layout_alv.
*Selection screen
SELECTION-SCREENBEGINOFBLOCK b1 WITHFRAMETITLE text-001.
SELECT-OPTIONS: so_lifnr FOR str_gs_eina-lifnr NO INTERVALS,
so_matnr FOR str_gs_eina-matnr NO INTERVALS,
so_ekorg FOR str_gs_eine-ekorg NO INTERVALS,
so_werks FOR str_gs_eine-werks NO INTERVALS,
so_infnr FOR str_gs_eina-infnr NO INTERVALS,
so_erdat FOR str_gs_eina-erdat,
so_exprf FOR str_gs_eine-exprf NO INTERVALS,
so_inco1 FOR str_gs_eine-inco1 NO INTERVALS.
PARAMETERS: pa_poflg TYPE ILOEE,
pa_coflg TYPE ILOEA.
SELECTION-SCREENENDOFBLOCK b1.
INITIALIZATION.
*Create field catalog from dictionary structure or internal table
PERFORM fm_fieldcat_init.
START-OF-SELECTION.
* Check authorization on transaction
CALLFUNCTION'Z_ZBBC_AUTHORITY_TRANSACTION'
EXPORTING
i_tcode = 'ZBMM_0462'.
*Select data from tables
PERFORM fm_select_data.
END-OF-SELECTION.
IF itab_gt_data ISINITIAL.
* No data found for Selection Criteria
MESSAGE s999(zbmm_0001)WITH text-005.
ELSE.
* ALV Grid Display
PERFORM fm_alv_display.
ENDIF.
*&---------------------------------------------------------------------*
*& Form fm_fieldcat_init
*&---------------------------------------------------------------------*
* text: Used for defining the structure of the ALV
*----------------------------------------------------------------------*
FORM fm_fieldcat_init.
* Building field catalog
CALLFUNCTION'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_structure_name = 'ZBMM_S0324'
i_inclname = sy-repid
CHANGING
ct_fieldcat = itab_gt_fieldcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <>0.
MESSAGEID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. "fm_fieldcat_init
*&---------------------------------------------------------------------*
*& Form fm_select_data
*&---------------------------------------------------------------------*
* text: Used for filling respective data from itab_gt_eine and itab_gt_eina table into itab_gt_data table
*----------------------------------------------------------------------*
FORM fm_select_data.
* Workarea
DATA: str_ls_data TYPE zbmm_s0324,
str_ls_eina TYPE eina,
str_ls_eine TYPE eine.
* the data is selected from eine into itab_gt_eine.
SELECT *
FROM eine
INTOTABLE itab_gt_eine
WHERE infnr IN so_infnr
AND ekorg IN so_ekorg
AND werks IN so_werks
AND loekz EQ pa_poflg
AND exprf IN so_exprf
AND inco1 IN so_inco1.
IF itab_gt_eine ISNOTINITIAL.
* the data is selected from eina into itab_gt_eina on the basis of info record number in
* internal table of eine(itab_gt_eine) and respective vendor a/c number, material number
* and creation dates.
SELECT *
FROM eina
INTOTABLE itab_gt_eina
FORALLENTRIESIN itab_gt_eine
WHERE infnr = itab_gt_eine-infnr
AND lifnr IN so_lifnr
AND matnr IN so_matnr
AND loekz EQ pa_coflg
AND erdat IN so_erdat.
ENDIF.
* the data is stored into an internal table itab_gt_data from itab_gt_eina and itab_gt_eine.
LOOPAT itab_gt_eina INTO str_ls_eina.
READTABLE itab_gt_eine INTO str_ls_eine
WITHKEY infnr = str_ls_eina-infnr.
IF sy-subrc EQ0.
MOVE: str_ls_eina-matnr TO str_ls_data-matnr,
str_ls_eina-lifnr TO str_ls_data-lifnr,
str_ls_eina-erdat TO str_ls_data-erdat,
str_ls_eina-meins TO str_ls_data-meins,
str_ls_eina-ernam TO str_ls_data-ernam,
str_ls_eina-loekz TO str_ls_data-loekz_eina,
str_ls_eina-infnr TO str_ls_data-infnr,
str_ls_eine-ekorg TO str_ls_data-ekorg,
str_ls_eine-werks TO str_ls_data-werks,
str_ls_eine-esokz TO str_ls_data-esokz,
str_ls_eine-loekz TO str_ls_data-loekz_eine,
str_ls_eine-ekgrp TO str_ls_data-ekgrp,
str_ls_eine-waers TO str_ls_data-waers,
str_ls_eine-netpr TO str_ls_data-netpr,
str_ls_eine-peinh TO str_ls_data-peinh,
str_ls_eine-exprf TO str_ls_data-exprf,
str_ls_eine-inco1 TO str_ls_data-inco1.
APPEND str_ls_data TO itab_gt_data.
CLEAR str_ls_data.
ENDIF.
ENDLOOP.
ENDFORM. "fm_select_data
*&---------------------------------------------------------------------*
*& Form fm_alv_display
*&---------------------------------------------------------------------*
* text: For displaying ALV by using table itab_gt_data and adding two buttons for deleting complete info record
* or deleting purchase view info record from eina or eine table respectively.
*----------------------------------------------------------------------*
FORM fm_alv_display .
* Workarea
DATA:str_ls_variant TYPE disvariant."for parameter IS_VARIANT
str_ls_variant-report = sy-repid.
PERFORM fm_populate_layout.
CALLFUNCTION'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'FM_PFSTATUS'
i_callback_user_command = 'FM_USERCOMMAND'
* it_events = gt_events[]
is_layout = str_gs_layout
it_fieldcat = itab_gt_fieldcat[]
i_save = 'A'
is_variant = str_ls_variant
TABLES
t_outtab = itab_gt_data
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <>0.
MESSAGEID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. "fm_alv_display
*&---------------------------------------------------------------------*
*& Form FM_PFSTATUS
*&---------------------------------------------------------------------*
* text: For declaring two buttons in GUI status for deleting complete info record
* or deleting purchase view info record from eina or eine table respectively.
*----------------------------------------------------------------------*
FORM fm_pfstatus USING rt_extab TYPE slis_t_extab.
SETPF-STATUS'ZBMM_ZAR4021'.
ENDFORM. "FM_PFSTATUS
*&---------------------------------------------------------------------*
*& Form FM_USERCOMMAND
*&---------------------------------------------------------------------*
* text: Form to react according to the user action.
*----------------------------------------------------------------------*
* -->LV_OKCODE text: used to capture the function code
* of the user-defined push-buttons
* -->L_SELFIELD text: Holding the lines that are selected.
*----------------------------------------------------------------------*
FORM fm_usercommand USING c_lv_okcode TYPE sy-ucomm str_ls_selfield TYPE slis_selfield.
* Workarea
DATA: str_ls_data TYPE zbmm_s0324,
str_ls_eina TYPE eina,
str_ls_eine TYPE eine,
str_ls_reg_eina TYPE eina,
str_ls_eina_old TYPE eina,
str_ls_eine_old TYPE eine,
c_lv_count TYPE integer.
CASE c_lv_okcode.
* when the info record is double clicked,
* then the transaction me12(change info record) will be called for that record
WHEN'&IC1'.
IF str_ls_selfield-fieldname = 'MATNR'.
READTABLE itab_gt_data INTO str_ls_data INDEX str_ls_selfield-tabindex.
IF sy-subrc EQ0.
SETPARAMETERID'LIF'field str_ls_data-lifnr.
SETPARAMETERID'MAT'field str_ls_data-matnr.
SETPARAMETERID'EKO'field str_ls_data-ekorg.
SETPARAMETERID'WRK'field str_ls_data-werks.
SETPARAMETERID'INF'field str_ls_data-infnr.
CALLTRANSACTION'ME12'ANDSKIPFIRSTSCREEN.
ENDIF.
ENDIF.
* when the button "Deleting Complete Info Record" is selected,
* the flag is created in LOEKZ feild of eina table for the respective info record number.
WHEN'DCIR'.
LOOPAT itab_gt_data INTO str_ls_data
WHERE chk = ct_gc_flag.
IF str_ls_data-loekz_eina EQ'X'.
MESSAGE i610(ZBMM_0001)WITH str_ls_data-infnr.
CONTINUE.
ENDIF.
* Read inforecord from eina
READTABLE itab_gt_eina INTO str_ls_eina
WITHKEY infnr = str_ls_data-infnr.
IF sy-subrc EQ0.
* Read inforecord from eine
READTABLE itab_gt_eine INTO str_ls_eine
WITHKEY infnr = str_ls_data-infnr.
IF sy-subrc EQ0.
MOVE str_ls_eina TO str_ls_eina_old.
str_ls_eina-loekz = ct_gc_flag.
ENDIF.
* Update LOEKZ field in eina
CALLFUNCTION'ME_UPDATE_INFORECORD'INUPDATE TASK
EXPORTING
xeina = str_ls_eina
xeine = str_ls_eine
yeina = str_ls_eina_old
yeine = str_ls_eine
reg_eina = str_ls_reg_eina.
ENDIF.
* docu: post conditions (RV_CONDITION_SAVE)
CALLFUNCTION'RV_CONDITION_SAVE'.
CALLFUNCTION'RV_CONDITION_RESET'
EXPORTING
free_memory = 'X'.
* docu: general (EINA-texts, COMMIT_TEXT)
CALLFUNCTION'COMMIT_TEXT'
EXPORTING
object = 'EINA'.
COMMITWORK.
IF sy-subrc EQ0AND str_ls_data-loekz_eina NE'X'.
MESSAGE i608(ZBMM_0001)WITH str_ls_data-infnr.
ENDIF.
ENDLOOP.
* when the button "Deleting Complete Purchase View Record" is selected,
* the flag is created in LOEKZ feild of eine table for the respective info record number.
WHEN'DPVIR'.
LOOPAT itab_gt_data INTO str_ls_data
WHERE chk = ct_gc_flag.
IF str_ls_data-loekz_eine EQ'X'.
MESSAGE i612(ZBMM_0001)WITH str_ls_data-infnr.
CONTINUE.
ENDIF.
* Read inforecord from eina
READTABLE itab_gt_eina INTO str_ls_eina
WITHKEY infnr = str_ls_data-infnr.
IF sy-subrc EQ0.
* Read inforecord from eine
READTABLE itab_gt_eine INTO str_ls_eine
WITHKEY infnr = str_ls_data-infnr.
IF sy-subrc EQ0.
MOVE str_ls_eine TO str_ls_eine_old.
str_ls_eine-loekz = ct_gc_flag.
ENDIF.
* Update LOEKZ field in eine
CALLFUNCTION'ME_UPDATE_INFORECORD'INUPDATE TASK
EXPORTING
xeina = str_ls_eina
xeine = str_ls_eine
yeina = str_ls_eina
yeine = str_ls_eine_old
reg_eina = str_ls_reg_eina.
ENDIF.
* docu: post conditions (RV_CONDITION_SAVE)
CALLFUNCTION'RV_CONDITION_SAVE'.
CALLFUNCTION'RV_CONDITION_RESET'
EXPORTING
free_memory = 'X'.
* docu: purchasing organization (EINE-texts, COMMIT_TEXT)
CALLFUNCTION'COMMIT_TEXT'
EXPORTING
object = 'EINE'.
COMMITWORK.
IF sy-subrc EQ0AND str_ls_data-loekz_eina NE'X'.
MESSAGE i609(ZBMM_0001)WITH str_ls_eine-infnr.
ENDIF.
ENDLOOP.
ENDCASE.
ENDFORM. "FM_USERCOMMAND
*&---------------------------------------------------------------------*
*& Form FM_POPULATE_LAYOUT
*&---------------------------------------------------------------------*
* text: For adding checkboxes in ALV to select multiple data.
*----------------------------------------------------------------------*
FORM fm_populate_layout .
str_gs_layout-box_fieldname = 'CHK'.
str_gs_layout-box_tabname = 'ITAB_GT_DATA'.
ENDFORM. " FM_POPULATE_LAYOUT
Regards, Thanga