b站视频的源码,自己一个字母一个字母敲的,数据库表照着视频建,没有表拿着代码进去运行也没用。
REPORT ZTS_XSY_TEST23.
INCLUDE ZTS_XSY_TEST23TOP.
INCLUDE ZTS_XSY_TEST23CLS.
INCLUDE ZTS_XSY_TEST23O01.
INCLUDE ZTS_XSY_TEST23I01.
INCLUDE ZTS_XSY_TEST23FORM.
START-OF-SELECTION.
PERFORM GET_DATA.
END-OF-SELECTION.
IF GT_STUDENT IS NOT INITIAL.
CALL SCREEN 0100.
* PERFORM DISPLAY_DATA.
ELSE.
MESSAGE S001(EU) DISPLAY LIKE 'E'.
ENDIF.
*&---------------------------------------------------------------------*
*& 包含 ZTS_XSY_TEST23TOP
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& 包含 ZTS_XSY_TEST16TOP
*&---------------------------------------------------------------------*
TYPES: BEGIN OF gty_student,
box TYPE c LENGTH 1.
INCLUDE STRUCTURE zbc_xsy_student.
TYPES: field_color TYPE lvc_t_scol,
field_modify TYPE lvc_t_styl, "设置为是否可编辑
END OF gty_student.
DATA gt_student TYPE TABLE OF gty_student.
DATA gs_student TYPE gty_student.
DATA gt_download TYPE TABLE OF zbc_xsy_student.
DATA gs_download TYPE zbc_xsy_student.
*DATA gt_fieldname TYPE TABLE OF char20.
DATA: BEGIN OF GT_FIELDNAME OCCURS 0,
FIELDNAME TYPE C LENGTH 20,
END OF GT_FIELDNAME.
*OO ALV DISPLAY
*DATA gs_alv TYPE REF TO cl_gui_alv_grid. "ALV对象
*DATA gs_parent TYPE REF TO cl_gui_custom_container.
*DATA gt_fieldcat TYPE lvc_t_fcat. "列结构
*DATA gs_fieldcat TYPE lvc_s_fcat. "列结构-工作区
*
*DATA gs_layout TYPE lvc_s_layo."表单格式
*DATA gs_stable TYPE lvc_s_stbl."固定
DATA gt_exclude TYPE ui_functions . "隐藏的按钮
DATA gs_exclude TYPE ui_func. "隐藏的按钮-工作区
DATA gt_rows TYPE lvc_t_row. "获取选中的行
DATA gs_rows TYPE lvc_s_row. "获取选中的行-工作区
DATA ok_code TYPE sy-ucomm.
DATA save_ok TYPE sy-ucomm.
DATA gs_variant TYPE disvariant.
*事件相关
CLASS lcl_app_compt DEFINITION DEFERRED.
DATA event_handler TYPE REF TO lcl_app_compt.
DATA: gs_alv TYPE REF TO cl_gui_alv_grid, "ALV类
gs_con TYPE REF TO cl_gui_custom_container, "容器类
gt_fieldcat TYPE lvc_t_fcat, "列格式
gs_fieldcat TYPE lvc_s_fcat, "列格式-结构
gs_stable TYPE lvc_s_stbl, "光标不动
gs_layout TYPE lvc_s_layo. "输出格式
*定义宏
DATA gv_pos TYPE i.
DEFINE %%add_fieldcat.
CLEAR GS_FIELDCAT.
GV_POS = GV_POS + 1.
GS_FIELDCAT-COL_POS = GV_POS.
GS_FIELDCAT-FIELDNAME = &1.
GS_FIELDCAT-SCRTEXT_M = &2.
GS_FIELDCAT-OUTPUTLEN = &3.
CASE &1.
WHEN 'WEIGH'.
GS_FIELDCAT-QFIELDNAME = 'ZUNIT'.
GS_FIELDCAT-EDIT = 'X'. "以列为单位
GS_FIELDCAT-DECIMALS = 2.
WHEN 'SEX'.
GS_FIELDCAT-EDIT = 'X'.
WHEN 'ZCODE'.
GS_FIELDCAT-HOTSPOT = 'X'."热点
ENDCASE.
APPEND GS_FIELDCAT TO GT_FIELDCAT.
END-OF-DEFINITION.
SELECT-OPTIONS s_zcode FOR gs_student-zcode.
*&---------------------------------------------------------------------*
*& 包含 ZTS_XSY_TEST23CLS
*&---------------------------------------------------------------------*
CLASS lcl_app_compt DEFINITION.
PUBLIC SECTION.
METHODS handle_toolbar FOR EVENT toolbar
OF cl_gui_alv_grid
IMPORTING e_object.
METHODS handle_user_command FOR EVENT user_command
OF cl_gui_alv_grid
IMPORTING e_ucomm.
* HOTSPOT
METHODS handle_hotspot_click
FOR EVENT hotspot_click OF cl_gui_alv_grid
IMPORTING e_row_id
e_column_id.
* 双击
METHODS handle_double_click FOR EVENT double_click
OF cl_gui_alv_grid
IMPORTING e_row
e_column.
METHODS handle_data_changed FOR EVENT data_changed
OF cl_gui_alv_grid
IMPORTING er_data_changed.
* E_ONF4
* E_ONF4_BEFORE
* E_ONF4_AFTER
* E_UCOMM.
ENDCLASS.
*&--------------------------------------------------------------------
*& CLASS LCL_APP_COMPT IMPLEMENTATION
*&---------------------------------------------------------------------*
CLASS lcl_app_compt IMPLEMENTATION.
METHOD handle_toolbar.
PERFORM fm_handle_toolbar USING e_object.
ENDMETHOD.
* HANDLE USER COMMAND
METHOD handle_user_command.
PERFORM fm_user_command USING e_ucomm.
ENDMETHOD.
* HOTSPOT
METHOD handle_hotspot_click.
PERFORM hotspot_click USING e_row_id e_column_id.
ENDMETHOD.
METHOD handle_double_click.
PERFORM fm_double_click USING e_row e_column.
ENDMETHOD.
* METHOD DATA CHANGED
METHOD handle_data_changed.
PERFORM fm_data_changed USING er_data_changed->mt_mod_cells.
ENDMETHOD.
ENDCLASS.
*&---------------------------------------------------------------------*
*& 包含 ZTS_XSY_TEST23O01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module INIT_ALV OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE init_alv OUTPUT.
IF gs_alv IS INITIAL.
PERFORM create_alv.
PERFORM build_fieldcat.
PERFORM build_layout.
PERFORM build_exclude.
PERFORM set_handler.
PERFORM build_alv.
ELSE.
PERFORM refresh_alv.
ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
SET PF-STATUS '0100'.
SET TITLEBAR '0100'.
ENDMODULE.
*&---------------------------------------------------------------------*
*& 包含 ZTS_XSY_TEST23I01
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module EXIT INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE exit INPUT.
LEAVE PROGRAM.
ENDMODULE.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
* SAVE_OK = OK_CODE.
* CLEAR SAVE_OK.
CASE ok_code.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT' OR 'CANCEL'.
LEAVE PROGRAM.
WHEN 'DOWNLOAD'.
PERFORM download_file.
WHEN 'SAVE'.
CALL METHOD gs_alv->check_changed_data
* IMPORTING
* e_valid =
* CHANGING
* c_refresh = 'X'
.
REFRESH gt_download.
LOOP AT gt_student INTO gs_student.
CLEAR gs_download.
MOVE-CORRESPONDING gs_student TO gs_download.
APPEND gs_download TO gt_download.
ENDLOOP.
MODIFY ZBC_XSY_STUDENT FROM TABLE GT_DOWNLOAD.
IF SY-SUBRC = 0.
COMMIT WORK.
MESSAGE S001(EU) WITH '修改成功!'.
ELSE.
ROLLBACK WORK.
MESSAGE S002(EU) WITH '修改失败!' DISPLAY LIKE 'E'.
ENDIF.
ENDCASE.
ENDMODULE.
*&---------------------------------------------------------------------*
*& 包含 ZTS_XSY_TEST23FORM
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data .
DATA ls_scol LIKE LINE OF gs_student-field_color.
DATA ls_styl TYPE lvc_s_styl.
* DATA ls_styl TYPE gs_student-field_modify.
SELECT *
FROM zbc_xsy_student
INTO CORRESPONDING FIELDS OF TABLE gt_student
WHERE zcode IN s_zcode.
LOOP AT gt_student INTO gs_student.
* 单元格颜色
IF gs_student-sex IS INITIAL.
ls_scol-fname = 'SEX'.
ls_scol-color-col = '3'.
APPEND ls_scol TO gs_student-field_color.
ENDIF.
** 单元格可修改设置
IF gs_student-sex IS NOT INITIAL.
ls_styl-fieldname = 'SEX'.
* LS_STYL-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_ENABLED.
ls_styl-style = cl_gui_alv_grid=>mc_style_disabled.
APPEND ls_styl TO gs_student-field_modify.
ENDIF.
* 体重字段都不可修改
ls_styl-fieldname = 'WEIGH'.
ls_styl-style = cl_gui_alv_grid=>mc_style_disabled.
APPEND ls_styl TO gs_student-field_modify.
MODIFY gt_student FROM gs_student.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM display_data .
* PERFORM BUILD_FIELDCAT.
* PERFORM BUILD_ALV.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_fieldcat .
CLEAR gt_fieldcat[].
%%add_fieldcat:
'ZCODE' '学生编号' '10' ,
'ZNAME' '学生姓名' '20' ,
'SEX' '性别' '5' ,
'ZSCHOOL' '学校' '10' ,
'WEIGH' '体重' '10' ,
'ZUNIT' '单位' '5' .
* PERFORM ADD_FIELDCAT_ALV USING : '' '' '' '',
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BUILD_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_alv .
gs_variant-report = sy-repid.
**GS_PARENT的实例化-实例化容器
* CREATE OBJECT gs_parent
* EXPORTING
* container_name = 'GC_COM'. "界面中的CUSTOMER CONTROL控件名称
*
**实例化
* CREATE OBJECT gs_alv
* EXPORTING
* i_parent = gs_parent.
*调用方法输出
CALL METHOD gs_alv->set_table_for_first_display
EXPORTING
* i_buffer_active =
* i_bypassing_buffer =
* i_consistency_check =
* i_structure_name =
is_variant = gs_variant
i_save = 'A'
* i_default = 'X'
is_layout = gs_layout
* is_print =
* it_special_groups =
it_toolbar_excluding = gt_exclude
* it_hyperlink =
* it_alv_graphics =
* it_except_qinfo =
* ir_salv_adapter =
CHANGING
it_outtab = gt_student
it_fieldcatalog = gt_fieldcat
* it_sort =
* it_filter =
EXCEPTIONS
invalid_parameter_combination = 1
program_error = 2
too_many_lines = 3
OTHERS = 4.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CREATE_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_alv .
*创建容器
CREATE OBJECT gs_con
EXPORTING
container_name = 'GC_CON'.
*将ALV植入容器中
CREATE OBJECT gs_alv
EXPORTING
i_parent = gs_con.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_layout .
gs_layout-col_opt = 'X'.
gs_layout-zebra = 'X'.
gs_layout-box_fname = 'BOX'.
gs_layout-ctab_fname = 'FIELD_COLOR'.
* gs_layout-ctab_fname = 'COLOR'.
gs_layout-stylefname = 'FIELD_MODIFY'."以单元格为单位
* gs_layout-stylefname = 'CELLSTL'."单元格编辑
* gs_layout-sel_mode = 'A'. "选择模式
* gs_layout-info_fname = 'COLOR'."单元格颜色
* gs_layout-edit = 'X'. "可编辑
ENDFORM.
FORM refresh_alv.
gs_stable-row = 'X'.
gs_stable-col = 'X'.
CALL METHOD gs_alv->refresh_table_display
EXPORTING
is_stable = gs_stable
* i_soft_refresh =
EXCEPTIONS
finished = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form BUILD_EXCLUDE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM build_exclude.
*隐藏按钮
CLEAR gt_exclude[].
* GS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW.
* APPEND GS_EXCLUDE TO GT_EXCLUDE.
* GS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW.
* APPEND GS_EXCLUDE TO GT_EXCLUDE.
* GS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW.
* APPEND GS_EXCLUDE TO GT_EXCLUDE.
* GS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW.
* APPEND GS_EXCLUDE TO GT_EXCLUDE.
* GS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_CUT.
* APPEND GS_EXCLUDE TO GT_EXCLUDE.
PERFORM append_alv_exclude_functions TABLES gt_exclude
USING:
cl_gui_alv_grid=>mc_fc_loc_insert_row,
cl_gui_alv_grid=>mc_fc_loc_delete_row,
cl_gui_alv_grid=>mc_fc_loc_append_row,
cl_gui_alv_grid=>mc_fc_loc_copy_row,
cl_gui_alv_grid=>mc_fc_loc_cut.
ENDFORM.
FORM append_alv_exclude_functions TABLES pt_exclude TYPE ui_functions
USING p_exclude TYPE ui_func.
APPEND p_exclude TO pt_exclude.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form SET_HANDLER
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM set_handler.
CREATE OBJECT event_handler.
SET HANDLER event_handler->handle_toolbar FOR gs_alv.
SET HANDLER event_handler->handle_user_command FOR gs_alv.
* HOTSPOT
SET HANDLER event_handler->handle_hotspot_click FOR gs_alv.
SET HANDLER event_handler->handle_double_click FOR gs_alv.
SET HANDLER event_handler->handle_data_changed FOR gs_alv.
* DATA CHANGED 事件触发时点
CALL METHOD gs_alv->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter "回车触发
EXCEPTIONS
error = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
FORM fm_handle_toolbar USING p_object TYPE REF TO cl_alv_event_toolbar_set.
"向MT_TOOLBAR 中增加行,增加按钮
DATA ls_button TYPE stb_button.
CLEAR : ls_button .
ls_button-butn_type = '3'. "分割线
APPEND ls_button TO p_object->mt_toolbar.
CLEAR : ls_button .
ls_button-function = 'CALLSF'.
ls_button-text = '调用SF'.
ls_button-icon = icon_failure.
APPEND ls_button TO p_object->mt_toolbar.
CLEAR : ls_button .
ls_button-function = 'EDIT'.
ls_button-text = '修改选中行'.
ls_button-icon = icon_toggle_display_change.
APPEND ls_button TO p_object->mt_toolbar.
CLEAR : ls_button .
ls_button-function = 'DOWNLOAD'.
ls_button-text = '下载表单'.
ls_button-icon = icon_layout_control.
APPEND ls_button TO p_object->mt_toolbar.
ENDFORM.
FORM fm_user_command USING p_ucomm TYPE sy-ucomm.
CASE p_ucomm.
WHEN 'CALLSF'.
MESSAGE s000(eu) WITH '点击了调用SF的按钮' .
WHEN 'EDIT'.
PERFORM change_edit_mode.
WHEN 'DOWNLOAD'.
PERFORM download_file.
ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form HOTSPOT_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_ROW_ID text
* -->P_E_COLUMN_ID text
*----------------------------------------------------------------------*
FORM hotspot_click USING p_row_id TYPE lvc_s_row
p_column_id TYPE lvc_s_col.
* DATA : lv_value(50).
*
* CALL METHOD gs_alv->get_current_cell
* IMPORTING
* e_value = lv_value.
*
* CASE p_column_id-fieldname.
* WHEN 'SEX'.
* SET PARAMETER ID 'MAT' FIELD lv_value.
* CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN.
* ENDCASE.
IF p_column_id-fieldname = 'ZCODE'.
READ TABLE gt_student INTO gs_student INDEX p_row_id-index.
MESSAGE s000(eu) WITH '单击了第' p_row_id-index '行,学号字段的值为' gs_student-zcode.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CHANGE_EDIT_MODE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM change_edit_mode .
DATA lv_lines TYPE i.
DATA ls_modify TYPE lvc_s_styl.
* 获取选中的行
CALL METHOD gs_alv->get_selected_rows
IMPORTING
et_index_rows = gt_rows
* et_row_no =
.
DESCRIBE TABLE gt_rows LINES lv_lines.
* CHECK LV_LINES = 1.
IF lv_lines <> 1.
MESSAGE s000(eu) WITH '只可选择单行进行可编辑操作!' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
* 2.修改当前行的可修改状态
READ TABLE gt_rows INTO gs_rows INDEX 1."读取选中行的序号
CHECK sy-subrc = 0.
READ TABLE gt_student INTO gs_student INDEX gs_rows-index.
IF sy-subrc = 0.
* 查看表中是否已经存在针对WEIGH字段的可编辑状态
READ TABLE gs_student-field_modify INTO ls_modify WITH KEY fieldname = 'WEIGH'.
IF sy-subrc = 0. "当前已经存在设定的状态-当前是不可修改的状态
DELETE gs_student-field_modify INDEX sy-tabix."把不可修改的状态去掉
ELSE."当前是可修改的状态
"不用做操作
ENDIF.
MODIFY gt_student FROM gs_student INDEX gs_rows-index.
ENDIF.
* 3.刷新界面
PERFORM refresh_alv.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DOWNLOAD_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM download_file .
DATA lv_filename TYPE string.
*1.获取文件名
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = '学生信息表'
* DEF_PATH = ' '
mask = ',EXCEL.xls,*.xls,'
mode = 'S'
title = '整表单保存'
IMPORTING
filename = lv_filename
* RC =
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
IF sy-subrc <> 0.
EXIT.
* Implement suitable error handling here
ENDIF.
*2.表单下载
CHECK lv_filename IS NOT INITIAL."检查文件名称
*表单抬头
IF gt_fieldname IS INITIAL.
gt_fieldname-fieldname = '集团'.
APPEND gt_fieldname.
gt_fieldname-fieldname = '学号'.
APPEND gt_fieldname.
gt_fieldname-fieldname = '姓名'.
APPEND gt_fieldname.
gt_fieldname-fieldname = '性别'.
APPEND gt_fieldname.
gt_fieldname-fieldname = '学校'.
APPEND gt_fieldname.
gt_fieldname-fieldname = '体重'.
APPEND gt_fieldname.
gt_fieldname-fieldname = '单位'.
APPEND gt_fieldname.
ENDIF.
*2.1下载内表的转换
REFRESH gt_download.
LOOP AT gt_student INTO gs_student.
CLEAR gs_download.
MOVE-CORRESPONDING gs_student TO gs_download.
APPEND gs_download TO gt_download.
ENDLOOP.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
* BIN_FILESIZE =
filename = lv_filename
* FILETYPE = 'ASC'
* APPEND = ' '
write_field_separator = 'X'
* HEADER = '00'
* TRUNC_TRAILING_BLANKS = ' '
* WRITE_LF = 'X'
* COL_SELECT = ' '
* COL_SELECT_MASK = ' '
* DAT_MODE = ' '
* CONFIRM_OVERWRITE = ' '
* NO_AUTH_CHECK = ' '
* CODEPAGE = ' '
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* WRITE_BOM = ' '
* TRUNC_TRAILING_BLANKS_EOL = 'X'
* WK1_N_FORMAT = ' '
* WK1_N_SIZE = ' '
* WK1_T_FORMAT = ' '
* WK1_T_SIZE = ' '
* WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE
* SHOW_TRANSFER_STATUS = ABAP_TRUE
* VIRUS_SCAN_PROFILE = '/SCET/GUI_DOWNLOAD'
* IMPORTING
* FILELENGTH =
TABLES
data_tab = gt_download "GT_STUDENT
fieldnames = gt_fieldname[]
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FM_DOUBLE_CLICK
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_E_ROW text
* -->P_E_COLUMN text
*----------------------------------------------------------------------*
FORM fm_double_click USING p_e_row TYPE lvc_s_row
p_e_column TYPE lvc_s_col.
DATA lv_value TYPE c LENGTH 20.
DATA ls_col TYPE lvc_s_col.
CALL METHOD gs_alv->get_current_cell
IMPORTING
* e_row =
e_value = lv_value
* e_col =
* es_row_id =
es_col_id = ls_col
* es_row_no =
.
* 点击了xxx字段,值为XXX
MESSAGE s000(eu) WITH '单击了' ls_col-fieldname '字段,值为' lv_value.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FM_DATA_CHANGED
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fm_data_changed USING PT_CELL TYPE LVC_T_MODI .
DATA LS_CELL TYPE LVC_S_MODI.
LOOP AT PT_CELL INTO LS_CELL.
* 1.读取修改的行
READ TABLE GT_STUDENT INTO GS_STUDENT INDEX LS_CELL-ROW_ID.
IF SY-SUBRC = 0.
* 2.根据字段改对应的值
CASE LS_CELL-FIELDNAME.
WHEN 'SEX'.
GS_STUDENT-SEX = LS_CELL-VALUE.
WHEN 'WEIGH'.
GS_STUDENT-WEIGH = LS_CELL-VALUE.
ENDCASE.
MODIFY GT_STUDENT FROM GS_STUDENT INDEX LS_CELL-ROW_ID.
ENDIF.
ENDLOOP.
ENDFORM.
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
MODULE INIT_ALV.
*
PROCESS AFTER INPUT.
MODULE EXIT AT EXIT-COMMAND.
MODULE USER_COMMAND_0100.