Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Extra push button on the ALV grid display output

Former Member
0 Kudos

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.

17 REPLIES 17

Former Member
0 Kudos

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.

0 Kudos

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

0 Kudos

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' .

0 Kudos

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.

0 Kudos

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.

0 Kudos

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

0 Kudos
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

Former Member
0 Kudos

Create your own PF status, attach to ur program and code the for pushbutton in User command form

Former Member
0 Kudos

Take a look at these threads

Regards,

Ravi

Note : Please mark the helpful answers

0 Kudos

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

Former Member
0 Kudos

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

former_member184569
Active Contributor
0 Kudos

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

rahulkavuri
Active Contributor
0 Kudos

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

Former Member
0 Kudos

Hi,

refer the demo program

BCALV_GRID_05

also refer:

rgds,

latheesh

Former Member
0 Kudos

Hi Mukesh,

This question has been asked a few times.. Just go through this link...

Hope your query gets solved.

Regards,

SP.

former_member188685
Active Contributor
0 Kudos

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

Former Member
0 Kudos

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