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: 

alv output with pushbuttons

Former Member
0 Kudos

Hi all ,

how can i get alv out put with two push buttons?

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

You can add push buttons in the application toolbar..

Go to SE41...

Press copy status..(Ctrl + F6)

Frm

Program SAPLKKBL

Status STANDARD

to

Program Y_TEST_PROGRAM "GIve your program.

Status TEST2

Press Copy..

Then go to change mode..And give function codes in the application tool bar..

Then check this program of how to display the new status..Marked in bold..

TYPE-POOLS: slis.

DATA: t_fieldcatalog TYPE slis_t_fieldcat_alv.

DATA: s_fieldcatalog TYPE slis_fieldcat_alv.

DATA: s_layout TYPE slis_layout_alv.

DATA: BEGIN OF itab OCCURS 0,

icon TYPE icon-id,

vbeln TYPE vbeln,

kunnr TYPE kunnr,

erdat TYPE erdat,

box TYPE c,

END OF itab.

DATA: v_repid TYPE syrepid.

START-OF-SELECTION.

  • Get the data.

SELECT vbeln kunnr erdat UP TO 100 ROWS

FROM vbak

INTO CORRESPONDING FIELDS OF TABLE itab.

IF sy-subrc <> 0.

MESSAGE s208(00) WITH 'No data found'.

LEAVE LIST-PROCESSING.

ENDIF.

  • Modify the record with red light.

itab-icon = '@0A@'.

MODIFY itab TRANSPORTING icon WHERE NOT vbeln IS initial.

v_repid = sy-repid.

  • Get the field catalog.

CLEAR: s_fieldcatalog.

s_fieldcatalog-col_pos = '1'.

s_fieldcatalog-fieldname = 'ICON'.

s_fieldcatalog-tabname = 'ITAB'.

s_fieldcatalog-seltext_l = 'Status'.

s_fieldcatalog-icon = 'X'.

APPEND s_fieldcatalog TO t_fieldcatalog.

CLEAR: s_fieldcatalog.

s_fieldcatalog-col_pos = '2'.

s_fieldcatalog-fieldname = 'VBELN'.

s_fieldcatalog-tabname = 'ITAB'.

s_fieldcatalog-rollname = 'VBELN'.

APPEND s_fieldcatalog TO t_fieldcatalog.

CLEAR: s_fieldcatalog.

s_fieldcatalog-col_pos = '3'.

s_fieldcatalog-fieldname = 'KUNNR'.

s_fieldcatalog-tabname = 'ITAB'.

s_fieldcatalog-rollname = 'KUNNR'.

APPEND s_fieldcatalog TO t_fieldcatalog.

CLEAR: s_fieldcatalog.

s_fieldcatalog-col_pos = '4'.

s_fieldcatalog-fieldname = 'ERDAT'.

s_fieldcatalog-tabname = 'ITAB'.

s_fieldcatalog-rollname = 'ERDAT'.

APPEND s_fieldcatalog TO t_fieldcatalog.

  • Set the layout.

s_layout-box_fieldname = 'BOX'.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = v_repid

is_layout = s_layout

<b> i_callback_pf_status_set = 'SET_PF_STATUS'</b>

i_callback_user_command = 'USER_COMMAND'

it_fieldcat = t_fieldcatalog[]

TABLES

t_outtab = itab.

----


  • FORM SET_PF_STATUS *

----


  • ........ *

----


  • --> EXTAB *

----


FORM set_pf_status USING extab TYPE slis_t_extab.

<b> SET PF-STATUS 'TEST2'.</b>

ENDFORM.

----


  • FORM user_command *

----


  • ........ *

----


  • --> UCOMM *

  • --> SELFIELD *

----


FORM user_command USING ucomm LIKE sy-ucomm

selfield TYPE slis_selfield.

  • Check the ucomm.

IF ucomm = 'DETAIL'.

LOOP AT itab WHERE box = 'X'.

itab-icon = '@08@'.

MODIFY itab TRANSPORTING icon.

ENDLOOP.

ENDIF.

selfield-refresh = 'X'.

ENDFORM.

Thanks,

Naren

5 REPLIES 5

Former Member
0 Kudos

HI,

Refer std program:

<b>BCALV_GRID_05

BCALV_GRID_08</b>

Suggest you to <b>Search in SDN with key - push button</b>Will get few more useful related Posts.

Reward points if this helps.

Manish

Former Member
0 Kudos

Hi,

You can add push buttons in the application toolbar..

Go to SE41...

Press copy status..(Ctrl + F6)

Frm

Program SAPLKKBL

Status STANDARD

to

Program Y_TEST_PROGRAM "GIve your program.

Status TEST2

Press Copy..

Then go to change mode..And give function codes in the application tool bar..

Then check this program of how to display the new status..Marked in bold..

TYPE-POOLS: slis.

DATA: t_fieldcatalog TYPE slis_t_fieldcat_alv.

DATA: s_fieldcatalog TYPE slis_fieldcat_alv.

DATA: s_layout TYPE slis_layout_alv.

DATA: BEGIN OF itab OCCURS 0,

icon TYPE icon-id,

vbeln TYPE vbeln,

kunnr TYPE kunnr,

erdat TYPE erdat,

box TYPE c,

END OF itab.

DATA: v_repid TYPE syrepid.

START-OF-SELECTION.

  • Get the data.

SELECT vbeln kunnr erdat UP TO 100 ROWS

FROM vbak

INTO CORRESPONDING FIELDS OF TABLE itab.

IF sy-subrc <> 0.

MESSAGE s208(00) WITH 'No data found'.

LEAVE LIST-PROCESSING.

ENDIF.

  • Modify the record with red light.

itab-icon = '@0A@'.

MODIFY itab TRANSPORTING icon WHERE NOT vbeln IS initial.

v_repid = sy-repid.

  • Get the field catalog.

CLEAR: s_fieldcatalog.

s_fieldcatalog-col_pos = '1'.

s_fieldcatalog-fieldname = 'ICON'.

s_fieldcatalog-tabname = 'ITAB'.

s_fieldcatalog-seltext_l = 'Status'.

s_fieldcatalog-icon = 'X'.

APPEND s_fieldcatalog TO t_fieldcatalog.

CLEAR: s_fieldcatalog.

s_fieldcatalog-col_pos = '2'.

s_fieldcatalog-fieldname = 'VBELN'.

s_fieldcatalog-tabname = 'ITAB'.

s_fieldcatalog-rollname = 'VBELN'.

APPEND s_fieldcatalog TO t_fieldcatalog.

CLEAR: s_fieldcatalog.

s_fieldcatalog-col_pos = '3'.

s_fieldcatalog-fieldname = 'KUNNR'.

s_fieldcatalog-tabname = 'ITAB'.

s_fieldcatalog-rollname = 'KUNNR'.

APPEND s_fieldcatalog TO t_fieldcatalog.

CLEAR: s_fieldcatalog.

s_fieldcatalog-col_pos = '4'.

s_fieldcatalog-fieldname = 'ERDAT'.

s_fieldcatalog-tabname = 'ITAB'.

s_fieldcatalog-rollname = 'ERDAT'.

APPEND s_fieldcatalog TO t_fieldcatalog.

  • Set the layout.

s_layout-box_fieldname = 'BOX'.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = v_repid

is_layout = s_layout

<b> i_callback_pf_status_set = 'SET_PF_STATUS'</b>

i_callback_user_command = 'USER_COMMAND'

it_fieldcat = t_fieldcatalog[]

TABLES

t_outtab = itab.

----


  • FORM SET_PF_STATUS *

----


  • ........ *

----


  • --> EXTAB *

----


FORM set_pf_status USING extab TYPE slis_t_extab.

<b> SET PF-STATUS 'TEST2'.</b>

ENDFORM.

----


  • FORM user_command *

----


  • ........ *

----


  • --> UCOMM *

  • --> SELFIELD *

----


FORM user_command USING ucomm LIKE sy-ucomm

selfield TYPE slis_selfield.

  • Check the ucomm.

IF ucomm = 'DETAIL'.

LOOP AT itab WHERE box = 'X'.

itab-icon = '@08@'.

MODIFY itab TRANSPORTING icon.

ENDLOOP.

ENDIF.

selfield-refresh = 'X'.

ENDFORM.

Thanks,

Naren

Former Member
0 Kudos

Hi,

Here is the sample code.If you are using reuse_alv_grid_display, no need to write code in PBO.

Just double click the 'TEST' which is written in code.Then create a GUI Status.In Application toolbar,type the name of the button you want(say BUTTON).Then double click that name.Then enter the ICON name and function text.Activate it.This itself will work.If you want all the functionalities,then try to do as Vinod told.

TYPE-POOLS: slis.

DATA: i_qmel LIKE qmel OCCURS 0.

data v_repid type repid.

SELECT * FROM qmel INTO TABLE i_qmel.

v_repid = sy-repid.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = v_repid

I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'

I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

i_structure_name = 'QMEL'

TABLES

t_outtab = i_qmel

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.

form set_pf_status using rt_extab type slis_t_extab.

set pf-status 'TEST'.

endform.

FORM user_command USING ucomm LIKE sy-ucomm

selfield TYPE slis_selfield.

data lv_ucomm type sy-ucomm.

lv_ucomm

= sy-ucomm.

CASE lv_ucomm.

WHEN 'BUTTON'. "Double Click line Item

call transaction 'MM01'.

endcase.

endform.

Regards,

Kumar

0 Kudos

Hi,

This is my code . Iam displaying output with multiple records . if i click on one record and press material pushbutton it should display that material details .How can i capture that matrial number?

REPORT ZMARC .

TABLES: marc.

TYPE-POOLS:slis.

DATA:BEGIN OF t_marc OCCURS 0,

icon TYPE icon-id,

matnr LIKE marc-matnr,

werks LIKE marc-werks,

pstat LIKE marc-pstat,

END OF t_marc.

DATA:t_makt LIKE makt OCCURS 0 WITH HEADER LINE.

DATA:t_tvkos LIKE tvkos OCCURS 0 WITH HEADER LINE.

DATA:fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,

fieldcat1 TYPE slis_t_fieldcat_alv WITH HEADER LINE,

s_layout TYPE slis_layout_alv,

g_repid LIKE sy-repid.

DATA:BEGIN OF t_alv OCCURS 0,

field1(50),

field2(50),

field3(50),

END OF t_alv.

g_repid = sy-repid.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

SELECT-OPTIONS:p_matnr FOR marc-matnr.

SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.

perform output.

Form output.

SELECT matnr werks pstat FROM marc INTO CORRESPONDING FIELDS OF TABLE

t_marc WHERE matnr IN p_matnr.

SORT t_marc BY matnr.

clear t_marc.

fieldcat-fieldname = 'MATNR'.

fieldcat-seltext_m = 'Material Number'.

fieldcat-col_pos = 0.

fieldcat-outputlen = 18.

fieldcat-hotspot = 'X'.

fieldcat-emphasize = 'x'.

fieldcat-key = 'x'.

append fieldcat to fieldcat.

clear fieldcat.

fieldcat-fieldname = 'WERKS'.

fieldcat-seltext_m = 'plant'.

fieldcat-col_pos = 0.

fieldcat-outputlen = 8.

fieldcat-emphasize = 'x'.

fieldcat-key = 'x'.

append fieldcat to fieldcat.

clear fieldcat.

fieldcat-fieldname = 'PSTAT'.

fieldcat-seltext_m = 'status'.

fieldcat-col_pos = 0.

fieldcat-outputlen = 8.

fieldcat-emphasize = 'x'.

fieldcat-key = 'x'.

append fieldcat to fieldcat.

clear fieldcat.

fieldcat1-fieldname = 'MATNR'.

fieldcat1-seltext_m = 'Material Number'.

fieldcat1-col_pos = 0.

fieldcat1-outputlen = 18.

fieldcat1-emphasize = 'x'.

fieldcat1-key = 'x'.

append fieldcat1 to fieldcat1.

clear fieldcat1.

fieldcat1-fieldname = 'SPRAS'.

fieldcat1-seltext_m = 'Lang'.

fieldcat1-col_pos = 0.

fieldcat1-outputlen = 8.

fieldcat1-emphasize = 'x'.

fieldcat1-key = 'x'.

append fieldcat1 to fieldcat1.

clear fieldcat1.

fieldcat1-fieldname = 'MAKTX'.

fieldcat1-seltext_m = 'Descrip'.

fieldcat1-col_pos = 0.

fieldcat1-outputlen = 40.

fieldcat1-emphasize = 'x'.

fieldcat1-key = 'x'.

append fieldcat1 to fieldcat1.

clear fieldcat1.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = g_repid

IT_FIELDCAT = fieldcat[]

I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'

I_CALLBACK_USER_COMMAND = 'DISPLAY_DETAIL'

I_SAVE = 'x'

TABLES

T_OUTTAB = t_marc

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

FORM set_pf_status USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'TEST'.

ENDFORM.

FORM display_detail USING ucomm LIKE sy-ucomm

selfield TYPE slis_selfield.

DATA:material like marc-matnr.

UCOMM = SY-UCOMM.

CASE UCOMM.

WHEN 'MATERIAL'.

READ TABLE t_marc index selfield.

move t_marc-matnr to material.

IF sy-subrc = 0.

SELECT * FROM makt INTO TABLE t_makt WHERE matnr = material.

t_alv[] = t_makt[].

endif.

ENDCASE.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = g_repid

it_fieldcat = fieldcat1[]

TABLES

t_outtab = t_alv.

*

*ENDIF.

*

*

ENDFORM.

END-OF-SELECTION.

Former Member
0 Kudos

Hi,

Changes are marked in bold.

FORM display_detail USING ucomm LIKE sy-ucomm

selfield TYPE slis_selfield.

DATA:material like marc-matnr.

UCOMM = SY-UCOMM.

CASE UCOMM.

WHEN 'MATERIAL'.

READ TABLE t_marc index selfield-<b>tabindex</b>.

move t_marc-matnr to material.

IF sy-subrc = 0.

SELECT * FROM makt INTO TABLE t_makt WHERE matnr = material.

t_alv[] = t_makt[].

endif.

ENDCASE.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

i_callback_program = g_repid

it_fieldcat = fieldcat1[]

TABLES

t_outtab = t_alv.

*

*ENDIF.

*

*

ENDFORM.

Thanks,

Naren