我们需要在ALV中进行操作,如常规的增删改查,这时候就需要在OOALV中去实现:
代码语言:javascript复制*&**********************************************************************
*& 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.