阅读背景:

SAP ABAP OOALV实现增删改查功能

来源:互联网 

我们需要在ALV中进行操作,如常规的增删改查,这时候就需要在OOALV中去实现:


*&********************************************************************** *& Report 程序名 ZSY_QM_061 *&********************************************************************** *& *& 作者: *& 完成日期: *** *& 描述: *&********************************************************************** *& 版本号 日期 作者 修改描述 *&********************************************************************** *& *&********************************************************************** REPORT zsy_qm_061. *&---------------------------------------------------------------------* *& define include *&---------------------------------------------------------------------* *INCLUDE zsy_qm_061_top. *INCLUDE zsy_qm_061_f01. TABLES:zsy_d_qm61_ppap. TYPE-POOLS:slis. DATA:BEGIN OF gt_item OCCURS 0, werks TYPE zsy_d_qm61_ppap-werks, "工厂 matnr TYPE zsy_d_qm61_ppap-matnr, "物料编号 maktx TYPE makt-maktx, "物料描述 lifnr TYPE zsy_d_qm61_ppap-lifnr, "供应商或债权人的帐号 name_org1 TYPE but000-name_org1, "供应商描述 zcjr TYPE zsy_d_qm61_ppap-zcjr, "创建人 zcjrq TYPE zsy_d_qm61_ppap-zcjrq, "创建日期 zxgr TYPE zsy_d_qm61_ppap-zxgr, "修改人 zxgrq TYPE zsy_d_qm61_ppap-zxgrq, "修改日期 zzt TYPE zsy_d_qm61_ppap-zzt, "状态 dd_handle TYPE char10, modify TYPE lvc_t_styl, newid TYPE i, del TYPE char1, update TYPE char1, add TYPE char1, END OF gt_item. DATA:gs_item LIKE LINE OF gt_item. DATA:gt_upd LIKE TABLE OF gt_item. DATA:gt_del LIKE TABLE OF gt_item. DATA:gs_del LIKE LINE OF gt_del. DATA: gv_newid TYPE i. DATA: ok_code LIKE sy-ucomm. DATA lt_drop_down TYPE lvc_t_drop. DATA ls_drop_down TYPE lvc_s_drop. DATA: gt_ddval TYPE lvc_t_drop, gw_ddval TYPE lvc_s_drop. DATA gs_stb TYPE lvc_s_stbl. DATA: wa_fieldcat TYPE lvc_s_fcat, "用于定义ALV列字段相关类型数据,结构 gs_layout TYPE lvc_s_layo, go_alv TYPE REF TO cl_gui_alv_grid, gt_fieldcat TYPE lvc_t_fcat, g_toolbar TYPE ui_functions, gs_con TYPE REF TO cl_gui_custom_container. DATA: gt_events TYPE slis_t_event, gw_events TYPE slis_alv_event. CONSTANTS c_status_form TYPE slis_formname VALUE 'PF_STATUS_SET'. "字符型,功能常量 CONSTANTS c_command_form TYPE slis_formname VALUE 'USER_COMMAND'. "字符型,功能常量 DATA: grid TYPE REF TO cl_gui_alv_grid. DATA: g_pos TYPE i."用于alv字段目录最后顺序 DATA g_edit TYPE char1. "编辑状态flag. gs_stb-row = 'X'." 基于行的稳定刷新 gs_stb-col = 'X'." 基于列稳定刷新 CLASS gcl_event_handler DEFINITION. PUBLIC SECTION. METHODS: handle_user_command FOR EVENT user_command OF cl_gui_alv_grid IMPORTING e_ucomm, * handle_data_changed FOR EVENT data_changed_finished OF cl_gui_alv_grid * IMPORTING * er_good_cells, handle_data_changed FOR EVENT data_changed OF cl_gui_alv_grid IMPORTING er_data_changed, handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid IMPORTING e_row_id e_column_id es_row_no. ENDCLASS. CLASS gcl_event_handler IMPLEMENTATION. METHOD handle_hotspot_click. * PERFORM frm_hotspot_click. ENDMETHOD. METHOD handle_user_command. CASE e_ucomm. WHEN 'EDIT'. PERFORM frm_edit. WHEN 'ADD'. PERFORM frm_add. WHEN 'DEL'. PERFORM frm_del. WHEN 'SAVE'. PERFORM frm_save. ENDCASE. ENDMETHOD. "handle_user_command METHOD handle_data_changed. PERFORM frm_data_changed USING er_data_changed->mt_mod_cells. * PERFORM frm_data_changed * USING * et_good_cells. ENDMETHOD. ENDCLASS. DATA: go_event_receiver TYPE REF TO gcl_event_handler. SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-s01. PARAMETERS: p_werks LIKE zsy_d_qm61_ppap-werks OBLIGATORY. "工厂 SELECT-OPTIONS: s_matnr FOR zsy_d_qm61_ppap-matnr, "物料 s_lifnr FOR zsy_d_qm61_ppap-lifnr, "供应商 s_zzt FOR zsy_d_qm61_ppap-zzt. "状态 SELECTION-SCREEN END OF BLOCK b1. *----------------------------------------------------------------------* * INITIALIZATION *----------------------------------------------------------------------* INITIALIZATION. PERFORM frm_check_auth. "权限检查 *----------------------------------------------------------------------* * AT SELECTION-SCREEN *----------------------------------------------------------------------* AT SELECTION-SCREEN. *----------------------------------------------------------------------* * AT SELECTION-SCREEN OUTPUT *----------------------------------------------------------------------* AT SELECTION-SCREEN OUTPUT. *----------------------------------------------------------------------* * AT SELECTION-SCREEN ON VALUE-REQUEST *----------------------------------------------------------------------* *AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_xxxx. *&---------------------------------------------------------------------* * START-OF-SELECTION *&---------------------------------------------------------------------* START-OF-SELECTION. "获取数据 PERFORM frm_get_data. * PERFORM frm_prc_data. * ALV 设定 PERFORM f_fieldcat_build. "第二步设置字段目录,即报表表头的显示部分 PERFORM frm_sub_get_down. PERFORM create_alv. PERFORM frm_ooalv_dis. CALL SCREEN 0100. *&---------------------------------------------------------------------* * END-OF-SELECTION *&---------------------------------------------------------------------* END-OF-SELECTION. * PERFORM frm_display. *&---------------------------------------------------------------------* *& Form frm_get_data *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_get_data . SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_item FROM zsy_d_qm61_ppap WHERE werks = p_werks AND matnr IN s_matnr AND lifnr IN s_lifnr AND zzt IN s_zzt. LOOP AT gt_item ASSIGNING FIELD-SYMBOL(<fs_item>). SELECT SINGLE maktx INTO <fs_item>-maktx FROM makt WHERE spras = '1' AND matnr = <fs_item>-matnr. "物料描述 SELECT SINGLE name_org1 INTO <fs_item>-name_org1 FROM but000 WHERE partner = <fs_item>-lifnr. "供应商描述 ENDLOOP. gt_upd[] = gt_item[]. ENDFORM. *&---------------------------------------------------------------------* *& Form frm_data_changed *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> ER_DATA_CHANGED_>MT_MOD_CELLS *&---------------------------------------------------------------------* FORM frm_data_changed USING pt_mod_cells TYPE lvc_t_modi. ENDFORM. *&---------------------------------------------------------------------* *& Form frm_edit *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_edit . "修改 IF g_edit = 'X'. REFRESH gt_fieldcat. PERFORM f_input_fieldcat USING: *----该处存放ALV需要展示的字段 STR-------- 'WERKS' '工厂' '' '' '' '', 'MATNR' '物料编码' '' '' '' '', 'MAKTX' '物料描述' '' '' '' '', 'LIFNR' '供应商编码' '' '' '' '', 'NAME_ORG1' '供应商描述' '' '' '' '', 'ZCJR' '创建人' '' '' '' '', 'ZCJRQ' '创建日期' '' '' '' '', 'ZXGR' '修改人' '' '' '' '', 'ZXGRQ' '修改日期' '' '' '' '', 'ZXGR' '修改人' '' '' '' '', 'ZZT' '状态' '' '' '' ''. CALL METHOD go_alv->set_frontend_fieldcatalog EXPORTING it_fieldcatalog = gt_fieldcat. CALL METHOD go_alv->refresh_table_display. g_edit = ''. ELSE. REFRESH gt_fieldcat. PERFORM f_input_fieldcat USING: *----该处存放ALV需要展示的字段 STR-------- 'WERKS' '工厂' '' '' 'ZSY_D_QM61_PPAP' 'WERKS', 'MATNR' '物料编码' '' '' 'ZSY_D_QM61_PPAP' 'MATNR', 'MAKTX' '物料描述' '' '' 'MAKT' 'MAKTX', 'LIFNR' '供应商编码' '' '' 'ZSY_D_QM61_PPAP' 'LIFNR', 'NAME_ORG1' '供应商描述' '' '' 'BUT000' 'NAME_ORG1', 'ZCJR' '创建人' '' '' 'ZSY_D_QM61_PPAP' 'ZCJR', 'ZCJRQ' '创建日期' '' '' 'ZSY_D_QM61_PPAP' 'ZCJRQ', 'ZXGR' '修改人' '' '' 'ZSY_D_QM61_PPAP' 'ZXGR', 'ZXGRQ' '修改日期' '' '' 'ZSY_D_QM61_PPAP' 'ZXGRQ', 'ZZT' '状态' 'X' '' 'ZSY_D_QM61_PPAP' 'ZZT'. CALL METHOD go_alv->set_frontend_fieldcatalog EXPORTING it_fieldcatalog = gt_fieldcat. CALL METHOD go_alv->refresh_table_display. g_edit = 'X'. ENDIF. CALL METHOD go_alv->refresh_table_display EXPORTING is_stable = gs_stb. ENDFORM. *&---------------------------------------------------------------------* *& Form frm_add *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_add . "新增 CLEAR gs_item. gv_newid = gv_newid + 1. gs_item-newid = gv_newid. gs_item-zcjr = sy-uname. gs_item-zcjrq = sy-datum. gs_item-werks = p_werks. gs_item-add = 'X'. APPEND gs_item TO gt_item. REFRESH gt_fieldcat. PERFORM f_input_fieldcat USING: *----该处存放ALV需要展示的字段 STR-------- 'WERKS' '工厂' '' '' 'ZSY_D_QM61_PPAP' 'WERKS', 'MATNR' '物料编码' 'X' '' 'ZSY_D_QM61_PPAP' 'MATNR', 'MAKTX' '物料描述' '' '' 'MAKT' 'MAKTX', 'LIFNR' '供应商编码' 'X' '' 'ZSY_D_QM61_PPAP' 'LIFNR', 'NAME_ORG1' '供应商描述' '' '' 'BUT000' 'NAME_ORG1', 'ZCJR' '创建人' '' '' 'ZSY_D_QM61_PPAP' 'ZCJR', 'ZCJRQ' '创建日期' '' '' 'ZSY_D_QM61_PPAP' 'ZCJRQ', 'ZXGR' '修改人' '' '' 'ZSY_D_QM61_PPAP' 'ZXGR', 'ZXGRQ' '修改日期' '' '' 'ZSY_D_QM61_PPAP' 'ZXGRQ', 'ZZT' '状态' 'X' '' 'ZSY_D_QM61_PPAP' 'ZZT'. CALL METHOD go_alv->set_frontend_fieldcatalog EXPORTING it_fieldcatalog = gt_fieldcat. CALL METHOD go_alv->refresh_table_display EXPORTING is_stable = gs_stb. ENDFORM. *&---------------------------------------------------------------------* *& Form frm_del *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_del . "删除 DATA lt_select TYPE lvc_t_row. * DATA ls_del LIKE LINE OF gt_del. CALL METHOD go_alv->get_selected_rows IMPORTING et_index_rows = lt_select. LOOP AT lt_select INTO DATA(ls_select). READ TABLE gt_item INTO gs_item INDEX ls_select-index. IF sy-subrc = 0. MOVE-CORRESPONDING gs_item TO gs_del. gs_del-del = 'X'. APPEND gs_del TO gt_del. CLEAR gs_del. ENDIF. DELETE gt_item INDEX ls_select-index. ENDLOOP. CALL METHOD go_alv->refresh_table_display EXPORTING is_stable = gs_stb. ENDFORM. *&---------------------------------------------------------------------* *& Form frm_save *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_save . DATA:lt_add LIKE TABLE OF zsy_d_qm61_ppap, ls_add LIKE LINE OF lt_add. DATA:lt_update LIKE TABLE OF zsy_d_qm61_ppap, ls_update LIKE LINE OF lt_update. DATA:lt_delete LIKE TABLE OF zsy_d_qm61_ppap, ls_delete LIKE LINE OF lt_delete. DATA ls_stb TYPE lvc_s_stbl. CALL METHOD go_alv->if_cached_prop~set_prop EXPORTING propname = 'GridModified' propvalue = '1' EXCEPTIONS prop_not_found = 1 invalid_name = 2 error_set_property = 3 OTHERS = 4. IF sy-subrc <> 0. * Implement suitable error handling here ENDIF. CALL METHOD go_alv->check_changed_data * IMPORTING * E_VALID = * CHANGING * C_REFRESH = 'X' . "新增 修改 SORT gt_upd BY werks matnr lifnr. LOOP AT gt_item ASSIGNING FIELD-SYMBOL(<fs_item>). IF <fs_item>-add IS INITIAL. "修改操作 READ TABLE gt_upd INTO DATA(gs_upd) WITH KEY werks = <fs_item>-werks matnr = <fs_item>-matnr lifnr = <fs_item>-lifnr BINARY SEARCH. IF sy-subrc = 0 AND gs_upd-zzt <> <fs_item>-zzt. <fs_item>-zxgr = sy-uname. <fs_item>-zxgrq = sy-datum. ENDIF. ENDIF. SELECT SINGLE maktx INTO <fs_item>-maktx FROM makt WHERE spras = '1' AND matnr = <fs_item>-matnr. "物料描述 SELECT SINGLE name_org1 INTO <fs_item>-name_org1 FROM but000 WHERE partner = <fs_item>-lifnr. "供应商描述 MOVE-CORRESPONDING <fs_item> TO ls_add. APPEND ls_add TO lt_add. CLEAR ls_add. ENDLOOP. "删除 LOOP AT gt_del INTO gs_del. IF gs_del-del IS NOT INITIAL. MOVE-CORRESPONDING gs_del TO ls_delete. APPEND ls_delete TO lt_delete. ENDIF. CLEAR:ls_delete,gs_del. ENDLOOP. IF lt_add[] IS NOT INITIAL. MODIFY zsy_d_qm61_ppap FROM TABLE lt_add. "新增,更改 ENDIF. IF lt_delete[] IS NOT INITIAL. DELETE zsy_d_qm61_ppap FROM TABLE lt_delete. "删除 ENDIF. * IF lt_update[] IS NOT INITIAL. * MODIFY zsy_d_qm61_ppap FROM TABLE lt_update. "更改 * ENDIF. COMMIT WORK AND WAIT. IF sy-subrc = 0. MESSAGE '数据已保存' TYPE 'S'. ELSE. MESSAGE '数据未保存' TYPE 'E'. ENDIF. CALL METHOD go_alv->refresh_table_display EXPORTING is_stable = gs_stb. ENDFORM. *&---------------------------------------------------------------------* *& Form frm_check_auth *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_check_auth . AUTHORITY-CHECK OBJECT 'ZQM06_WERK' ID 'WERKS' FIELD p_werks. IF sy-subrc <> 0. MESSAGE e036(zsy_qm_dev) WITH p_werks. ENDIF. ENDFORM. *&---------------------------------------------------------------------* *& Form f_fieldcat_build *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM f_fieldcat_build . **- ALV格式设定 gs_layout-zebra = 'X'. "设置Grid的行颜色变换显示 * gs_layout-cwidth_opt = 'X'. "设置Grid的字段列宽度自动适应 * gs_layout-edit = ''. * gs_layout-stylefname = 'ALV_CELLTAB'. * gs_layout-ctab_fname = 'CELLCOLOR'. gs_layout-stylefname = 'MODIFY'. * 主要的字段目录参数。 CLEAR g_pos. PERFORM f_input_fieldcat USING: *----该处存放ALV需要展示的字段 STR-------- 'WERKS' '工厂' 'X' '' 'ZSY_D_QM61_PPAP' 'WERKS', 'MATNR' '物料编码' 'X' '' 'ZSY_D_QM61_PPAP' 'MATNR', 'MAKTX' '物料描述' 'X' '' 'MAKT' 'MAKTX', 'LIFNR' '供应商编码' 'X' '' 'ZSY_D_QM61_PPAP' 'LIFNR', 'NAME_ORG1' '供应商描述' 'X' '' 'BUT000' 'NAME_ORG1', 'ZCJR' '创建人' 'X' '' 'ZSY_D_QM61_PPAP' 'ZCJR', 'ZCJRQ' '创建日期' 'X' '' 'ZSY_D_QM61_PPAP' 'ZCJRQ', 'ZXGR' '修改人' 'X' '' 'ZSY_D_QM61_PPAP' 'ZXGR', 'ZXGRQ' '修改日期' 'X' '' 'ZSY_D_QM61_PPAP' 'ZXGRQ', 'ZZT' '状态' 'X' '' 'ZSY_D_QM61_PPAP' 'ZZT'. *----该处存放ALV需要展示的字段 END-------- g_edit = 'X'. ENDFORM. *&---------------------------------------------------------------------* *& Form f_input_fieldcat *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> P_ *& --> P_ *& --> P_ *& --> P_ *& --> P_ *& --> P_ *&---------------------------------------------------------------------* FORM f_input_fieldcat USING VALUE(p_field) VALUE(p_name) VALUE(p_edit) VALUE(p_drdn) VALUE(p_table) VALUE(p_ref). * 共通字段,用USING子程序传输 g_pos = g_pos + 1. wa_fieldcat-col_pos = g_pos. "输出列位置 wa_fieldcat-fieldname = p_field. "字段名称,必须大写 wa_fieldcat-coltext = p_name. "字段标题 wa_fieldcat-edit = p_edit . "设置单元格可编辑 wa_fieldcat-drdn_field = p_drdn. wa_fieldcat-outputlen = '10'. wa_fieldcat-ref_table = p_table. wa_fieldcat-ref_field = p_ref. * IF wa_fieldcat-fieldname = 'ZDYMB'. * wa_fieldcat-outputlen = '20'. * ENDIF. APPEND wa_fieldcat TO gt_fieldcat. CLEAR wa_fieldcat. ENDFORM. "F_INPUT_FIELDCAT *&---------------------------------------------------------------------* *& Form frm_sub_get_down *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_sub_get_down . DATA: l_spras TYPE lvc_s_drop-value, l_count TYPE i. DATA ls_modify TYPE lvc_s_styl. LOOP AT gt_item ASSIGNING FIELD-SYMBOL(<fs_item>). l_count += 1. <fs_item>-dd_handle = l_count. * ls_modify-fieldname = 'WERKS'. * ls_modify-style = cl_gui_alv_grid=>mc_style_disabled. * APPEND ls_modify TO <fs_item>-modify. <fs_item>-modify = VALUE #( style = cl_gui_alv_grid=>mc_style_disabled ( fieldname = 'WERKS') ( fieldname = 'MATNR') ( fieldname = 'MAKTX') ( fieldname = 'LIFNR') ( fieldname = 'NAME_ORG1') ( fieldname = 'ZCJR') ( fieldname = 'ZCJRQ') ( fieldname = 'ZXGR') ( fieldname = 'ZXGRQ') ). ENDLOOP. PERFORM frm_toolbar. ENDFORM. *&---------------------------------------------------------------------* *& Form frm_toolbar *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_toolbar . REFRESH g_toolbar. PERFORM append_alv_exclude_functions TABLES g_toolbar USING: cl_gui_alv_grid=>mc_fc_reprep , cl_gui_alv_grid=>mc_fc_check , cl_gui_alv_grid=>mc_mb_export , cl_gui_alv_grid=>mc_fc_detail , cl_gui_alv_grid=>mc_fc_refresh , cl_gui_alv_grid=>mc_fc_graph , cl_gui_alv_grid=>mc_fc_loc_undo , cl_gui_alv_grid=>mc_fc_loc_delete_row , cl_gui_alv_grid=>mc_fc_loc_insert_row , cl_gui_alv_grid=>mc_fc_loc_copy_row , cl_gui_alv_grid=>mc_fc_loc_cut , cl_gui_alv_grid=>mc_fc_loc_append_row , cl_gui_alv_grid=>mc_fc_loc_paste_new_row , cl_gui_alv_grid=>mc_fc_info , cl_gui_alv_grid=>mc_fc_loc_copy , cl_gui_alv_grid=>mc_fc_loc_paste , cl_gui_alv_grid=>mc_fc_print , cl_gui_alv_grid=>mc_mb_sum , cl_gui_alv_grid=>mc_mb_view , cl_gui_alv_grid=>mc_fc_current_variant , cl_gui_alv_grid=>mc_fc_save_variant , cl_gui_alv_grid=>mc_fc_load_variant , cl_gui_alv_grid=>mc_fc_maintain_variant , cl_gui_alv_grid=>mc_fc_deselect_all , cl_gui_alv_grid=>mc_fc_select_all . ENDFORM. *&---------------------------------------------------------------------* *& Form append_alv_exclude_functions *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> G_TOOLBAR *& --> CL_GUI_ALV_GRID=>MC_FC_REPREP *&---------------------------------------------------------------------* FORM append_alv_exclude_functions TABLES pt_exclude TYPE ui_functions USING p_value TYPE ui_func. APPEND p_value TO pt_exclude. ENDFORM. " APPEND_ALV_EXCLUDE_FUNCTIONS *&---------------------------------------------------------------------* *& Form create_alv *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM create_alv . CREATE OBJECT gs_con EXPORTING container_name = 'GC_CON'. CREATE OBJECT go_alv EXPORTING i_parent = gs_con. ENDFORM. *&---------------------------------------------------------------------* *& Form frm_ooalv_dis *&---------------------------------------------------------------------* *& text *&---------------------------------------------------------------------* *& --> p1 text *& <-- p2 text *&---------------------------------------------------------------------* FORM frm_ooalv_dis . DATA selfield TYPE slis_selfield. CALL METHOD go_alv->register_edit_event EXPORTING i_event_id = cl_gui_alv_grid=>mc_evt_modified. * i_event_id = cl_gui_alv_grid=>mc_evt_enter. * EXCEPTIONS * error = 1 * others = 2 . IF go_event_receiver IS INITIAL. CREATE OBJECT go_event_receiver. SET HANDLER go_event_receiver->handle_user_command FOR go_alv. SET HANDLER go_event_receiver->handle_data_changed FOR go_alv. ENDIF. CALL METHOD go_alv->set_drop_down_table EXPORTING it_drop_down = gt_ddval. SORT gt_item BY werks matnr lifnr. CALL METHOD go_alv->set_table_for_first_display EXPORTING it_toolbar_excluding = g_toolbar is_layout = gs_layout CHANGING it_outtab = gt_item[] 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. *&---------------------------------------------------------------------* *& Module STATUS_0100 OUTPUT *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* MODULE status_0100 OUTPUT. SET PF-STATUS 'S001'. * SET TITLEBAR 'xxx'. ENDMODULE. MODULE user_command_0100 INPUT. CASE ok_code. WHEN 'BACK' OR 'CANCEL'. * CLEAR: gt_item. LEAVE TO SCREEN 0. WHEN 'EDIT'. PERFORM frm_edit. WHEN 'ADD'. PERFORM frm_add. WHEN 'DEL'. PERFORM frm_del. WHEN 'EXIT'. LEAVE PROGRAM. WHEN 'SAVE'. PERFORM frm_save. ENDCASE. ENDMODULE. *&*******



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: