ALV - GRID添加自定义的按钮和响应命令

2020-05-05 14:56

(一)ALV_GRID添加自定义的按钮和响应命令 2009-04-29 10:37 我们在ALV的工具条上增加一些按钮来增加我们自定义的功能,当然也可以在GUI状态中增加,2种的处理方式是不一样的. 我们通过toolbar事件来增加按钮,然后通过user_command事件来实现我们自定义的功能. 在TOOLBAR事件里,我们把自定义的按钮加到参数\的表属性\中可以了.下面是一段示例代码: FORM handle_toolbar USING i_object TYPE REF TO cl_alv_event_toolbar_set. DATA: ls_toolbar TYPE stb_button. CLEAR ls_toolbar. MOVE 3 TO ls_toolbar-butn_type. APPEND ls_toolbar TO i_object->mt_toolbar. CLEAR ls_toolbar. MOVE 'PER' TO ls_toolbar-function. MOVE icon_display_text TO ls_toolbar-icon. MOVE 'Passenger Info'(201) TO ls_toolbar-quickinfo. MOVE 'Passenger Info'(201) TO ls_toolbar-text. MOVE ' ' TO ls_toolbar-disabled. APPEND ls_toolbar TO i_object->mt_toolbar. CLEAR ls_toolbar. MOVE 'EXCH' TO ls_toolbar-function. MOVE 2 TO ls_toolbar-butn_type. MOVE icon_calculation TO ls_toolbar-icon. MOVE 'Payment in other Curencies'(202) TO ls_toolbar-quickinfo. MOVE ' ' TO ls_toolbar-text. MOVE ' ' TO ls_toolbar-disapbled. APPEND ls_toolbar TO i_object->mt_toolbar. ENDFORM. 增加自定义按钮的结构如下: Field FUNCTION BUTN_TYPE Description 功能代码 按钮类型 可用的按钮类型: Button(normal) Menu and default button Menu 分割符 Radio button Checkbox Menu entry 按钮图标(可选) ICON TEXT QUICKINFO DISABLED 按钮文本(可选) 按钮的悬停文本(可选) 灰化 在上面的代码例子里,我们增加了一个常规的按钮和一个含有菜单的按钮.通过把按钮的类型设置为1或者2,我们可以增加一个含有菜单的按钮,在事件menu_button还可以实现子菜单:

FORM handle_menu_button USING i_object TYPE REF TO cl_ctmenu

I_ucomm TYPE syucomm..

CASE i_ucomm. WHEN ‘EXCH’.

CALL METHOD i_object->add_function EXPORTING

Fcode = ‘EU’ Text = ‘Euro’. CALL METHOD i_object->add_function EXPORTING

Fcode = ‘TRL’

Text = ‘Turkish Lira’. ENDCASE. ENDFORM.

为了实现这些自定义的按钮的功能,我们使用USER_COMMAND事件来处理. FORM handle_user_command USING i_ucomm TYPE syucomm. DATA lt_selected_rows TYPE lvc_t_rowid. DATA ls_selected_row TYPE lvc_s_roid. CALL METHOD gr_alvgrid->get_selected_rows IMPORTING

Et_row_no = lt_selected_rows.

READ TABLE lt_selected_rows INTO ls_selected_row INDEX 1. If sy-subrc ne 0.

MESSAGE S000(su) WITH 'Select a row'(203). ENDIF. CASE i_ucomm. WHEN 'CAR'.

READ TABLE gt_list INDEX ls_selected_row-row_id. IF sy-subrc = 0.

CALL FUNCTION 'ZDISPLAY_CARRIER_INFO' EXPORTING carrid = gt_list-carrid EXCEPTIONS carrier_not_found = 1 Oters = 2. ENDIF. WHEN 'EU'.

READ TABLE gt_list INDEX ls_selected_row-row_id.

IF sy-subrc = 0.

CALL FUNCTION 'ZPOPUP_CONV_CURR_ADD_DISPLAY' EXPORTING monun = 'EU'

Quant = gt_list-paymentsum. ENDIF. ENDCASE. ENDFORM.

我们通过方法get_selected_rows来获取选择的行.功能EXCH有2个子功能,所以我们不需要实现它.为了能显示ALV附加的一些功能,可以在ALV实例创建的时候调用set_toolbar_interactive方法.

CALL METHOD gr_alv_grid->set_toolbar_interactive.

(二)在alv_lst中加入按钮

Add Button to ALV Toolbar with REUSE_ALV_LIST_DISPLAY How to add button to ALV toolbar using REUSE_ALV_LIST_DISPLAY? In the program which calls ALV using REUSE_ALV_LIST_DISPLAY,

I have to add a new button.

I saw the demo program BCALV_GRID_08, which is written using ABAP-Controls. In that example, the button is added using TOOLBAR event of cl_gui_alv_grid.

Could you help me to implement the same logic using REUSE_ALV_LIST_DISPLAY parameters.

you should copy the 'STANDARD' GUI status from program SAPLKKBL using transaction SE90

-->Programming SubObjects--> Gui Status.

Execute this transaction to get to next screen. select status using checkbox. click on GUI Status -->

Copy.

Enter your Z program name and the name you what for this status - you can keep it as

'STANDARD' to be simple.

Then you can edit the new status to add or delete buttons. This will also bring in the standard SAP

ALV functionality such as sorting/subtotaling etc...

When you call 'REUSE_ALV_GRID_DISPLAY' make sure you pass it the new status name.

an example of one of mine:

call function 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = 'ZSDBOLST_REPORT' i_callback_pf_status_set = 'STANDARD' <--------- i_callback_user_command = 'USER_COMMAND'

i_structure_name = 'I_BOLACT' i_grid_title = 'BOL Action Report'(031)

is_layout = gs_layout it_fieldcat = gt_fieldcat[]

i_save = 'A' is_variant = v_variant

TABLES t_outtab = i_bolact EXCEPTIONS program_error = 1

others = 2.

I just tried the same procedure ,but my entire application toolbar disappeared and a lock icon

appears next to the application toolbar in my copied pf-status.

Could you advice what might have gone wrong ?

As identified with the FM's help you can do the following.

1). Using SE80 (I think) you can copy a GUI status from one program to another. It mentions which

one in the FM's help. 2). Create a form named like so:

Code:

*****************************************************************

* Form Set_pf_status

* Notes: Called by FM REUSE_ALV_GRID_DISPLAY ***************************************************************** FORM set_pf_status USING rt_extab TYPE slis_t_extab.

SET PF-STATUS 'ZSTANDARD'.

ENDFORM. \

In the above case the GUI status copied was named ZSTANDARD and adjusted accordingly, adding and removing the desired buttons. A button was added called 'TLETE'.

3). Create the following report:

Code:

*****************************************************************

* Form User_command

* Notes: Called by FM REUSE_ALV_GRID_DISPLAY

* Detects whether the icon/button for

* 'Return Tag Deletion' has been pressed. If it has then * detect whether any rows have been highlighted and then

* set the delete flag.

***************************************************************** FORM user_command USING r_ucomm LIKE sy-ucomm

rs_selfield TYPE slis_selfield.

DATA: li_count TYPE I. IF r_ucomm EQ 'TLETE'. LOOP AT %g00 WHERE mark EQ 'X'.

ADD 1 TO li_count.

ENDLOOP. IF li_count GT 0. gc_delete_flag = 'X'. r_ucomm = '&F03'. \

ELSE.

MESSAGE W000 WITH 'Please highlight the rows to be deleted!'.

ENDIF. ENDIF.

ENDFORM. \

As I've added an extra button to indicate which records should be deleted I need to identify a form

to be called to process when this button is chosen.

Then when you call the ALV function you to specify the following extra details:

Code:

call function 'REUSE_ALV_GRID_DISPLAY' exporting i_callback_program = gc_repid

I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS' I_CALLBACK_USER_COMMAND = 'USER_COMMAND'

i_grid_title = lc_grid_title is_layout = lc_layout it_fieldcat = gt_fieldcat

it_sort = sort i_save = l_save is_reprep_id = l_bbs_id is_variant = l_variant tables t_outtab = %g00 exceptions program_error = 1

others = 2.

The parameters in capitals are the extra ones that need to be added


ALV - GRID添加自定义的按钮和响应命令.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:田畈街镇中心学校安全工作预案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: