05-23-2006 10:57 AM
Hi,
I am using FM 'REUSE_ALV_GRID_DISPLAY' for output display in my program.Now i have to add one push button after 'export to local file' push button on the output display.How can i implement this.
05-23-2006 10:59 AM
Hi mukesh,
1. The important things are :
a) New PF-STATUS is required , say 'ABCD'.
b) Handle user_commmand
2. First of all, from Function group SALV,
copy the STANDARD gui status to your program,
from SE80, by right clicking.
3. come to your program.
start-of-selection.
SET PF-STATUS 'ABCD'.
4. Double click ABCD and activate the gui status.
5. In gui status,
add your button and give some fcode to it.
Save and activate.
6. AT USER-COMMAND.
IF sy-ucomm = 'MYFCODE'.
ENDIF.
This will solve your problem.
I tried at my end, it works fantastic.
regards,
amit m.
05-23-2006 11:56 AM
Hi amit,
I followed your steps copied the standard pf-status and added my own button and passed this pf-status to the reuse alv,the buttons already there like sort ascending,sort descending,export to local file got removed from there and my button is not getting displayed there.Are you sure that we can do these steps in FM REUSE_ALV_GRID_DISPLAY
05-23-2006 11:58 AM
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-cprog
i_callback_pf_status_set = 'PF_STATUS_SET'
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = lt_fieldcat
it_sort = lt_sort
it_event_exit = lt_event_exit
TABLES
t_outtab = gt_mara.
----
FORM PF_STATUS_SET *
----
FORM pf_status_set USING ut_extab TYPE slis_t_extab. "#EC CALLED
DELETE ut_extab WHERE fcode = gc_refresh.
SET PF-STATUS 'STATUS1' .
05-23-2006 11:58 AM
Hi again,
1. Very much sure , bcos
this is the best and simplest way.
2. Make sure you have
ACTIVATED your GUI- STATUS
after adding your own button.
3. At which point are u stuck up?
regards,
amit m.
05-23-2006 1:49 PM
Hi amit,
I am sending u the code just check it where i am doing wrong.The created status 'STATUS' is active.
REPORT zlqmr900
LINE-SIZE 132
LINE-COUNT 65
NO STANDARD PAGE HEADING
MESSAGE-ID zlqm.
TYPE-POOLS : slis,icon.
TABLES : mseg,qals,qave,qmsm,qmel.
SELECT-OPTIONS : s_matnr FOR qals-matnr,
s_werk FOR qals-werk,
s_art FOR qals-art,
s_vcdgrp FOR qave-vcodegrp,
s_vcode FOR qave-vcode,
s_vdatum FOR qave-vdatum.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
PARAMETERS: p_all RADIOBUTTON GROUP g2,
p_excp RADIOBUTTON GROUP g2.
SELECTION-SCREEN END OF BLOCK b2.
TYPES : BEGIN OF t_out,
icon TYPE icon-id, "TRAFFIC LIGHTS
matnr LIKE qals-matnr, "MATERIAL
werk LIKE qals-werk, "PLANT
vcode LIKE qave-vcode, "USAGE DECISION
mncod LIKE qmsm-mncod, "DISPOSITION
lmenge01 LIKE qals-lmenge01, "UNRESTRICTED QTY
lmenge02 LIKE qals-lmenge02, "SCRAP QTY
lmenge03 LIKE qals-lmenge03, "SAMPLE QTY
lmenge04 LIKE qals-lmenge04, "BLOCKED QTY
lmenge05 LIKE qals-lmenge05, "RETAIN QTY
lmenge06 LIKE qals-lmenge06, "OTHERMAT QTY
lmenge07 LIKE qals-lmenge07, "RTV QTY
lmenge08 LIKE qals-lmenge08, "EXP. SCRAP QTY
prueflos LIKE qals-prueflos, "INSPECTION LOT
art LIKE qals-art, "INSPECTION TYPE
qmnum LIKE qmel-qmnum, "NOTIFICATION
vdatum LIKE qave-vdatum, "DATE
charg LIKE qals-charg, "BATCH
END OF t_out.
TYPES : BEGIN OF t_qmsm,
mncod LIKE qmsm-mncod,
END OF t_qmsm.
DATA: i_qmsm TYPE STANDARD TABLE OF t_qmsm,
wa_qmsm TYPE t_qmsm,
i_out TYPE STANDARD TABLE OF t_out,
wa_out TYPE t_out,
i_out1 TYPE STANDARD TABLE OF t_out,
wa_out1 TYPE t_out,
i_out2 TYPE STANDARD TABLE OF t_out,
wa_out2 TYPE t_out.
DATA: i_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
i_layout TYPE slis_layout_alv,
gs_layout TYPE lvc_s_layo,
g_repid TYPE sy-repid,
ls_fieldcat TYPE slis_fieldcat_alv,
lt_event_exit TYPE slis_t_event_exit,
ls_event_exit TYPE slis_event_exit.
DATA : g_vcode LIKE qave-vcode,
gc_refresh TYPE syucomm VALUE '&REFRESH',
flag TYPE i VALUE '0'.
AT SELECTION-SCREEN.
IF s_matnr IS INITIAL.
MESSAGE e000(zlqm).
ENDIF.
START-OF-SELECTION.
SET PF-STATUS 'STATUS'.
SELECT amatnr awerk almenge01 almenge02 almenge03 almenge04 almenge05 almenge06 a~lmenge07
almenge08 aprueflos aart acharg bvcode bvdatum c~qmnum
INTO CORRESPONDING FIELDS OF TABLE i_out
FROM qals AS a INNER JOIN qave AS b
ON aprueflos = bprueflos
INNER JOIN qmel AS c
ON aprueflos = cprueflos
WHERE a~matnr IN s_matnr
AND a~werk IN s_werk
AND a~art IN s_art
AND a~stat33 = 'X'
AND b~vcodegrp IN s_vcdgrp
AND b~vcode IN s_vcode
AND b~vdatum IN s_vdatum.
i_out1 = i_out.
LOOP AT i_out INTO wa_out.
SELECT mncod
INTO CORRESPONDING FIELDS OF TABLE i_qmsm
FROM qmsm
WHERE qmnum = wa_out-qmnum.
LOOP AT i_qmsm INTO wa_qmsm.
wa_qmsm-mncod = wa_qmsm-mncod+0(2).
LOOP AT i_out1 INTO wa_out1.
MOVE-CORRESPONDING wa_qmsm TO wa_out1.
APPEND wa_out1 TO i_out1.
CLEAR wa_out1.
EXIT.
ENDLOOP.
ENDLOOP.
ENDLOOP.
g_repid = sy-repid.
CLEAR ls_fieldcat.
ls_fieldcat-tabname = 'I_OUT1'.
ls_fieldcat-fieldname = 'ICON'.
ls_fieldcat-seltext_l = 'STATUS'.
ls_fieldcat-outputlen = 15.
ls_fieldcat-icon = 'X'.
APPEND ls_fieldcat TO i_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-tabname = 'I_OUT1'.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-seltext_l = 'MATERIAL NUMBER'.
ls_fieldcat-outputlen = 15.
APPEND ls_fieldcat TO i_fieldcat.
i_layout-zebra = 'X'.
i_layout-colwidth_optimize = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_INTERFACE_CHECK = ' '
I_BYPASSING_BUFFER = ' '
I_BUFFER_ACTIVE = ' '
i_callback_program = 'g_repid'
i_callback_pf_status_set = 'STATUS'
i_callback_user_command = 'USER_COMMAND'
I_CALLBACK_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_TOP_OF_PAGE = ' '
I_CALLBACK_HTML_END_OF_LIST = ' '
I_STRUCTURE_NAME =
I_BACKGROUND_ID = ' '
I_GRID_TITLE =
I_GRID_SETTINGS =
is_layout = i_layout
it_fieldcat = i_fieldcat[]
IT_EXCLUDING =
IT_SPECIAL_GROUPS =
IT_SORT =
IT_FILTER =
IS_SEL_HIDE =
I_DEFAULT = 'X'
I_SAVE = ' '
IS_VARIANT =
IT_EVENTS =
it_event_exit = lt_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
I_HTML_HEIGHT_TOP = 0
I_HTML_HEIGHT_END = 0
IT_ALV_GRAPHICS =
IT_HYPERLINK =
IT_ADD_FIELDCAT =
IT_EXCEPT_QINFO =
IR_SALV_FULLSCREEN_ADAPTER =
IMPORTING
E_EXIT_CAUSED_BY_CALLER =
ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = i_out2
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.
05-23-2006 1:57 PM
Hi...
your code will not work..., this is not normal report.
REPORT zlqmr900
LINE-SIZE 132
LINE-COUNT 65
NO STANDARD PAGE HEADING
MESSAGE-ID zlqm.
TYPE-POOLS : slis,icon.
TABLES : mseg,qals,qave,qmsm,qmel.
SELECT-OPTIONS : s_matnr FOR qals-matnr,
s_werk FOR qals-werk,
s_art FOR qals-art,
s_vcdgrp FOR qave-vcodegrp,
s_vcode FOR qave-vcode,
s_vdatum FOR qave-vdatum.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
PARAMETERS: p_all RADIOBUTTON GROUP g2,
p_excp RADIOBUTTON GROUP g2.
SELECTION-SCREEN END OF BLOCK b2.
TYPES : BEGIN OF t_out,
icon TYPE icon-id, "TRAFFIC LIGHTS
matnr LIKE qals-matnr, "MATERIAL
werk LIKE qals-werk, "PLANT
vcode LIKE qave-vcode, "USAGE DECISION
mncod LIKE qmsm-mncod, "DISPOSITION
lmenge01 LIKE qals-lmenge01, "UNRESTRICTED QTY
lmenge02 LIKE qals-lmenge02, "SCRAP QTY
lmenge03 LIKE qals-lmenge03, "SAMPLE QTY
lmenge04 LIKE qals-lmenge04, "BLOCKED QTY
lmenge05 LIKE qals-lmenge05, "RETAIN QTY
lmenge06 LIKE qals-lmenge06, "OTHERMAT QTY
lmenge07 LIKE qals-lmenge07, "RTV QTY
lmenge08 LIKE qals-lmenge08, "EXP. SCRAP QTY
prueflos LIKE qals-prueflos, "INSPECTION LOT
art LIKE qals-art, "INSPECTION TYPE
qmnum LIKE qmel-qmnum, "NOTIFICATION
vdatum LIKE qave-vdatum, "DATE
charg LIKE qals-charg, "BATCH
END OF t_out.
TYPES : BEGIN OF t_qmsm,
mncod LIKE qmsm-mncod,
END OF t_qmsm.
DATA: i_qmsm TYPE STANDARD TABLE OF t_qmsm,
wa_qmsm TYPE t_qmsm,
i_out TYPE STANDARD TABLE OF t_out,
wa_out TYPE t_out,
i_out1 TYPE STANDARD TABLE OF t_out,
wa_out1 TYPE t_out,
i_out2 TYPE STANDARD TABLE OF t_out,
wa_out2 TYPE t_out.
DATA: i_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,
i_layout TYPE slis_layout_alv,
gs_layout TYPE lvc_s_layo,
g_repid TYPE sy-repid,
ls_fieldcat TYPE slis_fieldcat_alv,
lt_event_exit TYPE slis_t_event_exit,
ls_event_exit TYPE slis_event_exit.
DATA : g_vcode LIKE qave-vcode,
gc_refresh TYPE syucomm VALUE '&REFRESH',
flag TYPE i VALUE '0'.
AT SELECTION-SCREEN.
IF s_matnr IS INITIAL.
MESSAGE e000(zlqm).
ENDIF.
START-OF-SELECTION.
<b>*SET PF-STATUS 'STATUS'.</b> "wrong..
SELECT a~matnr a~werk a~lmenge01 a~lmenge02 a~lmenge03 a~lmenge04 a~lmenge05 a~lmenge06 a~lmenge07
a~lmenge08 a~prueflos a~art a~charg b~vcode b~vdatum c~qmnum
INTO CORRESPONDING FIELDS OF TABLE i_out
FROM qals AS a INNER JOIN qave AS b
ON a~prueflos = b~prueflos
INNER JOIN qmel AS c
ON a~prueflos = c~prueflos
WHERE a~matnr IN s_matnr
AND a~werk IN s_werk
AND a~art IN s_art
* AND a~stat33 = 'X'
AND b~vcodegrp IN s_vcdgrp
AND b~vcode IN s_vcode
AND b~vdatum IN s_vdatum.
i_out1 = i_out.
LOOP AT i_out INTO wa_out.
SELECT mncod
INTO CORRESPONDING FIELDS OF TABLE i_qmsm
FROM qmsm
WHERE qmnum = wa_out-qmnum.
LOOP AT i_qmsm INTO wa_qmsm.
wa_qmsm-mncod = wa_qmsm-mncod+0(2).
LOOP AT i_out1 INTO wa_out1.
MOVE-CORRESPONDING wa_qmsm TO wa_out1.
APPEND wa_out1 TO i_out1.
CLEAR wa_out1.
EXIT.
ENDLOOP.
ENDLOOP.
ENDLOOP.
g_repid = sy-repid.
CLEAR ls_fieldcat.
ls_fieldcat-tabname = 'I_OUT1'.
ls_fieldcat-fieldname = 'ICON'.
ls_fieldcat-seltext_l = 'STATUS'.
ls_fieldcat-outputlen = 15.
ls_fieldcat-icon = 'X'.
APPEND ls_fieldcat TO i_fieldcat.
CLEAR ls_fieldcat.
ls_fieldcat-tabname = 'I_OUT1'.
ls_fieldcat-fieldname = 'MATNR'.
ls_fieldcat-seltext_l = 'MATERIAL NUMBER'.
ls_fieldcat-outputlen = 15.
APPEND ls_fieldcat TO i_fieldcat.
i_layout-zebra = 'X'.
i_layout-colwidth_optimize = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
<b>i_callback_program = g_repid</b>
i_callback_pf_status_set = 'STATUS'
* i_callback_user_command = 'USER_COMMAND'
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
is_layout = i_layout
it_fieldcat = i_fieldcat[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
* IT_EVENTS =
* it_event_exit = lt_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
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = i_out2
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.
<b>FORM STATUS USING P_EXTAB TYPE SLIS_T_EXTAB.
*- Pf status
SET PF-STATUS 'STATUS' excluding p_extab.
ENDFORM. " STATUS</b>
Observe the Bold code.
Regards
vijay
05-23-2006 2:00 PM
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER = ' '
* I_BUFFER_ACTIVE = ' '
i_callback_program = 'g_repid'
i_callback_pf_status_set = 'STATUS'
<b> i_callback_user_command = 'USER_COMMAND'</b>
* I_CALLBACK_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_TOP_OF_PAGE = ' '
* I_CALLBACK_HTML_END_OF_LIST = ' '
* I_STRUCTURE_NAME =
* I_BACKGROUND_ID = ' '
* I_GRID_TITLE =
* I_GRID_SETTINGS =
is_layout = i_layout
it_fieldcat = i_fieldcat[]
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
* I_SAVE = ' '
* IS_VARIANT =
* IT_EVENTS =
* it_event_exit = lt_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
* I_HTML_HEIGHT_TOP = 0
* I_HTML_HEIGHT_END = 0
* IT_ALV_GRAPHICS =
* IT_HYPERLINK =
* IT_ADD_FIELDCAT =
* IT_EXCEPT_QINFO =
* IR_SALV_FULLSCREEN_ADAPTER =
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = i_out2
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.
<b>FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
case r_ucomm.
when 'BACK' or 'CANC' or 'EXIT'.
leave to screen 0.
when '&IC1'.
if rs_selfield-fieldname = 'VBELN'.
* message i000 with 'clicked on row' rs_Selfield-tabindex.
set parameter id 'AUN' field rs_selfield-value.
call transaction 'VA03' and skip first screen.
endif.
endcase.
ENDFORM. "USER_COMMAND</b>
also you should have user_command to hadle the Button.
Regards
vijay
05-23-2006 11:00 AM
Create your own PF status, attach to ur program and code the for pushbutton in User command form
05-23-2006 11:00 AM
05-23-2006 11:01 AM
Take a look at these two programs, depending on whether you want to use REUSE function or ALV control.
BCALV_TEST_FULLSCREEN_EVENTS
BCALV_TEST_GRID_EVENTS
You can define you own pf-status for displaying button on the application toolbar.
also make entry in fm.
I_CALLBACK_PF_STATUS_SET = 'STATUS'
I am not sure, about Putting button
05-23-2006 11:02 AM
hi,
Create a GUI STATUS (PF-STATUS)
Register the event for the same in your ALV and on that status, you can add your push button, assign it to a command and you can use it then (You need to register the user_command event as well)
Hope this helps.
regards,
satya
05-23-2006 11:03 AM
Hi Mukesh,
In the PBO of the screen,
add the command
SET PF-STATUS 'STATUS'.
Double click on 'STATUS'.
Create your button in Application Tool Bar.
This button will not appear along with other icons, it will appear on the top of grid.
In the PAI of the screen,
put an case - encase statement
ok_code like sy-ucomm.
case ok_code
when 'Function code declared for button in CAPS'
action
endcase.
Regards,
Susmitha
05-23-2006 11:04 AM
hi
Create ur own push button using PF-STATUS...
Check these 2 links
http://www.sapfans.com/forums/viewtopic.php?t=94198
See this pgm too..
BCALV_TEST_GRID_EVENTS
05-23-2006 11:21 AM
05-23-2006 11:24 AM
05-23-2006 11:31 AM
Hi,
Go to SE41 give the Program name SAPLKKBL
and status as STANDARD
now click Copy status (CTRL+F6), now give your Program name , and PF-status and copy it. now save it and activate the pf-satus which you have copied.and add your own button to it. and use it in your PF-status form.
pass that status using the parameter call back status option.
FORM PFSTAT USING P_EXTAB TYPE SLIS_T_EXTAB.
*- Pf status
SET PF-STATUS 'PFSTAT'. "this is we copied
"it is having all you want
ENDFORM.
Regards
vijay
05-23-2006 12:01 PM
Hai Mukesh
go through the following Code
SELECTION-SCREEN : BEGIN OF LINE,COMMENT 10(20) v_1 FOR FIELD p_max.
PARAMETERS p_max(2) TYPE n DEFAULT '25' OBLIGATORY.
SELECTION-SCREEN END OF LINE.
TYPE-POOLS: slis. " ALV Global types
CONSTANTS :
gc_refresh TYPE syucomm VALUE '&REFRESH'.
DATA:
BEGIN OF gt_mara OCCURS 0,
matnr LIKE mara-matnr, " Material number
ernam LIKE mara-ernam, " Name of Person who Created
ersda LIKE mara-ersda, " Creation date
brgew LIKE mara-brgew, " Gross weight
END OF gt_mara.
----
INITIALIZATION.
v_1 = 'Lines per page'.
----
START-OF-SELECTION.
PERFORM f_read_data.
PERFORM f_display_data.
----
Form f_read_data
----
FORM f_read_data.
STATICS l_mara TYPE matnr. " Last Material number
DATA lt_mara LIKE gt_mara OCCURS 0 WITH HEADER LINE.
Read next 25 records
SELECT mandt matnr ernam ersda brgew
INTO CORRESPONDING FIELDS OF TABLE lt_mara
FROM mara
UP TO p_max ROWS
WHERE matnr GT l_mara
ORDER BY PRIMARY KEY. "#EC PORTABLE
IF sy-subrc EQ 0.
MESSAGE s208(00) WITH 'Reading data ...'.
DESCRIBE TABLE gt_mara.
READ TABLE lt_mara INDEX sy-tfill.
Save last Material number
l_mara = lt_mara-matnr.
gt_mara[] = lt_mara[].
ELSE.
MESSAGE i208(00) WITH 'Nothing to read ... '.
ENDIF.
ENDFORM. " F_READ_DATA
----
Form f_display_data
----
FORM f_display_data.
Macro definition
DEFINE m_fieldcat.
add 1 to ls_fieldcat-col_pos.
ls_fieldcat-fieldname = &1.
ls_fieldcat-ref_tabname = 'MARA'.
append ls_fieldcat to lt_fieldcat.
END-OF-DEFINITION.
DEFINE m_sort.
add 1 to ls_sort-spos.
ls_sort-fieldname = &1.
ls_sort-up = 'X'.
append ls_sort to lt_sort.
END-OF-DEFINITION.
DATA :
ls_fieldcat TYPE slis_fieldcat_alv,
lt_fieldcat TYPE slis_t_fieldcat_alv,
lt_sort TYPE slis_t_sortinfo_alv,
ls_sort TYPE slis_sortinfo_alv,
lt_event_exit TYPE slis_t_event_exit,
ls_event_exit TYPE slis_event_exit.
Build Sort table
m_sort 'MATNR'.
Build Field Catalog
m_fieldcat 'MATNR'.
m_fieldcat 'ERNAM'.
m_fieldcat 'ERSDA'.
m_fieldcat 'BRGEW'.
CLEAR ls_event_exit.
ls_event_exit-ucomm = gc_refresh. " Refresh
ls_event_exit-after = 'X'.
APPEND ls_event_exit TO lt_event_exit.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-cprog
i_callback_pf_status_set = 'PF_STATUS_SET'
i_callback_user_command = 'USER_COMMAND'
it_fieldcat = lt_fieldcat
it_sort = lt_sort
it_event_exit = lt_event_exit
TABLES
t_outtab = gt_mara.
ENDFORM. " F_DISPLAY_DATA
----
FORM USER_COMMAND *
----
FORM user_command USING u_ucomm LIKE sy-ucomm
us_selfield TYPE slis_selfield. "#EC CALLED
CASE u_ucomm.
WHEN gc_refresh.
PERFORM f_read_data. " Refresh data
us_selfield-refresh = 'X'.
us_selfield-col_stable = 'X' .
us_selfield-row_stable = 'X' .
ENDCASE.
ENDFORM. " USER_COMMAND
----
FORM PF_STATUS_SET *
----
FORM pf_status_set USING ut_extab TYPE slis_t_extab. "#EC CALLED
DELETE ut_extab WHERE fcode = gc_refresh.
SET PF-STATUS 'STANDARD_FULLSCREEN' OF PROGRAM 'SAPLKKBL'
EXCLUDING ut_extab.
ENDFORM. " PF_STATUS_SET
END OF PROGRAM Z_DEMO_ALV_REFRESH_BUTTON_3 *******************
Thanks & regards
Sreenivasulu P