INCLUDE 程序名_top.
**
选择屏幕
**
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETERS : p_vkorg TYPE mvke-vkorg DEFAULT ‘1240’ OBLIGATORY. “销售组织
SELECT-OPTIONS: s_matnr FOR mvke-matnr. “销售订单首个日期
SELECTION-SCREEN END OF BLOCK blk1.
———————————————————————————————————
* INCLUDE FILES FOR PROCESSING 定义引用其他程序
———————————————————————————————————
INCLUDE 程序名_class.
&——————————————————————————————————-
*& initialialization
&——————————————————————————————————-
INITIALIZATION.
(初始化)
&——————————————————————————————————-
*& at selection screen
&——————————————————————————————————-
AT SELECTION-SCREEN.
(权限检查)
———————————————————————————————————
* at selection-screen output 当执行时,在操作输出前所处理的事件
* 例如,在这 些事件中, 可以申请对 选择屏幕上 的字段作出 修改
———————————————————————————————————
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_auart-low.
* PERFORM frm_selection_screen_f4.
———————————————————————————————————
* start-of-selection 当以上的事件处理完没有问题的时候,才执行此事件。
* 此事件处理的主要是对数据的获取与处理等
———————————————————————————————————
START-OF-SELECTION.
PERFORM frmcheck**.(屏幕控制,导入检查)
CALL SCREEN 100.
———————————————————————————————————
* end-of-selection 当执行完对数据处理的事件后,将对数据进行输出显示。
———————————————————————————————————
END-OF-SELECTION.
——————————————————————————————————
CALL SCREEN 100.
PROCESS BEFORE OUTPUT. MODULE status_0100. MODULE 100_alv_display.
PROCESS AFTER INPUT. MODULE user_command_0100.
——————————————————————————————————
PERFORM frm100_alv_display. “显示 ALV_
DATA: lrevent_handler TYPE REF TO alv_event, ls_stable TYPE lvc_s_stbl.
ALV容器为空则创建,不为空则刷新 IF g_dock_container IS INITIAL.
创建 容器 CREATE OBJECT g_dock_container
EXPORTING repid = sy-repid
dynnr = ‘100’ “alv所在屏幕 side = cl_gui_docking_container=>dock_at_top
ratio = 95 “占屏幕的比例
extension = 260
caption = ‘’ “标题 lifetime = cntl_lifetime_dynpro “容器实例生命周期 EXCEPTIONS cntl_error = 1 cntl_system_error = 2 create_error = 3 lifetime_error = 4 lifetime_dynpro_dynpro_link = 5 OTHERS = 6. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
创建容器实例 CREATE OBJECT g_grid
EXPORTING i_parent = g_dock_container
EXCEPTIONS error_cntl_create = 1 error_cntl_init = 2 error_cntl_link = 3 error_dp_create = 4 OTHERS = 5. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.
“oo alv 控制 wa_layout-zebra = ‘X’. “X:行项目带颜色标识 wa_layout-no_rowins = ‘X’. “X:不允许删除选定行,通过复制粘贴维护可编辑行限定在一定范围内 wa_layout-sel_mode = ‘A’. “A:显示alv的选择行按
walayout-cwidth_opt = ‘X’. “ALV 控制: 优化列宽度 walayout-stylefname = ‘CELLTAB’. “单元格编辑控制 wa_layout-ctab_fname = ‘CELLCOLORS’.“单元格颜色
删除系统标准工具条按钮,结合notoolbar使用 PERFORM frmalv_exclude.
设置输出显示字段 PERFORM frm_100_fieldcat.
设置下拉框 PERFORM frm_100_drilldown.
设置事件 CREATE OBJECT lr_event_handler.
SET HANDLER lrevent_handler->handle_hotspot_click FOR g_grid.”单击事件
_ SET HANDLER lrevent_handler->handle_double_click FOR g_grid. “双击事件
* SET HANDLER lr_event_handler->handle_user_command FOR g_grid. “按钮事件 SET HANDLER lrevent_handler->handle_data_changed FOR g_grid. “数据改动事件 SET HANDLER lr_event_handler->data_changed_finished FOR g_grid. “数据改动事件
* SET HANDLER lrevent_handler->handle_toolbar FOR g_grid. “工具条事件
CALL METHOD cl_gui_cfw=>flush. _"刷新_<br /> CALL METHOD g_grid->register_edit_event _"注册回车事件_ EXPORTING i_event_id = cl_gui_alv_grid=>mc_evt_enter.<br /> CALL METHOD g_grid->register_edit_event _"注册编辑事件_ EXPORTING i_event_id = cl_gui_alv_grid=>mc_evt_modified.<br /> CALL METHOD g_grid->set_drop_down_table _"调用alv类的下拉框方法_ EXPORTING it_drop_down = it_dropdown.<br /> wa_variant-report = sy-repid. wa_variant-handle = '100'. wa_variant-log_group = '100'.<br /> CALL METHOD g_grid->set_table_for_first_display<br /> EXPORTING i_buffer_active = 'X' is_variant = wa_variant<br /> i_save = 'A' i_default = 'X' is_layout = wa_layout<br /> it_toolbar_excluding = it_exclude<br /> CHANGING it_outtab = it_output<br /> it_fieldcatalog = it_fieldcat<br /> EXCEPTIONS invalid_parameter_combination = 1 program_error = 2 too_many_lines = 3 OTHERS = 4. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno<br /> WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF.<br /> ELSE. PERFORM frm_refresh_alv USING '100'. ENDIF.
——————————————————————————————————
DATA: lsexclude TYPE ui_func. REFRESH it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_detail. APPEND ls_exclude TO it_exclude. “详细信息
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy. APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut. APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste. APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row. APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row. APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo. APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_check. APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row. APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row. APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_mb_view. APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row. APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_info. APPEND ls_exclude TO it_exclude. “最终用户文档
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_graph. APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_refresh. APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_mb_variant. “选择布局 APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_mb_export. “导出 APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_sort_dsc. “降序 APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_sort_asc. “升序 APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_sum. “总计 APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_maximum. “最大值 APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_filter. “设置过滤器 APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_print. “打印 APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_fc_find. “查找 APPEND ls_exclude TO it_exclude.
CLEAR ls_exclude. ls_exclude = cl_gui_alv_grid=>mc_mb_sum. “汇总_ APPEND ls_exclude TO it_exclude.
“1 字段名称 “2 字段描述 “3 参考表 “4 宽度 “5 可编辑(X:可编辑,空值不可编辑) “6 图标输出(X:图标,空值不是) “7 单击响应(V:响应单击,空值不响应) “8 段隐藏前置零(X:隐藏,空值不隐藏) “9 是否有搜索帮助(X:有,空值没有)
macro_fill_fcat ‘SEL’ ‘选择’ ‘ ‘ 4 ‘X’ ‘’ ‘’ ‘’ ‘’.
DATA ls_stable TYPE lvc_s_stbl.
ls_stable-row = ‘X’. ls_stable-col = ‘X’. CASE p_mode. WHEN ‘100’. IF g_dock_container IS NOT INITIAL.
CALL METHOD g_grid->refresh_table_display
EXPORTING is_stable = ls_stable. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ENDIF.
WHEN ‘200’.
IF g_200_custom_container IS NOT INITIAL. CALL METHOD g_200_grid->refresh_table_display
EXPORTING is_stable = ls_stable. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ENDIF.
WHEN ‘300’.
IF g_300_custom_container IS NOT INITIAL. CALL METHOD g_300_grid->refresh_table_display
EXPORTING is_stable = ls_stable. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. ENDIF.
WHEN OTHERS.
ENDCASE.
CALL METHOD cl_gui_cfw=>flush.
程序TOP
**
TABLES 声明
**
TABLES: zzpst001.
**
类型池声明
**
TYPE-POOLS: slis.
**
类型定义
**_
**
全局变量声明
**
DATA: gdock_container TYPE REF TO cl_gui_docking_container, “ALV容器 g_grid TYPE REF TO cl_gui_alv_grid, “ALV容器的实例 wa_fieldcat TYPE lvc_s_fcat, it_fieldcat TYPE lvc_t_fcat, “ALV 控制: 字段目录 wa_layout TYPE lvc_s_layo, “ALV 控制: 布局结构 wa_variant TYPE disvariant, “格式 (外部使用) it_exclude TYPE ui_functions,“按钮筛选内表(可以筛掉不想要的功能按钮) ok_code_100 TYPE sy-ucomm,“屏幕100触发的功能代码 save_ok_100 TYPE sy-ucomm, it_dropdown_100 TYPE lvc_t_drop, “下拉框语句 wa_dropdown_100 TYPE lvc_s_drop.
&——————————————————————————————————-
& Define marco
&——————————————————————————————————-
DEFINE macro_fill_fcat.
定义如下几种常用参数的宏 clear wa_fieldcat. wa_fieldcat-fieldname = &1. “字段名称 wa_fieldcat-scrtext_s = &2. “字段描述 wa_fieldcat-scrtext_m = &2. wa_fieldcat-scrtext_l = &2. wa_fieldcat-ref_table = &3. “参考表 wa_fieldcat-outputlen = &4. “设置列的输出字符宽度 wa_fieldcat-edit = &5. “可编辑(X:可编辑,空值不可编辑) wa_fieldcat-icon = &6. “图标输出(X:图标,空值不是) wa_fieldcat-hotspot = &7. “单击响应(V:响应单击,空值不响应) wa_fieldcat-no_zero = &8. “为输出字段隐藏前置零(X:隐藏,空值不隐藏) wa_fieldcat-f4availabl = &9. “字段是否有搜索帮助(X:有,空值没有) wa_fieldcat-lowercase = ‘X’. “控制大小写
if wa_fieldcat-fieldname = ‘SEL’. wa_fieldcat-checkbox = ‘X’. wa_fieldcat-fix_column = ‘X’. endif.
if g_screen = ‘100’.
if wafieldcat-fieldname = ‘ZZXMDL’.
_ wafieldcat-drdn_hndl = ‘1’.
*
* endif.
*
* if wa_fieldcat-fieldname = ‘ZZXMZL’.
* wa_fieldcat-drdn_hndl = ‘2’.
*
* endif. append wa_fieldcat to it_fieldcat. elseif g_screen = ‘200’. append wa_fieldcat to it_200_fieldcat. elseif g_screen = ‘300’. if wa_fieldcat-fieldname = ‘ZZXMDL’. wa_fieldcat-drdn_hndl = ‘1’.
endif.
append wa_fieldcat to it_300_fieldcat. endif.
END-OF-DEFINITION.
