12-20-2006 5:32 PM
12-20-2006 5:36 PM
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
12-20-2006 5:34 PM
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
12-20-2006 5:36 PM
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
12-20-2006 5:39 PM
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
12-20-2006 9:37 PM
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.
12-20-2006 9:50 PM
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