函数ALV按钮切换可编辑
时间: 2023-10-18 11:18:11 浏览: 102
您可以通过以下步骤来实现ALV按钮的切换可编辑:
1. 创建一个自定义的按钮,例如“编辑”按钮。
2. 在按钮的处理程序中,使用函数MODULE ALV_EDIT_TOGGLE调用ALV编辑切换的功能。
3. 在ALV_DISPLAY事件中,将需要切换可编辑状态的列设置为可编辑或不可编辑。
以下是一个简单的示例代码:
```
REPORT ztest_alv.
DATA: gt_data TYPE STANDARD TABLE OF spfli,
gs_data LIKE LINE OF gt_data.
* ALV显示事件处理程序
MODULE alv_display.
DATA: gr_alv TYPE REF TO cl_gui_alv_grid.
CREATE OBJECT gr_alv
EXPORTING
i_parent = cl_gui_container=>screen0.
CALL METHOD gr_alv->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_entered.
CALL METHOD gr_alv->set_table_for_first_display
EXPORTING
i_structure_name = 'SPFLI'
CHANGING
it_outtab = gt_data.
PERFORM set_editable_columns.
ENDMODULE.
* 编辑按钮事件处理程序
MODULE edit_button.
DATA: gr_alv TYPE REF TO cl_gui_alv_grid.
CREATE OBJECT gr_alv
EXPORTING
i_parent = cl_gui_container=>screen0.
CALL METHOD gr_alv->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_entered.
IF sy-ucomm = 'EDIT'.
CALL FUNCTION 'MODULE_ALV_EDIT_TOGGLE'
EXPORTING
i_grid = gr_alv.
PERFORM set_editable_columns.
ENDIF.
ENDMODULE.
* 设置可编辑列
FORM set_editable_columns.
DATA: gt_fieldcat TYPE lvc_t_fcat.
CALL METHOD gr_alv->get_frontend_fieldcatalog
RECEIVING
et_fieldcatalog = gt_fieldcat.
LOOP AT gt_fieldcat ASSIGNING FIELD-SYMBOL(<fs_fieldcat>).
IF <fs_fieldcat>-fieldname = 'CARRID' OR
<fs_fieldcat>-fieldname = 'CONNID'.
<fs_fieldcat>-edit = 'X'.
ELSE.
<fs_fieldcat>-edit = ''.
ENDIF.
ENDLOOP.
CALL METHOD gr_alv->set_frontend_fieldcatalog
EXPORTING
it_fieldcatalog = gt_fieldcat.
ENDFORM.
```
在上面的代码中,我们创建了一个名为“编辑”的按钮,并在它的处理程序中调用了MODULE_ALV_EDIT_TOGGLE函数来切换ALV的可编辑状态。在ALV_DISPLAY事件中,我们调用了set_editable_columns子例程来设置需要切换可编辑状态的列。
阅读全文